El modelo de datos relacional

31
Capítulo 5 El modelo de datos relacional y las restricciones de una base de datos relacional Fundamentos de Sistemas de Bases de Datos. 5ta Ed. Elmasri & Navathe

description

Capítulo 5 El modelo de datos relacional y las restricciones de una base de datos relacional Fundamentos de Sistemas de Bases de Datos. 5ta Ed. Elmasri & Navathe

Transcript of El modelo de datos relacional

Page 1: El modelo de datos relacional

Capítulo 5 El modelo de datos relacional y

las restricciones de una base de datos relacional

Fundamentos de Sistemas de Bases de Datos.5ta Ed.

Elmasri & Navathe

Page 2: El modelo de datos relacional

El modelo relacional• El modelo relacional fue presentado por

primera vez por Ted Codd, de IBM Research, en 1970 en un documento ya clásico (Codd 1970)

Page 3: El modelo de datos relacional

Conceptos del modelo relacional

• El modelo relacional representa la base de datos como una colección de relaciones. Informalmente, cada una de estas relaciones se parece a una tabla de valores.

• Cuando una relación está pensada como una tabla de valores, cada fila representa una colección de valores relacionados.

• En el modelo relacional, cada fila de la tabla representa un hecho que, por lo general, se corresponde con una relación o entidad real.

• El nombre de la tabla y de las columnas se utiliza para ayudar a interpretar el significado de cada uno de los valores de las filas.

Page 4: El modelo de datos relacional

Dominios, atributos, tuplas y relaciones• En la terminología formal del modelo relacional,

una fila recibe el nombre de tupla, una cabecera de columna es un atributo y el nombre de la tabla una relación. El tipo de dato que describe los valores que pueden aparecer en cada columna está representado por un dominio de posibles valores.

• Restricciones de dominio• Un dominio D es un conjunto

de valores atómicos. • Por atómico queremos decir

que cada valor de un dominio es indivisible.

Page 5: El modelo de datos relacional

Dominios, atributos, tuplas y relacionesNombre Tipo Formato

NumeroTelefono. El conjunto de los 8 dígitos que componen los números de teléfono.

dddddddd [1-9]

DocumentoNacionalldentidad. El conjunto de documentos nacionales de identidad (DNI) válidos.

ddddddddd [1-9]

Nombres. El conjunto de caracteres que representan el nombre de una persona.

[A-Z][a-z]

NotaCurso. Los posibles valores obtenidos al calcular el promedio de las notas obtenidas por un alumno a lo largo del curso. Debe ser un valor comprendido entre 1 y 100.

dd [1-9]

Page 6: El modelo de datos relacional

Dominios, atributos, tuplas y relacionesNombre Tipo Formato

EdadEmpleado. Las posibles edades de los empleados de una empresa; cada una debe estar comprendida entre 18 y 65.

dd [1-9]

NombreDepartamentoAcademico. El conjunto de nombres de los departamentos académicos de una universidad, como Informática, Económicas o Física.

[A-Z][a-z]

CodigoDepartamentoAcademico. El conjunto de códigos de los departamentos, como 'INF', 'ECON' y 'FIS'.

[A-Z]

FechaInicioPeriodo Las posibles fechas en las que inicia un periodo lectivo

[1-30]/[1-12]/[1111-9999]

Page 7: El modelo de datos relacional

Dominios, atributos, tuplas y relaciones

• Lo expuesto anteriormente se conoce como definiciones lógicas de dominios.

• Para cada uno de ellos se especifica también un tipo de dato o formato. Por ejemplo, el tipo de datos del dominio NumeroTelefono puede declararse como una cadena de caracteres de la forma dddddddd, donde cada d es un dígito numérico entero entre 0 y 9.

• Un dominio cuenta, por tanto, con un nombre, un tipo de dato y un formato.

Page 8: El modelo de datos relacional

Dominios, atributos, tuplas y relaciones• Relación ESTUDIANTE. • Cada tupla de la relación representa a un estudiante en particular.

• Los valores NULL representan atributos cuyos valores no se conocen, o no existen, para una tupla ESTUDIANTE individual.

Page 9: El modelo de datos relacional

Dominios, atributos, tuplas y relaciones• Cada valor en una tupla es un valor atómico, es decir, no es divisible en

componentes.

• Por tanto, no están permitidos los atributos compuestos y multivalorados.

• Una gran parte de la teoría del modelo relacional fue desarrollada con este principio en mente, el cual recibe el nombre de primera forma normal.

