tema 3: el modelo relacional de base de datosdecsai.ugr.es/~mbautis/biblio/tema3-2004-2005.pdf ·...
Post on 29-Jul-2020
5 Views
Preview:
TRANSCRIPT
Tema 3: El modelo relacional deBase de Datos
La estructura relacionalRestricciones de integridadLenguajes de ConsultaAlgebra relacionalPaso de Diagrama E/R a Modelo Relacional
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 2Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
La estructura de datos relacional
El concepto de tabla: tuplas, atributos y dominios
El modelo de datos relacional organiza y representa los datos
en forma de tablas o relaciones.
Base de datos relacional: colección de tablas cada una de las
cuales tiene un nombre único.
Id_trabajador Nombre Tarifa_hr Tipo_de_oficio Id_supv
1235 M. López 12,50 Electricista 1311
1412 J.L. Calvo 13,75 Fontanero 1520
2920 N. Marín 10,00 Carpintero Nulo
3231 O. Pons 17,40 Albañil Nulo
1540 M.A. Vila 11,75 Fontanero Nulo
1311 J.C. Cubero 15,50 Electricista Nulo
3001 D. Sánchez 8,20 Albañil 3231
Figura 1: Tabla Trabajadores
Atributo
Dominio Tupla
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 3Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
La estructura de datos relacional
En general, Trabajadores contendrá únicamente un subconjunto del
conjunto de todas las filas posibles que es D1xD2xD3xD4xD5.
Cualquier tabla de n columnas debe ser un subconjunto de
D1xD2x...xDn-1xDn.
Para describir la estructura de una relación de forma rápida,
usaremos la siguiente notación:
Nombre_de_la_relación(atributo1, ..., atributon)
Por ejemplo, podemos considerar la siguiente base de datos:
Trabajadores(id_trabajador,nombre,trf_hr,tipo_de_oficio,id_supv)
Edificios(id_edificio, dir_edificio, tipo, nivel_calidad, categoria)
Asignaciones(id_trabajador, id_edificio, fecha_inicio, num_dias)
Oficios(tipo_de_oficio, prima, horas_por_sem)
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 4Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
La estructura de datos relacional
Esquema de la base de datos: conjunto de tablas que
representan nuestro problema.
Algunas veces no se conoce el valor de un atributo para una
determinada tupla. En esos casos a ese atributo de esa tupla se
le asigna un valor nulo.
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 5Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Claves de una relación
Superclave: Cualquier conjunto de atributos que identifica
unívocamente a cada tupla de una relación.
Clave de una relación: superclave minimal.
Por ejemplo, en la relación Trabajadores, el conjunto de
atributos {id_trabajador, nombre} identifica unívocamente
cada tupla. Sin embargo, no es minimal y no puede
considerarse como una clave. Id_trabajador por sí sólo es una
clave.
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 6Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Claves de una relación
En una relación dada puede que más de un conjunto de
atributos puedan ser elegidos como clave. Estos conjuntos de
atributos se llaman claves candidatas.
Cuando hay más de una clave candidata, hay que seleccionar
una como principal. Esta clave recibe el nombre de clave
primaria de la tabla.
Completamos la notación para describir una relación,
subrayando los atributos que forman su clave primaria:
Trabajador(id_trabajador, nombre, trf_hr, tipo_de_oficio, id_supv)
Edificios(id_edificio, dir_edificio, tipo, nivel_calidad, categoria)
Asignaciones(id_trabajador, id_edificio, fecha_inicio, num_dias)
Oficios(tipo_de_oficio, prima, horas_por_sem)
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 7Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Claves de una relación
Clave externa (ajena): conjunto de atributos en una relación
que es una clave en otra (o incluso en la misma) relación.
Podemos ver una clave externa como un conjunto de atributos
de una relación cuyos valores en las tuplas deben coincidir con
valores de la clave primaria de las tuplas de otra relación.
Trabajador(id_trabajador, nombre, trf_hr, tipo_de_oficio, id_supv)
Claves externas: tipo_de_oficio referencia a Oficios e
id_supv referencia a Trabajadores
Edificios(id_edificio, dir_edificio, tipo, nivel_calidad, categoria)
Asignaciones(id_trabajador, id_edificio, fecha_inicio, num_dias)Claves externas: id_trabajador referencia a Trabajadores e
id_edificio referencia a Edificios
Oficios(tipo_de_oficio, prima, horas_por_sem)
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 8Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Restricciones de integridad: Integridad de Entidad
Integridad de entidad
No se debe permitir que una entidad sea representada en la
base de datos si no se tiene una información completa de los
atributos que son claves de la entidad-> la clave primaria, o
una parte de la misma, no puede ser un valor nulo.
Un atributo que forma parte de la clave primaria de una tupla
en una relación no puede tener un valor nulo.
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 9Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Restricciones de Integridad:Integridad Referencial
Integridad referencial:
Una base de datos en la que todos los valores no nulos de una
clave externa referencian valores reales de la clave referenciada en
la otra relación cumple la regla de integridad referencial:
Toda clave externa puede o ser nula, o su valor debe
corresponderse con el
valor real de una clave en la relación de referencia.
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 10Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Lenguajes de consulta
Un lenguaje de consulta es un lenguaje que permite al usuario
solicitar información de la base de datos.
Son normalmente de más alto nivel que los lenguajes estándar
de programación.
Los lenguajes de consulta pueden clasificarse en lenguajes
procedimentales o no procedimentales.
En un lenguaje procedimental, el usuario da instrucciones al
sistema para que realice una secuencia de operaciones en la
base de datos para calcular el resultado deseado.
En un lenguaje no procedimental, el usuario describe la
información deseada sin dar un procedimiento específico para
obtener esa información.
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 11Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Algebra relacional
Operaciones del álgebra relacional
Manipulan relaciones. Usan una o dos relaciones existentes
para crear una relación nueva.
Esta nueva relación puede entonces usarse como entrada para
una nueva operación.
El álgebra relacional consta de las siguientes nueve
operaciones: unión, intersección, diferencia, producto,
selección, proyección, reunión, división y asignación.
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 12Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Paso de Diagrama E/R al Modelo Relacional: Tipos de Entidad
Traducción de un TIPO DE ENTIDAD FUERTE
Sea E un tipo de entidad fuerte con atributos a1, a2, ..., an. Representamos dicho tipo por medio de una tabla llamada E,
donde cada tupla es una ocurrencia del tipo y está caracterizada por n columnas distintas, una por cada atributo.
Cuenta NUM_CTA SALDO250 15000365 2550214 4200410 1000100 500
númerosaldo
NOMBRE S_SOCIAL CALLE CIUDADLópez 27/48129 Arabial GRANADASánchez 24/31200 Mayor MOTRILPereira 40/31903 Sol ALMUÑECARMedina 12/71240 Alta ADRARomero 45/7324 Gran Vía GUADIX
Cliente
nombres_socialcalleciudad
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 13Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Paso de Diagrama E/R al Modelo Relacional: Tipos de Entidad
Traducción de un TIPO DE ENTIDAD DÉBIL
Sea A un tipo de entidad débil con atributos a1, a2, ..., an. Sea B el tipo de entidad fuerte del que A depende, y sean b1, b2, ..., bm los
atributos de la clave primaria de B. Representamos A por una tabla con una columna por cada atributo del conjunto siguiente:
{a1,a2, ..., an}∪{b1, b2, ..., bm}
Cuenta MovimientoTiene
1..1 0..*número (CP)saldo
número (CP)fechacantidad
NUM_CTA NUM_MOV FECHA CANTIDAD259 5 11-5-93 +500630 11 11-5-93 -5500401 22 23-5-93 -200700 69 25-5-93 +900259 6 5-6-93 -12000
6
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 14Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Paso de Diagrama E/R al Modelo Relacional: Tipos de Entidad
Claves de un TIPO DE ENTIDAD FUERTE
La clave primaria de la tabla correspondiente está constituida por los atributos que forman la clave primaria en el tipo de entidad.
Cliente
nombres_social (CP)calleciudad
Cliente(nombre,s_social, calle, ciudad)
Claves de un TIPO DE ENTIDAD DÉBIL
La clave primaria de la tabla correspondiente está constituida por los atributos que forman la clave primaria en el tipo de entidad del que
depende, más los campos necesarios del tipo de entidad débil del que deriva la tabla. Hay que generar también una clave externa.
Cuenta MovimientoTiene
1..1 0..*número (CP)saldo
número (CP)fechacantidad
Movimiento(num_cta, num_mov, fecha, cantidad)num_cta es una clave externa que apunta a la clave primaria de Cuenta
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 15Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Paso de Diagrama E/R al Modelo Relacional: Tipos de Relación
Traducción de un TIPO DE RELACIÓN
Sea R un tipo de relación que conecta los tipos de entidad E1, ..., Em. Entonces, la tabla para R contiene n columnas donde:
n=n1+n2+...+nm+nR dondeni=número de atributos de la clave primaria del tipo de entidad Ei.
nR=número de atributos propios del tipo de relación.Si un tipo de entidad interviene varias veces, hay que cambiar el
nombre de los atributos para evitar confusiones.
1..* 0..*
Tiene Cuenta
número (CP)saldo
Cliente
nombres_social (CP)calleciudad
fecha
SEG_SOCIAL NUM_CTA FECHA37/48129 259 14-4-9124/31200 630 12-8-9040/31903 401 13-7-8512/71240 199 12-6-9037/48129 700 13-12-89
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 16Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Paso de Diagrama E/R al Modelo Relacional: Tipos de Relación
Traducción de un TIPO DE RELACIÓN
TE1 TE2NombreLI..LS LI..LS
....
La clave primaria de la tabla correspondiente depende de los límites superiores que intervienen en la relación:
Caso 1: Todos los límites superiores son * (relaciones muchos a muchos)La clave primaria está formada por la unión de todos los atributos que forman las claves primarias de los tipos de entidad que intervienen en la relación. En su caso puede que haya que añadir algunos atributos de la relación.
Caso 2: Alguno de los límites superiores es 1 (relaciones muchos a uno)La clave primaria está formada por la unión de todos los atributos que forman las claves primarias de los tipos de entidad que intervienen en la relación con cardinalidad muchos. Si no hay, se toma como clave primaria cualquiera de las claves de los tipos que intervienen.
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 17Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Paso de Diagrama E/R al Modelo Relacional: Tipos de Relación
TrabajaEnSucursal
número(CP)dirección...
Empleados
número(CP)D.N.I.dirección...
1..1 1..*
TrabajaEn(núm_suc, núm_emp)num_suc es una clave externa que apunta a la clave primaria de Sucursal
num_emp es una clave externa que apunta a la clave primaria de Empleados
1..* 0..*
Cta_Cliente Cuenta
número (CP)saldo
Cliente
nombres_social (CP)calleciudad
fecha
Cta_Cliente(s_social, num_cuenta, fecha)s_social es una clave externa que apunta a la clave primaria de Cliente
num_cuenta es una clave externa que apunta a la clave primaria de Cuenta
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 18Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Paso de Diagrama E/R al Modelo Relacional: Herencia
Traducción de relaciones de HERENCIA
Existen dos técnicas:1) Crear una tabla por cada tipo de entidad, donde cada subclaseincorpora además los atributos de la superclase que forman la clave primaria.2) Crear una tabla por cada por cada subclase, incluyendo en cada una todos los atributos de la superclase.
Empleados
número(CP)D.N.I.dirección...
Gestormesaárea...
Cajerocajaturno...
Empleados(número, D.N.I., dirección)
Gestor(número, mesa, área)
Cajero(número, caja, turno)
Las restricciones de obligatoriedad y exclusividad pueden impedir o aconsejar el uso de una u otra alternativa
Gestor(número, D.N.I, dirección, mesa, área)
Cajero(número, D.N.I., dirección, caja, turno)
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 19Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Paso de Diagrama E/R al Modelo Relacional: Herencia
Traducción de relaciones de HERENCIA
Sea cual sea la alternativa, la clave primaria es la de la superclase, tanto en la tabla creada para la superclase (en su caso) como en cada una de las tablas de las subclases.
Empleados
número(CP)D.N.I.dirección...
Gestormesaárea...
Cajerocajaturno...
Empleados(número, D.N.I., dirección)
Gestor(número, mesa, área)
Cajero(número, caja, turno)
Tanto en la tabla Gestor como en la tabla Cajero, número es una clave externa que apunta a la clave primaria de Empleados.
Gestor(número, D.N.I, dirección, mesa, área)
Cajero(número, D.N.I., dirección, caja, turno)
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 20Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Omisión de la creación de tablas
Tipos de relación con cardinalidades superiores muchos a uno
Si la relación es binaria de uno a muchos entre los tipos de entidad E1 y E2, sin atributos descriptivos, se puede omitir la creación de la tabla para el tipo relación si en la tabla de E2 se añaden los atributos de la clave de E1.
Tipos de relación con cardinalidades superiores uno a uno
Si la relación es binaria de uno a uno entre E1 y E2, sin atributos descriptivos, se puede omitir la creación de la tabla para el tipo relación si en una de las dos tablas (la de E1 o la de E2) se añade la clave primaria de la otra.
TrabajaEn
1..1 1..*Empleados
número(CP)D.N.I.dirección...
Sucursal
número(CP)dirección...
Empleados(número, D.N.I., dirección, num_suc)num_suc es una clave externa que apunta a la clave primaria de Sucursal
HAY QUE SOPESAR LOS NULOS QUE PUEDEN APARECER CON EL AHORRO
QUE SUPONE LA NO DUPLICACIÓN DE UNA DE LA CLAVES
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 21Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Ejemplos
Alimento
código (CP)nombre
Ingrediente
nombre (CP)composición
Compone
0..* 1..*
AtletanombreD.N.I.(CP)edadalturapeso
Equipo Nacionalpaís (CP)colormarca0..*
Pertenece
1..1
Prueba
código (CP)título
1..*Participa
1..*
1..*
1..*Consume
Instalaciónnombretipocategoríalocalización
fase (CP)fechahora
cantidad
Sede0..* 1..*
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 22Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Ejemplos
Tablas para tipos de entidad:Alimento(código, nombre)Ingrediente(nombre, composición)Atleta(nombre, D.N.I., edad, altura, peso)Equipo(país, marca, color)Prueba(código, título)Instalación(nombre, tipo, categoría, localización)
Tablas para tipos de relación:Compone(cod_alimento, nom_ingrediente)Consume(cod_alimento, D.N.I., cantidad)Pertenece(cod_atleta, país)
Alternativa: Atleta(nombre, D.N.I., edad, altura, peso, país)Participa(cod_atleta, cod_prueba)Sede(cod_prueba, nom_instalación, fase, fecha, hora)
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 23Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Ejemplos
Profesor
D.N.I.(CP)nombredirección
P_Teoría
%aprobadosdisponibilidad
P_Prácticas
fumadorpeligrosidad
{Obl,Y}
Aula
número (CP)capacidad
Cochematrícula (CP)modelocolor
AlumnonombreD.N.I. (CP)teléfono
Fecha (CP)Hora (CP)
Material
código (CP)tipo
cantidad
0..* 1..11..1
0..* 0..*
1..10..*1..1
hora
0..*
0..*
Pupilo
Tiene
Usa
Utiliza
Conduce
Nicolás Marín Ruiz, María José Martín BautistaDepartamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Tema 3 – página 24Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Granada
Ejemplos
Tablas para tipos de entidad:Alternativa 1:
Profesor(D.N.I., nombre, dirección)P_Teoría(D.N.I., %aprobados, disponibilidad)P_Prácticas(D.N.I., fumador, peligrosidad)
Alternativa 2: ¿Qué defecto tiene?P_Teoría(D.N.I., nombre, dirección, %aprobados, disponibilidad)P_Prácticas(D.N.I., nombre, dirección, fumador, peligrosidad)
Aula(número, capacidad)Alumno(D.N.I., nombre, teléfono)Coche(matrícula, modelo, color)Material(código, tipo)
Tablas para tipos de relación:Usa(D.N.I., num_aula, hora)Pupilo(D.N.I._Prof, D.N.I._Alumno)
Alternativa: Alumno(D.N.I., nombre, teléfono, D.N.I._Prof)Utiliza(D.N.I., matrícula)
Alternativa: Coche(matrícula, modelo, color, D.N.I.)
óP_Prácticas(D.N.I., fumador, peligrosidad, matrícula)
Conduce(D.N.I., matrícula, fecha, hora)Tiene(num_aula, cód_material, cantidad)
top related