Modelo relacional El modelo relacional

Anuncio
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
Descargar