Modelo relacional El modelo relacional Representa la BD como una colección de relaciones En términos informales, cada relación semeja una tabla Tupla Cada fila de la tabla Representa una colección de datos relacionados entre sí Cada tupla es una lista ordenada de valores Atributo Cada cabecera de columna 2 1 Dominios Describen los tipos de valores que pueden aparecer en una columna Un dominio D es un conjunto de valores atómicos Debe tener Nombre Definición lógica Tipo de datos Formato Ejemplo: números telefónicos Definición lógica: conjunto de números de teléfono de 9 dígitos válidos en Madrid Tipo de datos: cadena de enteros Formato: 91-ddd dd dd 3 Esquema y ejemplar Esquema de relación Sirve para describir una relación Se compone de nombre de relación y lista de atributos R(A1,A2, ...., An) Ejemplo ESTUDIANTE(dni,nombre,tfno,direccion,email) Grado de una relación Número de atributos de su esquema de relación Ejemplo – ESTUDIANTE – grado 5 Ejemplar de relación r del esquema de relación R(A1,A2, ...., An) Conjunto de tuplas Lo representamos en forma de tabla 4 2 Esquema y ejemplar de BD Esquema de una base de datos S Conjunto de esquemas de relaciones y un conjunto de restricciones de integridad RI S = {R1,R2, ...., Rn} Ejemplar de base de datos relacional Conjunto de ejemplares de relaciones BD={r1,r2, ...., rn} tal que cada ri es un ejemplar de Ri y tal que las relaciones ri satisfacen las restricciones de integridad RI 5 Valores nulos Un valor “nulo” para un atributo quiere decir Que se desconoce el valor del atributo para esa tupla, o Que ese atributo no es aplicable a esa tupla (por ejemplo, un empleado puede no tener supervisor) 6 3 Claves Superclave Conjunto de atributos que identifican de forma única cada tupla de la relación Clave Conjunto mínimo de atributos que identifican de forma única cada tupla de la relación Mínimo – ningún subconjunto de la clave identifica de forma única cada fila de la relación Clave primaria Puede haber varias claves candidatas – la que se elige se llama clave primaria 7 Claves (II) Clave externa o extranjera (foreign key) Conjunto de atributos de una relación que forman parte de la clave de otra relación Puede haber claves externas recursivas que referencian su propia relación Ejemplo: supervisor 8 4 Ejemplo EMPLEADO dni nombree dirección sexo salario fecha_nac dni_super numerod DEPARTAMENTO numerod nombred dni_dir fecha_ini LUGARES numerod lugar PROYECTO numerop nombrep lugar numerod TRABAJA_EN dni numerop horas FAMILIAR dni nombref sexo fecha_nac parentesco 9 Restricciones 1. Una restricción es una regla que restringe los valores que pueden aparecer en una base de datos Restricciones de dominio 2. Restricciones de clave 3. Especifican que el valor de cada atributo A debe ser un valor atómico del dominio(A) El valor de la clave debe ser único para cada tupla Restricciones de integridad de entidades Ningún valor de clave primaria puede ser nulo (si dos o mas tuplas tuvieran nulo en su clave, tal vez no podríamos distinguirlas) 10 5 Restricciones (II) 4. Restricciones de integridad referencial 5. El valor de una clave externa debe corresponder a un valor existente en la tabla correspondiente (sirve para mantener la consistencia entre las dos relaciones) Restricciones de integridad semántica Ejemplos El salario de un empleado no debe exceder el salario de su supervisor El número máximo de horas que un empleado puede trabajar por semana en todos los proyectos es 56 11 Operaciones de actualización INSERTAR Se pueden violar los cuatro tipos de restricciones Dominio Clave – insertar empleado con dni que ya existe Integridad de entidades – nulo en dni Integridad referencial empleado con un nd que no está en la tabla DEPARTAMENTO Si una inserción viola una o más restricciones – dos opciones Rechazar la inserción Corregir la razón por la que se violan las restricciones y aceptar la inserción 12 6 Operaciones de actualización (II) ELIMINAR Sólo se puede violar la integridad referencial si las claves externas de otras tuplas hacen referencia a la tupla que se va a eliminar Ejemplo: eliminar empleado ⇒ TRABAJA_EN Tres opciones Rechazar la eliminación Tratar de propagar la eliminación eliminando las tuplas a que hace referencia Modificar los valores del atributo de referencia (por ejemplo, poner a NULL. Cuidado si es clave primaria) 13 Operaciones de actualización (III) MODIFICAR Si el atributo no es clave primaria ni clave externa, no hay problema Sólo comprobar restricciones de dominio Si clave primaria ⇒ equivale a eliminar + insertar ⇒ problemas ya vistos Si clave externa ⇒ comprobar restricciones de integridad referencial 14 7