0% encontró este documento útil (0 votos)
3 vistas6 páginas

A1 Ut3 GrupoA gtb-2024-2025

El documento detalla el diseño de una base de datos para el Restaurante Mouro, incluyendo la creación de tablas y sus relaciones en SQL. Se presentan instrucciones para crear tablas como EMPLEADOS, COCINEROS, CAMAREROS, entre otras, así como modificaciones posteriores como la adición de índices y restricciones. También se incluyen ejemplos de eliminación de tablas y la base de datos completa.

Cargado por

Yeragg11
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas6 páginas

A1 Ut3 GrupoA gtb-2024-2025

El documento detalla el diseño de una base de datos para el Restaurante Mouro, incluyendo la creación de tablas y sus relaciones en SQL. Se presentan instrucciones para crear tablas como EMPLEADOS, COCINEROS, CAMAREROS, entre otras, así como modificaciones posteriores como la adición de índices y restricciones. También se incluyen ejemplos de eliminación de tablas y la base de datos completa.

Cargado por

Yeragg11
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 6

GBD3 Diseño de base de datos – Yeray Gil García 1º ASIR SEMI A

EJERCICIO 1 - Partiendo del siguiente modelo relacional que corresponde al


Restaurante Mouro escribe las instrucciones en SQL necesarias para crear la
base de datos:

EMPLEADOS (DNI, Nombre, Apellidos, Dirección, Ciudad, Teléfono, CP, FechaAlta, Categoría,
Salario)
COCINEROS (DNI(fk), Puesto, Especialidad)
ADMINISTRACIÓN (DNI(fk), Cargo)
CAMAREROS (DNI(fk), Turno, años, DNI_encargado(fk))
COMEDORES (CodigoC, Nombre, Capacidad, Nmesas, Localización)
MESAS (CodigoM, CodigoC(fk), Nasientos, DNI_camarero(fk))
Hacen ((CodigoM, CodigoC)(fk), Nreserva, NasientosR)
RESERVAS (Nreserva, Fhreserva, Nombre, Fhreservada, Comida/Cena, Npersonas, Varios)
FACTURAS (NFactura, FechaF, (CodigoM, CodigoC)(fk))
Incluyen (NFactura(fk), CodigoPl(fk), Unidades)
PLATOS (CodigoPl, Nombre, Descripción, Tipo, Precio)
Contienen (CodigoPl(fk), CodigoPr(fk), Cantidad)
PRODUCTOS (CodigoPr, Descripción, Stock, UnidadBase, PrecioU, Categoría, CodigoPro(fk))
PROVEEDORES (CodigoPro, Dirección, CP, Teléfono, Fax, Contacto)

DROP DATABASE IF EXISTS Mouro;

CREATE DATABASE Mouro;

USE Mouro;

CREATE TABLE EMPLEADOS (


DNI VARCHAR(10) NOT NULL,
Nombre VARCHAR(25),
Apellidos VARCHAR(50),
Dirección VARCHAR(50),
Ciudad VARCHAR(50),
Teléfono VARCHAR(9),
CP VARCHAR(5),
FechaAlta DATE,
Categoría VARCHAR(20),
Salario DECIMAL(6,2),
PRIMARY KEY(DNI)
)ENGINE=InnoDB;
CREATE TABLE COCINEROS (
DNI VARCHAR(10) NOT NULL,
Puesto VARCHAR (20),
Especialidad VARCHAR(25),
PRIMARY KEY(DNI),
FOREIGN KEY fk_1 (DNI) REFERENCES EMPLEADOS(DNI) ON UPDATE CASCADE
)ENGINE=InnoDB;

CREATE TABLE ADMINISTRACIÓN (


DNI VARCHAR(10) NOT NULL,
Cargo VARCHAR (20),
PRIMARY KEY(DNI),
FOREIGN KEY fk_1 (DNI) REFERENCES EMPLEADOS(DNI) ON UPDATE CASCADE
)ENGINE=InnoDB;

