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