Ver Mensaje Individual
  #6 (permalink)  
Antiguo 29/01/2013, 12:18
Avatar de abeltxu
abeltxu
 
Fecha de Ingreso: enero-2013
Ubicación: Segovia
Mensajes: 10
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: No consigo compilar esta base de datos

Código MySQL:
Ver original
  1. CREATE DATABASE IF NOT EXISTS hotel;
  2. GRANT ALL ON hotel.* TO 'root'@'localhost' IDENTIFIED BY '';
  3. USE hotel;
  4.  
  5. DROP TABLE IF EXISTS formadepago;
  6. DROP TABLE IF EXISTS factura;
  7. DROP TABLE IF EXISTS cliente;
  8. DROP TABLE IF EXISTS habitacion;
  9. DROP TABLE IF EXISTS empleado;
  10. DROP TABLE IF EXISTS proveedor;
  11. DROP TABLE IF EXISTS factura_proveedor;
  12. DROP TABLE IF EXISTS servicio;
  13. DROP TABLE IF EXISTS es_incluido;
  14.  
  15. CREATE TABLE formadepago (
  16. Id INT(10) NOT NULL,
  17. Interes FLOAT(3,2) UNIQUE,
  18.     CONSTRAINT PK_formadepago PRIMARY KEY (Id) ) ENGINE=INNODB;
  19.    
  20. CREATE TABLE cliente (
  21. DNI CHAR(9) NOT NULL,
  22. Nombre CHAR(50),
  23. Apellidos CHAR(50),
  24. Domicilio CHAR(50),
  25. Telefono INT(9),
  26. Anterioridad ENUM ('Si','No'),
  27.     CONSTRAINT PK_cliente PRIMARY KEY (DNI) ) ENGINE=INNODB;
  28.    
  29. CREATE TABLE precio (
  30. Tipo ENUM ('Individual','Doble') NOT NULL,
  31. CONSTRAINT PK_precio PRIMARY KEY (Tipo) ) ENGINE=INNODB;
  32.  
  33. CREATE TABLE habitacion (
  34. Numero INT(3) NOT NULL,
  35. Superficie INT(3),
  36. Bar ENUM ('Si','No'),
  37. Terraza ENUM ('Si','No'),
  38. Banio ENUM ('Si','No'),
  39. TV ENUM ('Si','No'),
  40. N_camas INT(1),
  41. Fecha_reserva DATE,
  42. /*Estancia*/
  43. Fecha_salida DATE,
  44. Estado ENUM ('Libre','Ocupada') NOT NULL,
  45. Tipo ENUM ('Individual','Doble') NOT NULL,
  46. DNI CHAR(9) NOT NULL,
  47.     CONSTRAINT FK_habitacion_precio FOREIGN KEY (Tipo) REFERENCES precio(Tipo),
  48.     CONSTRAINT FK_habitacion_cliente FOREIGN KEY (DNI) REFERENCES cliente(DNI),
  49.     CONSTRAINT PK_habitacion PRIMARY KEY (Numero) ) ENGINE=INNODB;
  50.  
  51. CREATE TABLE factura (
  52. Codigo_f INT(5) NOT NULL,
  53. Fecha_entrada DATE,
  54. Fecha_salida DATE,
  55. Importe_total FLOAT(6,2),
  56. Supletoria ENUM ('Si','No'),
  57. Id INT(10) NOT NULL,
  58. DNI CHAR(9) NOT NULL,
  59. Numero INT(3) NOT NULL,
  60.     CONSTRAINT PK_factura PRIMARY KEY (Codigo_f),
  61.     CONSTRAINT FK_factura_formadepago FOREIGN KEY (Id) REFERENCES formadepago(Id) ON DELETE CASCADE ON UPDATE CASCADE,
  62.     CONSTRAINT FK_factura_cliente FOREIGN KEY (DNI) REFERENCES cliente(DNI) ON DELETE CASCADE ON UPDATE CASCADE,
  63.         CONSTRAINT FK_factura_hab FOREIGN KEY (Numero) REFERENCES habitacion(Numero) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=INNODB;
  64.  
  65. CREATE TABLE proveedor (
  66. NIF CHAR(9) NOT NULL,
  67. Nombre_comercial CHAR(50) UNIQUE,
  68. Direccion CHAR(50),
  69. N_registro INT(3) NOT NULL,
  70. Codigo_fp INT(5) NOT NULL,
  71.     CONSTRAINT PK_proveedor PRIMARY KEY (N_registro),
  72.     CONSTRAINT FK_proveedor_empleado FOREIGN KEY (N_registro) REFERENCES empleado(N_registro),
  73.     CONSTRAINT FK_proveedor_factura_proveedor FOREIGN KEY (Codigo_fp) REFERENCES factura_proveedor(Codigo_fp) ) ENGINE=INNODB;
  74.  
  75. CREATE TABLE factura_proveedor (
  76. Codigo_fp INT(5) NOT NULL,
  77. Fecha DATE,
  78. Importe FLOAT(6,2),
  79. Encargado CHAR(50),
  80. NIF CHAR(9) NOT NULL,
  81.     CONSTRAINT PK_factura_proveedor PRIMARY KEY (Codigo_fp),
  82.     CONSTRAINT FK_factura_proveedor_proveedor FOREIGN KEY (NIF) REFERENCES proveedor(NIF) ) ENGINE=INNODB;
  83.  
  84. CREATE TABLE servicio (
  85. Codigo_s VARCHAR(9),
  86. Descripcion CHAR(50) UNIQUE,
  87. Fecha DATE,
  88. Coste FLOAT(5,2),
  89. N_registro INT(3) NOT NULL,
  90. CONSTRAINT PK_servicio PRIMARY KEY (Codigo_s),
  91. CONSTRAINT FK_servicio_empleado FOREIGN KEY (N_registro) REFERENCES empleado(N_registro) ) ENGINE=INNODB;
  92.  
  93. CREATE TABLE empleado (
  94. N_registro INT(3) NOT NULL,
  95. Nombre CHAR(50),
  96. Fecha_incorporacion DATE,
  97. Sueldo FLOAT (6,2)
  98. NIF CHAR(9) NOT NULL,
  99. Codigo_s INT(5) NOT NULL,  
  100.     CONSTRAINT PK_empleado PRIMARY KEY (N_registro),
  101.     CONSTRAINT FK_empleado_proveedor FOREIGN KEY (NIF) REFERENCES proveedor(NIF),
  102.     CONSTRAINT FK_empleado_servicio FOREIGN KEY (Codigo_s) REFERENCES servicio(Codigo_s) ) ENGINE=INNODB;
  103.    
  104. CREATE TABLE limpia (
  105. Fecha DATE,
  106. Numero INT(3) NOT NULL,
  107. N_registro INT(3) NOT NULL,
  108.     CONSTRAINT PK_limpia PRIMARY KEY (Fecha),
  109.     CONSTRAINT FK_limpia_habitacion FOREIGN KEY (Numero) REFERENCES habitacion(Numero),
  110.     CONSTRAINT FK_limpia_empleados FOREIGN KEY (N_registro) REFERENCES empleados(N_registro) ) ENGINE=INNODB;
  111.    
  112. CREATE TABLE usa_a (
  113. Fecha DATE NOT NULL,
  114. Codigo_s INT(5),
  115. Codigo_s_usado INT(5),
  116.     CONSTRAINT FK_usa_a_servicio FOREIGN KEY (Codigo_s) REFERENCES servicio(Codigo_s),
  117.     CONSTRAINT PK_usa_a PRIMARY KEY (Fecha) ) ENGINE=INNODB;
  118.    
  119. CREATE TABLE es_incluido (
  120. Codigo_f INT(5) NOT NULL,
  121. Codigo_s INT(5) NOT NULL,
  122. CONSTRAINT FK_es_incluido_factura FOREIGN KEY (Codigo_f) REFERENCES factura(Codigo_f),
  123. CONSTRAINT FK_es_incluido_servicio FOREIGN KEY (Codigo_s) REFERENCES servicio(Codigo_s) ) ENGINE=INNODB;

He corregido ya esos caracteres que me dijiste...
Pero tengo dudas...
-¿Donde pongo el NOT NULL?
-¿Para que sirve el "constraint"? ¿Es obligatorio ponerlo en las claves primarias y ajenas?
-¿Es necesario poner "ON DELETE CASCADE ON UPDATE CASCADE" en todos los FK?