CREATE TABLE CAMAREROS (


DNI VARCHAR(10) NOT NULL,
Turno VARCHAR(25),
Anyos INTEGER ,
DNI_encargado VARCHAR(10) NOT NULL,
PRIMARY KEY(DNI),
FOREIGN KEY fk_1 (DNI) REFERENCES EMPLEADOS(DNI) ON UPDATE CASCADE,
FOREIGN KEY fk_2 (DNI_Encargado) REFERENCES CAMAREROS(DNI) ON UPDATE CASCADE
)ENGINE=InnoDB;

CREATE TABLE COMEDORES (


CodigoC INTEGER NOT NULL AUTO_INCREMENT,
Nombre VARCHAR(25),
Capacidad INTEGER,
Nmesas INTEGER,
Localización VARCHAR(25),
PRIMARY KEY(CodigoC)
)ENGINE=InnoDB;

CREATE TABLE MESAS (


CodigoM INTEGER NOT NULL AUTO_INCREMENT,
CodigoC INTEGER NOT NULL ,
Nasientos INTEGER ,
DNI_camarero VARCHAR(10) NOT NULL,
PRIMARY KEY(CodigoM,CodigoC),
FOREIGN KEY fk_1 (DNI_camarero) REFERENCES CAMAREROS(DNI) ON UPDATE CASCADE
)ENGINE=InnoDB;
CREATE TABLE RESERVAS (
Nreserva INTEGER NOT NULL AUTO_INCREMENT,
Fhreserva DATETIME ,
Nombre VARCHAR (25),
Fhreservada DATETIME,
Comida_Cena ENUM('Comida','Cena') ,
Npersonas INTEGER ,
Varios VARCHAR (50),
PRIMARY KEY (Nreserva)
)ENGINE=InnoDB;

CREATE TABLE HACEN (


CodigoM INTEGER NOT NULL,
CodigoC INTEGER NOT NULL,
Nreserva INTEGER NOT NULL,
NasientosR INTEGER,
FOREIGN KEY fk_1 (CodigoM) REFERENCES MESAS(CodigoM) ON UPDATE CASCADE,
FOREIGN KEY fk_2 (CodigoC) REFERENCES COMEDORES(CodigoC) ON UPDATE CASCADE,
FOREIGN KEY fk_3 (Nreserva) REFERENCES RESERVAS(Nreserva) ON UPDATE CASCADE
)ENGINE=InnoDB;

CREATE TABLE FACTURAS (


NFactura INTEGER NOT NULL AUTO_INCREMENT,
FechaF DATE,
CodigoM INTEGER NOT NULL,
CodigoC INTEGER NOT NULL,
PRIMARY KEY (NFactura),
FOREIGN KEY fk_1 (CodigoM) REFERENCES MESAS(CodigoM) ON UPDATE CASCADE,
FOREIGN KEY fk_2 (CodigoC) REFERENCES COMEDORES(CodigoC) ON UPDATE CASCADE
)ENGINE=InnoDB;

CREATE TABLE PLATOS (


CodigoPl INTEGER NOT NULL AUTO_INCREMENT,
Nombre VARCHAR (25),
Descripcion VARCHAR (100),
Tipo VARCHAR (20),
Precio DECIMAL (4,2),
PRIMARY KEY (CodigoPl)
)ENGINE=InnoDB;
CREATE TABLE PROVEEDORES (
CodigoPro INTEGER NOT NULL AUTO_INCREMENT,
Dirección VARCHAR (50),
CP INTEGER,
Teléfono VARCHAR (9),
Fax VARCHAR (9),
Contacto VARCHAR (50),
PRIMARY KEY (CodigoPro)
)ENGINE=InnoDB;

CREATE TABLE PRODUCTOS (


CodigoPr INTEGER NOT NULL AUTO_INCREMENT,
Descripcion VARCHAR (100),
Stok INTEGER,
UnidadBase INTEGER,
PrecioU DECIMAL (4,2),
Categoria VARCHAR (25),
CodigoPro INTEGER NOT NULL,
PRIMARY KEY (CodigoPr),
FOREIGN KEY fk_1 (CodigoPro) REFERENCES PROVEEDORES(CodigoPro) ON UPDATE CASCADE
)ENGINE=InnoDB;