• Así, los atributos multivalorados deben representarse en relaciones separadas, mientras que los compuestos lo están sólo por sus componentes.

Page 10: El modelo de datos relacional

Restricciones de llave• Una relación R de grado n se designa como R(Al, A2, ... ,An).

• En general, el nombre de una relación como ESTUDIANTE indica también el conjunto de tuplas de la misma, mientras que ESTUDIANTE(Nombre, Dni, ... ) se refiere sólo a su instancia.

• Dos tuplas no pueden tener la misma combinación de valores para todos sus atributos. Habitualmente existen otros subconjuntos de atributos de una relación con la propiedad de que dos tuplas no deben tener la misma combinación de valores para estos atributos.

Page 11: El modelo de datos relacional

Restricciones de llave y en valores NULL• Por ejemplo, la relación COCHE tiene dos llaves

candidatas: NumeroPermisoConducir y NumeroPlaca. Es común designar una de ellas como la llave principal de la relación, y será la que se utilice para identificar las tuplas en la relación.

• Usamos la convención de que los atributos que forman la clave principal de un esquema de relación están subrayados

• Otra restricción en los atributos especifica si se permiten o no los valores NULL. Por ejemplo, si cada tupla ESTUDIANTE debe contar con un valor válido y no nulo para el atributo Nombre, entonces el Nombre de ESTUDIANTE esta obligado a ser NOT NULL.

Page 12: El modelo de datos relacional

Bases de datos relacionales• En la Figura 5.5, el

atributo NumDpto de DEPARTAMENTO y LOCALlZACIONES_DPTO representa el mismo concepto del mundo real: el número asignado a un departamento.

• Este mismo concepto recibe el nombre de Dno en EMPLEADO y NumDptoProyecto en PROYECTO.

Page 13: El modelo de datos relacional

Bases de datos relacionales• Los atributos que representan el mismo concepto del mundo real pueden tener o no los

mismos nombres en relaciones diferentes.

• Por otro lado, los atributos que representan diferentes conceptos pueden tener el mismo nombre en relaciones distintas.

• Por ejemplo, podríamos haber usado el nombre de atributo Nombre de EMPLEADO tanto para el NombreProyecto de PROYECTO como para el NombreDpto de DEPARTAMENTO; en este caso, tendríamos tres atributos con el mismo nombre pero que representarían tres conceptos diferentes: nombres de empleado, proyecto y de departamento.

Page 14: El modelo de datos relacional

Restricciones de integridad referencial• Las restricciones de integridad referencial están especificadas entre

dos relaciones y se utilizan para mantener la consistencia entre las tuplas de dos relaciones.

• Las restricciones de integridad referencial dicen que una tupla de una relación que hace referencia a otra relación debe hacer referencia a una tupla existente de esa relación.

Page 15: El modelo de datos relacional

Restricciones de integridad referencial• Por ejemplo, en la Figura

5.6, el atributo Dno de EMPLEADO devuelve el número de departamento en el que trabaja cada empleado;

• Por lo tanto, su valor en cada tupla EMPLEADO debe coincidir con el valor NumeroDpto de alguna tupla de la relación DEPARTAMENTO.

Page 16: El modelo de datos relacional

Restricciones de foreign key (FK)• Para expresar de un modo más formal la integridad

referencial, primero debemos definir el concepto de una foreign key (llave externa, llave foránea o FK).

• Los atributos en FK de R1 tienen el mismo dominio que los atributos de llave principal (llave primaria o PK) de R2; se dice que los atributos FK referencian o hacen referencia a la relación R2

• En la relación EMPLEADO, el atributo Dno hace referencia al departamento en el que éste trabaja; por consiguiente, designamos Dno como una foreign key de EMPLEADO que hace referencia a la relación DEPARTAMENTO o puede ser NULL si el empleado no pertenece a un departamento o será asignado más adelante.

Page 17: El modelo de datos relacional

Restricciones de foreign key (FK)• Observe que una foreign key puede hacer referencia a su propia

relación. Por ejemplo, el atributo SuperDni de EMPLEADO se refiere al supervisor de un empleado, el cual es a su vez otro empleado representado por una tupla en la misma relación. Por tanto, SuperDni es una foreign key que enlaza con la propia relación EMPLEADO.

• La tupla de 'José Pérez' está unida a la de 'Alberto Campos, lo que indica que éste es el supervisor de aquél.

Page 18: El modelo de datos relacional

