Added CHECK constraint exercise.
This commit is contained in:
parent
55b64d17cc
commit
fed6ac2509
81
1/GBD/assignments/check-exercise.sql
Normal file
81
1/GBD/assignments/check-exercise.sql
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
DROP TABLE Barcos;
|
||||||
|
DROP TABLE Especies;
|
||||||
|
DROP TABLE Lotes;
|
||||||
|
|
||||||
|
CREATE TABLE Barcos(
|
||||||
|
matricula CHAR(7) PRIMARY KEY,
|
||||||
|
nombre VARCHAR(20),
|
||||||
|
clase VARCHAR(20),
|
||||||
|
capacidad NUMBER(8,2),
|
||||||
|
nacionalidad VARCHAR(20)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE Lotes(
|
||||||
|
codigo INT PRIMARY KEY,
|
||||||
|
matricula CHAR(7), /* references Barcos(matricula) */
|
||||||
|
num_kg NUMBER(8,2) CHECK(num_kg > 0),
|
||||||
|
precio_kg_salida NUMBER(8,2) CHECK(precio_kg_salida > 0),
|
||||||
|
precio_kg_vendido NUMBER(8,2) CHECK(precio_kg_vendido > 0),
|
||||||
|
fecha_venta DATE NOT NULL,
|
||||||
|
cod_especie INT /* references Especies(codigo) */
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE Especies(
|
||||||
|
codigo INT PRIMARY KEY,
|
||||||
|
nombre VARCHAR(20),
|
||||||
|
tipo VARCHAR(20),
|
||||||
|
cupo_barco NUMBER(8,2),
|
||||||
|
caladero_ppal INT /* references Caladeros(codigo) */
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE Caladeros(
|
||||||
|
codigo INT PRIMARY KEY,
|
||||||
|
nombre VARCHAR(20) CHECK(nombre = UPPER(nombre)),
|
||||||
|
ubicacion VARCHAR(20) CHECK(ubicacion = UPPER(ubicacion)),
|
||||||
|
especie_ppal INT /* references Especies(codigo) */
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE Fechas_Capturas(
|
||||||
|
cod_especie INT, /* references Especies(codigo) */
|
||||||
|
cod_caladero INT, /* references Caladeros(codigo) */
|
||||||
|
fecha_inicio DATE,
|
||||||
|
fecha_fin DATE,
|
||||||
|
PRIMARY KEY(cod_especie, cod_caladero)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE Lotes
|
||||||
|
ADD CONSTRAINT FK_Lotes_matricula
|
||||||
|
FOREIGN KEY (matricula) REFERENCES Barcos(matricula)
|
||||||
|
ON DELETE CASCADE;
|
||||||
|
|
||||||
|
ALTER TABLE Lotes
|
||||||
|
ADD CONSTRAINT FK_Lotes_cod_especie
|
||||||
|
FOREIGN KEY (cod_especie) REFERENCES Especies(codigo)
|
||||||
|
ON DELETE CASCADE;
|
||||||
|
|
||||||
|
ALTER TABLE Especies
|
||||||
|
ADD CONSTRAINT FK_Especies_caladero_ppal
|
||||||
|
FOREIGN KEY (caladero_ppal) REFERENCES Caladeros(codigo)
|
||||||
|
ON DELETE RESTRICT;
|
||||||
|
|
||||||
|
ALTER TABLE Caladeros
|
||||||
|
ADD CONSTRAINT FK_Caladeros_especie_ppal
|
||||||
|
FOREIGN KEY (especie_ppal) REFERENCES Especies(codigo)
|
||||||
|
ON DELETE SET NULL;
|
||||||
|
|
||||||
|
ALTER TABLE Fechas_Capturas
|
||||||
|
ADD CONSTRAINT FK_Fechas_Capturas_cod_especie
|
||||||
|
FOREIGN KEY (cod_especie) REFERENCES Especies(codigo);
|
||||||
|
|
||||||
|
ALTER TABLE Fechas_Capturas
|
||||||
|
ADD CONSTRAINT FK_Fechas_Capturas_cod_caladero
|
||||||
|
FOREIGN KEY (cod_caladero) REFERENCES Caladeros(codigo);
|
||||||
|
|
||||||
|
ALTER TABLE Barcos
|
||||||
|
ADD CHECK(REGEXP_LIKE(matricula, '[A-Z]{2}-[0-9]{4}'));
|
||||||
|
|
||||||
|
ALTER TABLE Lotes
|
||||||
|
ADD CHECK(precio_kg_vendido > precio_kg_salida);
|
||||||
|
|
||||||
|
ALTER TABLE Fechas_Capturas
|
||||||
|
ADD CHECK(fecha_inicio BETWEEN '02-02-2022' AND '28-03-2022');
|
Loading…
Reference in New Issue
Block a user