Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1) Crear las siguientes tablas correspondientes a una base de datos con información
sobre los empleados y proyectos de una empresa:
);
Damos el nombre EMP_UNIQ a la última restricción para que sea más sencillo
eliminarla después. ¡¡NO ES OBLIGATORIO!!
CREATE TABLE PROYECTO (
FechaFin date
);
Horas integer default 10 not null check (Horas >= 10 and Horas <= 40),
);
Sabemos que las restricciones primary key, unique, foreign key y check pueden hacerse de dos
maneras:
- A nivel de columna, cuando la restricción afecta solo a una columna. Se pone la
restricción en la definición de la columna afectada.
- A nivel de tabla. Obligatoriamente si la restricción afecta a más de una columna y
opcionalmente si afecta solo a una. Se pone la restricción aparte de las definiciones
de la/s columna/s afectada/s.
Por ejemplo, en la tabla TRABAJA_EN, la restricción de clave primaria afecta a dos columnas y
se tiene que poner obligatoriamente nivel de tabla pero la restricción DNI es clave externa
sobre EMPLEADO afecta solo a la columna DNI, por lo que podemos elegir entre:
Horas integer default 10 not null check (Horas >= 10 and Horas <= 40),
primary key (DNI,Cod_Proy),
);
Nótese lo siguiente:
- Las palabras reservadas foreign key, solo aparecen en la definición a nivel de tabla,
no se ponen en la definición a nivel de columna, aunque el efecto en los dos casos es
el mismo.
desc empleado;
desc proyecto;
desc trabaja;
5) Insertar una tupla en TRABAJA_EN Indicando que el empleado Agustin Perez Trabaja
15 horas semanales en el proyecto PUENTE.
Lo que ocurre es que se obtiene un error debido a que el DNI 3214321 no existe en la
tabla EMPELADO, por lo que esta inserción violará la restricción de que DNI es clave
externa sobre TRABAJA_EN
7) Modificar la estructura de la tabla EMPLEADO para que contenga una nueva columna
que permita almacenar la titulación de cada empleado.
8) Modificar la tabla empleado para eliminar la restricción que no permite que dos
empleados se llamen igual.
Nótese que hemos sido previsores y en la creación de la tabla dimos un nombre a esa
restricción por lo que ahora simplemente tenemos que indicar que se elimine esa
restricción.
No se nos debe permitir hacerlo porque no se puede eliminar una tabla que es
referenciada por otro objeto, ya que esto violará la regla de integridad referencial.
En nuestro caso, EMPLEADO está referenciada por TRABAJA_EN.
Deberíamos obtener un mensaje de error como el siguiente:
ERROR at line 1:
ORA-02449: unique/primary keys in table referenced by foreign keys