Coches (Matrícula (PK), Marca, Modelo, Color, PVP, Cod_Cliente (FK))
Clientes (Código (PK), NIF, Nombre, Dirección, Ciudad, Teléfono)
Revisiones (Código (PK), Fecha, Matrícula (FK))
Operaciones (Código (PK), Descripción, Horas)
Operaciones_Revisiones (Código_rev(PK y FK), Código_operacion (PK y FK))
Crear las tablas procurando que las columnas tengan el tipo y tamaño adecuados y con las siguientes restricciones:
1. Color es verde, rojo o azul.
2. Las horas de una operación nunca pasan de 10.
3. Todas las claves primarias, ajenas y candidatas.
4. La marca y modelo del coche no pueden dejarse en blanco.
5. El precio de un coche está entre 10000 y 40000.
Solución en SQL
CREATE TABLE clientes
(
cod_cliente VARCHAR2 (10),
nif VARCHAR2 (9) CONSTRAINT nif_unico UNIQUE,
nombre VARCHAR2 (15),
direccion VARCHAR2 (30),
ciudad VARCHAR2 (20),
telefono VARCHAR2 (10),
CONSTRAINT pk_cod_cliente PRIMARY KEY (cod_cliente)
);
CREATE TABLE coches
(
matricula VARCHAR2 (10),
marca VARCHAR2 (15) CONSTRAINT marca_obligatorio NOT NULL,
modelo VARCHAR2 (15)
CONSTRAINT modelo_obligatorio NOT NULL,
color VARCHAR2 (10),
pvp NUMBER (10,2) CONSTRAINT
ck_pvp CHECK(pvp BETWEEN 10000 AND 40000),
cod_cliente VARCHAR2 (10),
CONSTRAINT pk_matricula
PRIMARY KEY (matricula),
CONSTRAINT ck_tipo_color
CHECK(color='verde' OR color='rojo' OR color='azul'),
CONSTRAINT fk_cod_cliente
FOREIGN KEY (cod_cliente)
REFERENCES clientes
(cod_cliente)
ON DELETE CASCADE
);
CREATE TABLE revisiones
(
cod_revisiones VARCHAR2 (10),
fecha DATE,
matricula VARCHAR2 (10),
CONSTRAINT pk_cod_revisiones
PRIMARY KEY (cod_revisiones),
CONSTRAINT fk_matricula
FOREIGN KEY (matricula) REFERENCES coches (matricula)
ON DELETE CASCADE
);
CREATE TABLE operaciones
(
cod_operaciones VARCHAR2 (10),
descripcion VARCHAR2 (30),
horas VARCHAR2 (5),
CONSTRAINT pk_cod_operaciones PRIMARY KEY (cod_operaciones),
CONSTRAINT ck_horas_maximas
CHECK(horas<10)
);
CREATE TABLE operaciones_revisiones
(
cod_revisiones VARCHAR2 (10),
cod_operaciones VARCHAR2 (10),
CONSTRAINT pk_cod_rev_oper PRIMARY KEY (cod_revisiones, cod_operaciones),
CONSTRAINT fk_cod_revisiones FOREIGN KEY (cod_revisiones) REFERENCES
revisiones (cod_revisiones),
CONSTRAINT fk_cod_operaciones
FOREIGN KEY (cod_operaciones)
REFERENCES operaciones (cod_operaciones)
ON DELETE CASCADE
);
Solución en MYSQL
CREATE DATABASE ejercnav ;
USE ejercnav ;
CREATE TABLE clientes
(
cod_cliente VARCHAR (10),
nif VARCHAR (9),
nombre VARCHAR (15),
direccion VARCHAR (30),
ciudad VARCHAR (20),
telefono VARCHAR (10),
CONSTRAINT pk_cod_cliente
PRIMARY KEY (cod_cliente),
CONSTRAINT nif_unico unique
(nif)
);
CREATE TABLE coches
(
matricula VARCHAR (10),
marca VARCHAR (15) NOT NULL,
modelo VARCHAR (15) NOT NULL,
color VARCHAR (10),
pvp NUMERIC(2),
cod_cliente VARCHAR (10),
CONSTRAINT pk_matricula
PRIMARY KEY (matricula),
CONSTRAINT ck_tipo_color
CHECK(color='verde' OR color='rojo' OR color='azul'),
CONSTRAINT ck_pvp CHECK(pvp
BETWEEN 10000 AND 40000),
CONSTRAINT fk_cod_cliente
FOREIGN KEY (cod_cliente)
REFERENCES clientes
(cod_cliente)
ON DELETE CASCADE
);
CREATE TABLE revisiones
(
cod_revisiones VARCHAR (10),
fecha DATE,
matricula VARCHAR (10),
CONSTRAINT pk_cod_revisiones
PRIMARY KEY (cod_revisiones),
CONSTRAINT fk_matricula
FOREIGN KEY (matricula) REFERENCES coches (matricula)
ON DELETE CASCADE
);
CREATE TABLE operaciones
(
cod_operaciones VARCHAR (10),
descripcion VARCHAR (30),
horas VARCHAR (5),
CONSTRAINT pk_cod_operaciones PRIMARY KEY (cod_operaciones),
CONSTRAINT ck_horas_maximas
CHECK(horas<10)
);
CREATE TABLE operaciones_revisiones
(
cod_revisiones VARCHAR (10),
cod_operaciones VARCHAR (10),
CONSTRAINT pk_cod_rev_oper PRIMARY KEY (cod_revisiones, cod_operaciones),
CONSTRAINT fk_cod_revisiones FOREIGN KEY (cod_revisiones) REFERENCES
revisiones (cod_revisiones),
CONSTRAINT fk_cod_operaciones
FOREIGN KEY (cod_operaciones)
REFERENCES operaciones (cod_operaciones)
ON DELETE CASCADE
);
No hay comentarios:
Publicar un comentario