Ejercicio SQL

Iniciado por Baal_30, 7 Diciembre 2014, 21:17 PM

0 Miembros y 1 Visitante están viendo este tema.

Baal_30

Muy buenas, acabo de hacer un ejercicio de SQL y me gustaría saber si está todo correcto o he cometido algún fallo, ya que soy principiante en SQL. Para ser más exactos, se supone que el ejercicio es para MySQL.

El enunciado es el siguiente : Cread un script SQL para la siguiente definición de base de datos:

BASE DE DATOS: RESERVAS

TABLA

USUARIO: codigo, nombre, apellidos, teléfono, mail, activo
   
CP: codigo (automático)

CAlt: mail

VNN: teléfono
   
* El campo activo será booleano, indicando si el usuario está de alta o de baja



TABLA RESTAURANTE: codigo, nombre, dirección, teléfono, web, coordenadas
      
El código será una cadena de texto de 10 caracteres,
por ejemplo: BARVLC0001, CAFEMDR500, ...
         
CP: codigo

         

TABLA RESERVAS_RESTAURANTE: restaurante, usuario, fecha_hora, comentarios, estado
         
CP: restaurante, usuario, fecha_hora
         
CAj: restaurante --> Restaurante(codigo)
         
CAj: usuario --> Usuario(codigo)
   
      
         
* Los posibles estados de la reserva será: RESERVADO, CANCELADO, VISITADO, NO VISITADO,
por defecto
el valor será RESERVADO.
(http://otroblogmas.com/diferencias-entre-enum-y-set-en-mysql/)
         
         
* Al eliminar un usuario, se eliminarán todas las reservas del mismo         
         
* No se podrá eliminar un restaurante mientras existan reservas activas
         
* Al actualizar un restaurante, se actualizarán las reservas.



Y como yo lo he resuelto:

Código (sql) [Seleccionar]
CREATE DATABASE IF NOT EXISTS reservastabla COLLATE utf8_bin;

USE reservastabla;

CREATE TABLE usuario(
codigo INT PRIMARY KEY,
nombre VARCHAR(20),
apellidos VARCHAR(40),
telefono VARCHAR(15) NOT NULL,
mail VARCHAR(30) UNIQUE,
activo BOOLEAN
);

CREATE TABLE restaurante(
codigo VARCHAR(10) PRIMARY KEY,
nombre VARCHAR(20),
direccion VARCHAR(40),
telefono VARCHAR(15),
web VARCHAR(30),
coordenadas VARCHAR(20)
);

CREATE reservas_restaurante(
restaurante VARCHAR(20),
usuario INT,
fecha_hora DATETIME,
comentarios VARCHAR(200),
estado ENUM('reservado', 'cancelado', 'visitado', 'no visitado') DEFAULT 'reservado',
primary key(restaurante, usuario, fecha_hora),
CONSTRAINT restaurante FOREING KEY (restaurante) REFERENCES restaurante(codigo),
ON DELETE RESTRICT,
ON UPDATE CASCADE,
CONSTRAINT usuario FOREING KEY (usuario) REFERENCES usuario(codigo),
ON DELETE CASCADE
);



Gracias de antemano y un saludo.
«La suerte es el cuidado de los detalles». -Winston Churchill