Added CHECK constraint exercise.
This commit is contained in:
		
							
								
								
									
										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');
 | 
				
			||||||
		Reference in New Issue
	
	Block a user