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:
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.