Restricciones de foreign key (FK)• Podemos mostrar en forma de

diagrama las restricciones de integridad referencial dibujando un arco que vaya desde cada foreign key a la relación a la que referencia.

• Para aclarar los términos, la punta de la flecha debe apuntar a la clave principal de la relación referenciada.

Page 19: El modelo de datos relacional

Actualizaciones y la violación de una restricción • En esta sección vamos a concentrarnos en las operaciones de modificación

o actualización de una base de datos. Existen tres tipos de operaciones de actualización básicas: inserción, borrado y modificación.

• Siempre que se aplique cualquiera de estas operaciones, deberán respetarse las restricciones de integridad especificadas en el esquema de la base de datos.

• En esta sección se tratan los tipos de restricciones que podrían violarse en cada operación de actualización, y las acciones que se deben tomar en cada caso.

Page 20: El modelo de datos relacional

La operación Insertar• Insert proporciona una lista de los valores de

atributo para una nueva tupla t que será insertada en una relación R. • Esta operación puede violar cualquiera de las

cuatro restricciones:• las de dominio, si el valor dado a un atributo no

aparece en el dominio correspondiente;• las de clave, si el valor de dicha clave en la nueva

tupla t ya existe en otra tupla en la relación;• las de integridad de entidad, si la clave principal

de la nueva tupla t es NULL; • las de integridad referencial, si el valor de

cualquierforeign key en t se refiere a una tupla que no exista en la relación referenciada.

Page 21: El modelo de datos relacional

La operación Insertar• Insertar <'Cecilia', 'Santos', 'García', NULL, '04-05-1960', 'Misericordia, 23', M, 28000, NULL, 4> en EMPLEADO.

• Resultado. Esta inserción viola la restricción de integridad de entidad (NULL para la clave principal Dni), por lo que es rechazada.

• Insertar <'Alicia', 'Jiménez', 'Celaya', '999887777', '05-04-1960', 'Cercado, 38', M, 28000, '987654321', 4> en EMPLEADO. • Resultado. Esta inserción viola la restricción de clave porque ya existe otra tupla en la relación EMPLEADO con el mismo valor de

Dní, por lo que es rechazada.

• Insertar <'Cecilia', 'Santos', 'García', '677678989', '04-05-1960', 'Misericordia, 23', M, 28000, '987654321', 7> en EMPLEADO. • Resultado . Esta inserción viola la restricción de integridad referencial especificada, en Dno en EMPLEADO porque no existe

ningún DEPARTAMENTO cuyo NumeroDpto = 7.

• Insertar <'Cecilia', 'Santos', 'García', '677678989', '04-05-1960', 'Misericordia, 23', M, sueldo, NULL, 4> en EMPLEADO. • Resultado. Esta inserción viola la restricción de dominio, en Sueldo porque el atributo Sueldo solo admite valore s numericos.

Page 22: El modelo de datos relacional

La operación Insertar• Si una inserción viola una o más restricciones, la opción

predeterminada es rechazarla. En este caso, resultaría útil que el DBMS explicara el motivo de dicho rechazo.

• Otra posibilidad es intentar corregir el motivo del rechazo.

• En la primera operación antes mostrada, el SABD podría solicitar al usuario un valor de Dni y aceptar la inserción en el caso de que éste fuera correcto.

• En la tercera operación, la base de datos podría sugerir al usuario el cambio de Dno por otro correcto (o establecerlo a NULL).

Page 23: El modelo de datos relacional

La operación Eliminar• Delete sólo puede violar la integridad referencial en caso de que la

tupla a eliminar esté referenciada por las foreign keys de otras tuplas de la base de datos. Para especificar un borrado, una condición en los atributos es la que selecciona la tupla (o tuplas) a eliminar.

• Borrar la tupla TRABAJA_EN cuyo DniEmpleado = '999887777' Y NumProy = 10. • Resultado. Este borrado se acepta, eliminándose sólo una tupla.

Page 24: El modelo de datos relacional

La operación Eliminar• Borrar la tupla EMPLEADO cuyo Dni = '999887777'. • Resultado. Este borrado no se acepta porque existen tuplas

en TRABAJA_EN que hacen referencia a ella. Por tanto, si se elimina la tupla en EMPLEADO, se producirán violaciones de la integridad referencial.

• Borrar la tupla EMPLEADO cuyo Dni = '333445555'. • Resultado. Este borrado provocará incluso más violaciones de

