1.-
Partiendo del siguiente esquema relacional, crea las tablas correspondientes,
teniendo en cuenta la descripción y las restricciones siguientes: 
| 
ALUMNOS | ||
| 
DNI
  Alumno | 
VARCHAR2, tamaño 10 | 
3 numeros, un guión y una letra | 
| 
Nombre | 
VARCHAR2, tamaño 20 | 
No Nulo | 
| 
Direccion | 
VARCHAR2, tamaño 20 |  | 
| 
Teléfono | 
VARCHAR2, tamaño 10 | 
Empieza por 95 | 
| 
EMPRESAS | ||
| 
CIF
  Empresa | 
VARCHAR2, tamaño 10 |  | 
| 
Nombre | 
VARCHAR2, tamaño 20 | 
Único | 
| 
Dirección | 
VARCHAR2, tamaño 20 | 
No Nulo | 
| 
Responsable Legal | 
VARCHAR2, tamaño 10 |  | 
| 
Sector | 
VARCHAR2, tamaño 15 |  | 
| 
PRACTICAS | ||
| 
DNI
  Alumno | 
VARCHAR2, tamaño 10 | 
Clave ajena | 
| 
NIF
  Empresa | 
VARCHAR2, tamaño 10 | 
Clave ajena | 
| 
Fecha Inicio | 
FECHA |  | 
| 
NumHoras | 
NUMERICO de 4 | 
Por defecto 0 | 
Los
campos que aparecen en negrita y subrayados forman la clave primaria de la
tabla, restricción que debe considerarse al crear las tablas, al igual que las
claves ajenas.
2.-
Añade las restricciones siguientes:
-         
CIF Empresa:
Empieza y termina con una letra mayúscula.
-         
FechaInicio: En
Abril o Mayo.
-         
Sector: Es uno de
los siguientes: ‘Informatica’, ‘I+D’ o ‘Electrónica’.
Solución
SQL
CREATE
TABLE alumnos
(
dni
VARCHAR2 (10),
nombre
VARCHAR2 (20) NOT NULL,
direccion
VARCHAR2 (20),
telefono VARCHAR2 (10),
CONSTRAINT pk_dni PRIMARY KEY (dni),
CONSTRAINT ck_dni1 CHECK (UPPER (SUBSTR
(dni,10,2)) BETWEEN 'A' AND 'Z'),
CONSTRAINT ck_telefono
CHECK(SUBSTR(telefono,1,2)='95') 
);
CREATE
TABLE empresas
(
cif
VARCHAR2 (10),
nombre
VARCHAR2 (20) UNIQUE,
direccion
VARCHAR2 (20) NOT NULL,
responsable_legal
VARCHAR2 (10),
sector VARCHAR2 (15),
CONSTRAINT pk_cif PRIMARY KEY (cif),
CONSTRAINT ck_cif_letra CHECK (cif BETWEEN 'A%'
AND 'Z%'),
CONSTRAINT ck_cif_letrafin CHECK (cif BETWEEN
'%A' AND '%Z'),
CONSTRAINT ck_sector CHECK (sector IN
('Informatica', 'I+D', 'Electronica'))
);
CREATE
TABLE practicas
(
dni
VARCHAR2 (10),
cif
VARCHAR2 (10),
fecha_inicio
DATE,
numhoras NUMBER (4) DEFAULT 0,
CONSTRAINT pk_dni_cif PRIMARY KEY (dni, cif),
CONSTRAINT fk_dni_pers FOREIGN KEY (dni)
REFERENCES alumnos (dni),
CONSTRAINT fk_cif_emp FOREIGN KEY (cif) REFERENCES
empresas (cif) ON DELETE CASCADE,
CONSTRAINT
ck_fecha_inic CHECK ( fecha_inicio IN ('abril', 'mayo'))
);
Solución
MYSQL
CREATE
TABLE alumnos
(
dni
VARCHAR (10),
nombre
VARCHAR (20) NOT NULL,
direccion
VARCHAR (20),
telefono VARCHAR (10),
CONSTRAINT pk_dni PRIMARY KEY (dni),
CONSTRAINT ck_dni1 CHECK (UPPER (SUBSTR
(dni,10,2)) BETWEEN 'A' AND 'Z'),
CONSTRAINT ck_telefono
CHECK(SUBSTR(telefono,1,2)='95') 
);
CREATE
TABLE empresas
(
cif
VARCHAR (10),
nombre
VARCHAR (20) UNIQUE,
direccion
VARCHAR (20) NOT NULL,
responsable_legal
VARCHAR (10),
sector VARCHAR (15),
CONSTRAINT pk_cif PRIMARY KEY (cif),
CONSTRAINT ck_cif_letra CHECK (cif BETWEEN 'A%'
AND 'Z%'),
CONSTRAINT ck_cif_letrafin CHECK (cif BETWEEN
'%A' AND '%Z'),
CONSTRAINT ck_sector CHECK (sector IN
('Informatica', 'I+D', 'Electronica'))
);
CREATE
TABLE practicas
(
dni
VARCHAR (10),
cif
VARCHAR (10),
fecha_inicio
DATE,
numhoras NUMERIC (4) DEFAULT 0,
CONSTRAINT pk_dni_cif PRIMARY KEY (dni, cif),
CONSTRAINT fk_dni_pers FOREIGN KEY (dni)
REFERENCES alumnos (dni),
CONSTRAINT fk_cif_emp FOREIGN KEY (cif)
REFERENCES empresas (cif) ON DELETE CASCADE,
CONSTRAINT
ck_fecha_inic CHECK ( fecha_inicio IN ('abril', 'mayo'))
);
 
No hay comentarios:
Publicar un comentario