Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Baal_30 en 7 Diciembre 2014, 21:17 pm



Título: Ejercicio SQL
Publicado por: Baal_30 en 7 Diciembre 2014, 21:17 pm
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
  1. CREATE DATABASE IF NOT EXISTS reservastabla COLLATE utf8_bin;
  2.  
  3. USE reservastabla;
  4.  
  5. CREATE TABLE usuario(
  6. codigo INT PRIMARY KEY,
  7. nombre VARCHAR(20),
  8. apellidos VARCHAR(40),
  9. telefono VARCHAR(15) NOT NULL,
  10. mail VARCHAR(30) UNIQUE,
  11. activo BOOLEAN
  12. );
  13.  
  14. CREATE TABLE restaurante(
  15. codigo VARCHAR(10) PRIMARY KEY,
  16. nombre VARCHAR(20),
  17. direccion VARCHAR(40),
  18. telefono VARCHAR(15),
  19. web VARCHAR(30),
  20. coordenadas VARCHAR(20)
  21. );
  22.  
  23. CREATE reservas_restaurante(
  24. restaurante VARCHAR(20),
  25. usuario INT,
  26. fecha_hora DATETIME,
  27. comentarios VARCHAR(200),
  28. estado ENUM('reservado', 'cancelado', 'visitado', 'no visitado') DEFAULT 'reservado',
  29. PRIMARY KEY(restaurante, usuario, fecha_hora),
  30. CONSTRAINT restaurante FOREING KEY (restaurante) REFERENCES restaurante(codigo),
  31. ON DELETE RESTRICT,
  32. ON UPDATE CASCADE,
  33. CONSTRAINT usuario FOREING KEY (usuario) REFERENCES usuario(codigo),
  34. ON DELETE CASCADE
  35. );
  36.  


Gracias de antemano y un saludo.