CREATE TABLE INCLUYEN (


NFactura INTEGER NOT NULL AUTO_INCREMENT,
CodigoPl INTEGER NOT NULL,
Unidades INTEGER,
FOREIGN KEY fk_1 (NFactura) REFERENCES FACTURAS(NFactura) ON UPDATE CASCADE,
FOREIGN KEY fk_2 (CodigoPl) REFERENCES PLATOS(CodigoPl) ON UPDATE CASCADE
)ENGINE=InnoDB;

CREATE TABLE CONTIENEN (


CodigoPl INTEGER NOT NULL,
CodigoPr INTEGER NOT NULL,
Cantidad INTEGER,
FOREIGN KEY fk_1 (CodigoPl) REFERENCES PLATOS(CodigoPl) ON UPDATE CASCADE,
FOREIGN KEY fk_2 (CodigoPr) REFERENCES PRODUCTOS(CodigoPr) ON UPDATE CASCADE
)ENGINE=InnoDB;
EJERCICIO 2
Sobre la base de datos Restaurante Mouro realiza las siguientes modificaciones:

Tabla EMPLEADOS
2.1. Añade un índice que facilite búsquedas frecuentes por Apellidos y Nombre sin duplicados.

ALTER table EMPLEADOS add unique index ind_1 (Nombre, Apellidos);

2.2. El Restaurante se ha inaugurado el día 15 de Julio de 2010. Comprueba que la fecha de


alta de los empleados no sea anterior a esa fecha.

ALTER table EMPLEADOS add check(FechaAlta>20100715);

Tabla CAMAREROS
2.3. El turno de trabajo sólo puede tomar 3 valores: mañana, tarde y noche. Añade esa
restricción teniendo en cuenta que un camarero puede tener más de un turno (no utilices
CHECK).

ALTER TABLE CAMAREROS CHANGE COLUMN Turno Turno ENUM( 'Mañana', 'Tarde', 'Noche') NOT
NULL;

Tabla PROVEEDORES
2.4. Añade las columnas Apellidos y Nombre entre el código y la dirección.

ALTER TABLE PROVEEDORES ADD COLUMN Apellidos VARCHAR(45) NOT NULL AFTER
CodigoPro
ALTER TABLE PROVEEDORES ADD COLUMN Nombre VARCHAR(45) NOT NULL AFTER
Apellidos;

Tabla MESAS
2.5. El valor por defecto del número de asientos en las mesas es 4.

ALTER TABLE MESAS CHANGE COLUMN Nasientos Nasientos INT NULL DEFAULT 4;

Tabla PRODUCTOS
2.6. Añade un índice por Categoría. Muestra todos los índices de la tabla.

ALTER table PRODUCTOS add unique index ind_1 (Categoria);


SHOW INDEX FROM PRODUCTOS;
2.7. Añade una restricción en la tabla, de forma que el Stock sea entero de 4 cifras, sin signo y
que no admita nulos.

ALTER table PRODUCTOS CHANGE COLUMN Stok Stok INT(4) NOT NULL;

2.8. Borra el índice que acabas de crear.

ALTER table PRODUCTOS DROP INDEX ind_1;

Tabla PLATOS
2.9. Borra la tabla PROVEEDORES. ¿Qué ocurre?. Borra previamente las claves ajenas.

mysql> drop table PROVEEDORES;


ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
mysql>
ALTER TABLE PRODUCTOS DROP FOREIGN KEY PRODUCTOS_ibfk_1;
ALTER TABLE PRODUCTOS DROP INDEX fk_1 ;
DROP TABLE PROVEEDORES;

BASE DE DATOS Restaurante Mouro


2.10. Borra la base de datos.

DROP DATABASE IF EXISTS Mouro;

También podría gustarte