integridad referencial, ya que la tupla implicada está referenciada desde las relaciones EMPLEADO, DEPARTAMENTO, TRABAJA_EN Y SUBORDINADO.

Page 25: El modelo de datos relacional

La operación Eliminar• Son varios los caminos que pueden tomarse si un borrado provoca una

violación.

• El primero consiste en rechazar el borrado.

• El segundo pasa por intentar propagar el borrado (en cascada) eliminando las tuplas que hacen referencia a la que estamos intentado borrar. Por ejemplo, en la segunda operación, el DBMS podda borrar automáticamente las tuplas de TRABAJA_EN cuyo DniEmpleado = '999887777'.

• Una tercera posibilidad es modificar los valores del atributo referenciado que provocan la violación; a cada uno de ellos podría asignársele NULL

Page 26: El modelo de datos relacional

La operación Actualizar

• Update se emplea para cambiar los valores de uno o más atributos de una tupla (o tuplas ) de una relación. Para seleccionar la información a modificar es necesario indicar una condición en los atributos.

• Actualizar el salario de la tupla EMPLEADO cuyo Dni = '999887777' a 28000. • Resultado. Aceptable.

• Actualizar el Dno de la tupla EMPLEADO con Dni = '999887777' a 1. • Resultado. Aceptable.

Page 27: El modelo de datos relacional

La operación Actualizar• Actualizar el Dno de la tupla EMPLEADO con Dni = '999887777' a 7.

• Resultado. Inaceptable porque viola la integridad referencial.

• Actualizar el Dni de la tupla EMPLEADO cuyo Dni = '999887777' a '987654321'. • Resultado. Inaceptable porque viola la restricción de clave principal repitiendo un

valor que ya existe en otra tupla; viola las restricciones de integridad referencial ya que existen otras relaciones que hacen referencia a un Dni que ya existe.

• Actualizar el sueldo de la tupla EMPLEADO cuyo Dni = '999887777' a sueldo. • Resultado. Inaceptable por que viola la restricción de Dominio.

Page 28: El modelo de datos relacional

La operación Actualizar• La actualización de un atributo que no forma parte de

una llave principal ni de una foreign key no suele plantear problemas; el DBMS sólo tiene que verificar que el nuevo valor tiene el tipo de dato y dominio correctos.

• La modificación de una llave principal es una operación similar al borrado de una tupla y la inserción de otra en su lugar, ya que usamos esta llave principal para identificar dichas tuplas.

• Por tanto, los problemas mostrados en las Secciones Insert y Delete pueden aparecer.

• Si una foreign key se modifica, la base de datos debe asegurarse de que el nuevo valor hace referencia a una tupla existente en la relación referenciada (o es NULL).

Page 29: El modelo de datos relacional

Ejercicios 5.11.

Supongamos que las siguientes actualizaciones se aplican directamente a la base dedatos mostrada en la Figura 5.6. Comente todas las restricciones de integridad que se violan en cada una de ellas, en caso de que existan, y las distintas formas dehacer que se cumplan. 1. Insert <'Roberto', 'Flandes', 'Martín', '943775543', '21-06-1952', 'Campanillas,

189',H, 58000, '888665555', 1> into EMPLEADO. 2. Insert <'ProductoA', 4, 'Buenos Aires', 2> into PROYECTO. 3. Insert <'Producción', 4, '943775543', '01-10-1998'> into DEPARTAMENTO. 4. Insert <'677678989', NULL, '40.0'> into TRABAJA_EN. 5. Insert <'453453453', 'Juan', 'Maltín', '12-12-1970', 'Cónyuge'> into SUBORDINADO. 6. Borrar las tuplas TRABAJA_EN cuyo DniEmpleado = '333445555'.

Page 30: El modelo de datos relacional

Ejercicios 5.11.

1. Borrar la tupla EMPLEADO cuyo Dni = '987654321'. 2. Borrar la tupla PROYECTO cuyo NombreProyecto = 'ProductoX'. 3. Modificar DniDirector y FechalngresoDirector de la tupla

DEPARTAMENTO cuyo NumeroDpto = 5 por' 123456789' Y '01-10-1999', respectivamente.

4. Modificar el atributo SuperDni de la tupla EMPLEADO con Dni = '999887777' a '943775543'.

5. Modificar el atributo Horas de la tupla TRABAJA_EN con DniEmpleado = '999887777' Y NumProy = 10 a '5.0'.

Page 31: El modelo de datos relacional