Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Diseño Logico
Diseño Logico
1. Introduccin
Diseo lgico: conversin del esquema conceptual de datos en un esquema lgico. Objetivo: obtener una representacin que use de la manera ms eficiente posible los recursos para la estructuracin de datos y el modelado de restricciones disponibles en el modelo lgico. esquema conceptual informacin de la carga criterios de rendimiento Informacin de la carga
Volumen de la base de datos. Conocimiento de consultas y transacciones a realizar, y su frecuencia.
DISEO LGICO
esquema lgico
Criterios de rendimiento Tiempo de respuesta medio o mximo. Espacio de almacenamiento ocupado por la base de datos. Utilizacin de CPU o tiempo de E/S.
Tema 7. Diseo lgico de bases de datos relacionales 2
1. Convertir los esquemas conceptuales locales en esquemas lgicos locales (a) Sustituir cada relacin entre tres o ms entidades por una entidad intermedia. La cardinalidad de las nuevas relaciones binarias depender de su significado. Si la relacin sustituida tiene atributos, stos sern los atributos de la nueva entidad.
fecha (0,n) PILOTO codpil nombre viaje (0,n) codavi TRIPULACIN codtrip nombre codpil PILOTO (0,n) (1,1) matrcula fecha AVIN (1,1) (0,n) codavi (0,n) TRIPULACIN codtrip nombre matrcula (0,n) AVIN
viaje (1,n)
nombre
(1,1)
ANIMAL
(1,1)
pertenece (1,n)
(1,n)
alberga
(1,n)
ESPECIE
(1,n)
residencia
(0,n)
CIUDAD
(0,n)
2. Derivar un conjunto de relaciones para cada esquema lgico local (a) Cada entidad del esquema conceptual se transforma en una relacin base (tabla). Los atributos de la entidad se convierten en los atributos de la tabla. Cada componente de un atributo compuesto se convierte en un atributo de la tabla. Por cada atributo con cardinalidad mxima mayor que uno se incluye una tabla dentro de la tabla, como un atributo ms. De entre los identificadores de la entidad se debe escoger uno como clave primaria de la tabla.
isbn edicin (1,n) LIBRO (1,n) nmero ao ttulo_ppal ttulo editorial autor idioma subttulo
(0,1)
a3
a1
a2
a4
a1
a2
a5
a1
(1) Una tabla por cada entidad. Sirve para cualquier tipo de jerarqua (t/p, e/s). E(a1, a2) , E1(a1, a3) , E2(a1, a4) , E3(a1, a5)
E1.a1, E2.a1, E3.a1 son claves ajenas a E
Nulos Borrado
(2) Una tabla por cada subentidad. Slo sirve para jerarquas totales y exclusivas. E1(a1, a2, a3) , E2(a1, a2, a4) , E3(a1, a2, a5) (3) Integrar todas las entidades en una tabla. Sirve para cualquier tipo de jerarqua (t/p, e/s). E(a1, a2, a3, a4, a5, tipo) si es exclusiva; a3, a4, a5 aceptan nulos; tipo acepta nulos si es parcial. E(a1, a2, a3, a4, a5, AD(tipo) ) si es superpuesta; a3, a4, a5 aceptan nulos;
Tema 7. Diseo lgico de bases de datos relacionales 8
(c) Por cada relacin binaria (1:1), incluir la clave primaria de la tabla correspondiente a la entidad padre en la tabla de la entidad hijo como una clave ajena. Y los atributos de la relacin?
hijo (0,1) EMPLEADO (1,1) VEHCULO
conduce
codemp nombre
fecha_ini
matrcula
modelo
codemp nombre
fecha_ini
matrcula
modelo
EMPLEADO(codemp, nombre )
nulos?
conduce
codemp nombre
fecha_ini
matrcula
modelo
VEHCULO(matrcula, modelo, codemp, fecha_ini) codemp Nulos Borrado VEHCULO EMPLEADO son tan diferentes?
VEHCULO(matrcula, modelo)
nulos?
codemp nombre
fecha_ini
matrcula
modelo
Y si las dos entidades participan con cardinalidad (0,1)? Y si son ambas (1,1)?
Tema 7. Diseo lgico de bases de datos relacionales 10
Ojo: Si las entidades relacionadas son sinnimos, integrarlas en una sola tabla.
codcli CLIENTE nombre (0,1) (1,1) ENVO direccin
direccin
CLIENTE(codcli, direccin, nombre, direccin_envo) ENVO es una entidad dbil porque no tiene atributos que le sirvan como identificador.
acompaa_a codper nombre (0,1) PERSONA (1,1) es_acompaada_por
Tema 7. Diseo lgico de bases de datos relacionales 11
Ejercicio
(d) Por cada relacin binaria (1:n), incluir la clave primaria de la tabla correspondiente a la entidad padre en la tabla de la entidad hijo (ser una clave ajena). Y los atributos de la relacin?
padre (0/1,n) (1,1)
tutor
fecha
ocupa
fecha
12
nulos? PROFESOR(codpro, nombre) ESTUDIANTE codest nombre ESTUDIANTE(codest, nombre, codpro, fecha) ESTUDIANTE codpro
Nulos Borrado
tutor
fecha
PROFESOR
nulos? HABITACIN(numhab, edificio) ESTUDIANTE codest nombre ESTUDIANTE(codest, nombre, numhab, fecha) ESTUDIANTE numhab
Nulos Borrado
ocupa
fecha
HABITACION
Y si hay muy pocos estudiantes que viven en una habitacin del campus?
Tema 7. Diseo lgico de bases de datos relacionales 13
Ejercicios
(0/1,n) (,?)
codcli
14
(e) Por cada relacin binaria (m:n), incluir una nueva tabla con una clave ajena a cada una de las tablas correspondientes a las entidades participantes. La clave primaria, la clave primaria ... cul es la clave primaria? Y los atributos de la relacin?
ASIGNATURA codasi nombre (0,n) cursa (1,n) ESTUDIANTE nombre
codest
(1,n)
(0,n) cita
PACIENTE
codpac nombre fecha
MDICO
codmed hora nombre
15
ASIGNATURA
(0,n)
cursa
(1,n)
ASIGNATURA(codasi, nombre)
ESTUDIANTE nombre
ESTUDIANTE(codest, nombre) CURSA(codest, codasi) codest CURSA ESTUDIANTE codasi CURSA ASIGNATURA PACIENTE(codpac, nombre) MDICO(codmed, nombre) CITA(codmed, fecha, hora, codpac) codmed CITA MDICO codpac CITA PACIENTE Nulos Borrado Nulos Borrado
codasi
nombre
codest
(1,n)
(0,n) cita
PACIENTE
codpac nombre fecha
MDICO
codmed hora nombre
16
La clave ajena se debe poner en la tabla correspondiente a la entidad que La clave ajena se puede poner en Poner una clave ajena cualquiera de las tablas. La tabla que participa en la relacin binaria con Para este tipo de relaciones en la tabla correspon- recibe la clave ajena tambin recibe cardinalidad mxima 1. Los atributos binarias no se puede escoger diente a una de las de la relacin binaria se ponen como esta opcin. los atributos de la relacin binaria. entidades participantes OJO: es posible que algunos atributos atributos en la tabla que recibe la en la relacin binaria. deban aceptar nulos. clave ajena. OJO: es posible que algunos atributos deban aceptar nulos. Es lo ms aconsejable cuando ambas entidades participan en la relacin de Aadir al esquema una forma opcional y hay pocas ocurrennueva tabla en la que cias de la misma. Esta nueva tabla se refleje la relacin tiene una clave ajena a cada una de binaria. las dos tablas y tambin los atributos de la relacin binaria. La nueva tabla tiene una clave ajena a cada una de las dos tablas y tambin los atributos de la relacin binaria. La clave primaria de la nueva tabla ser la clave ajena que hace referencia a la tabla de la entidad que participa en la relacin binaria con cardinalidad mxima 1. Esta nueva tabla tiene una clave ajena a cada una de las dos tablas y tambin los atributos de la relacin binaria. La clave primaria variar segn el significado de la relacin binaria (hay que "meditarla").
17
Continuamos con la metodologa de diseo lgico ... 3. Validar cada esquema lgico local mediante la normalizacin. 4. Validar cada esquema frente a las transacciones del usuario. 5. Dibujar el diagrama entidad relacin. 6. Definir las restricciones de integridad. (a) Datos requeridos. (b) Restricciones de dominios. (c) Integridad de entidades. (d) Integridad referencial. (1) Regla de los nulos (S admite / No admite). (2) Regla del borrado (Restringir / Propagar / Anular). (3) Regla de la modificacin (Restringir / Propagar / Anular). (e) Reglas de negocio.
Tema 7. Diseo lgico de bases de datos relacionales 18
Continuamos con la metodologa de diseo lgico ... 7. Revisar cada esquema lgico local con el usuario. Utilizar los DFD para comprobar la consistencia y completitud de los esquemas lgicos. 8. Mezclar los esquemas lgicos locales en un esquema lgico global. 9. Validar el esquema lgico global. 10. Estudiar el crecimiento futuro. 11. Dibujar el diagrama entidad/relacin final. 12. Revisar el esquema lgico global con los usuarios.
19
3. Normalizacin
Tcnica para disear bases de datos relacionales. Se debe a Codd (1972). No se utiliza como una estrategia de diseo de bases de datos. Se utiliza para verificar esquemas relacionales. Ventajas 9 Evita anomalas en inserciones, modificaciones y borrados. 9 Mejora la independencia de datos.
20
Fecha: 16/2/99
Deseamos enven: Nmero producto 511246 124456 124763 Descripcin Televisin Clavija antena Enchufe Precio unitario 70.000 100 150 Cantidad 1 10 10 Total 70.000 1.000 1.500
21
PEDIDO (npedido, nprov, nomprov, dirprov, fecha, LNEA (nproducto, descrip, precio, cant, total), importe) PEDIDO LNEA x x x x x
x x x x x x x x x x x x x x x
PEDIDO (npedido, nprov, nomprov, dirprov, fecha, importe) LNEA (npedido, nproducto, descrip, precio, cant, total)
PEDIDO npedido x x x x x x x x x x x x
x x x x
x x x x
x x x x
23
PEDIDO (npedido, nprov, nomprov, dirprov, fecha, importe) LNEA (npedido, nproducto, descrip, precio, cant, total)
LNEA
npedido
PEDIDO
Guardar nuevo producto. Producto n 511944, Reproductor de vdeo, 35.000 pesetas. Modificar el precio de un producto. Producto n 511246, Televisin, 68.000 pesetas. Eliminar la nica compra de un producto: Producto n 124763, Enchufe, 150 pesetas. Anomalas en las actualizaciones de datos!
24
PEDIDO (npedido, nprov, nomprov, dirprov, fecha, importe) LNEA (npedido, nproducto, cant, total) PRODUCTO (nproducto, descrip, precio)
LNEA npedido PEDIDO LNEA nproducto PRODUCTO
Guardar nuevo proveedor. Proveedor n 5194, Don Proveedor, Jtiva. Modificar la direccin de un proveedor. Proveedor n 9876, Productos Surtidos, Castelln de la Plana. Eliminar la nica compra realizada a un proveedor. Anomalas en las actualizaciones de datos!
25
PEDIDO (npedido, nprov, fecha, importe) LNEA (npedido, nproducto, precio, cant, total) PRODUCTO (nproducto, descrip, precio) PROVEEDOR (nprov, nomprov, dirprov) nprov npedido nproducto
26
Dependencia funcional
Y es funcionalmente dependiente de X, si X determina el valor de Y: X
Ejemplo: CLIENTE(codcli, nombre, codpostal, poblacin) codpostal poblacin
Observaciones La dependencia funcional es una nocin semntica. Cada dependencia funcional es una clase especial de regla de integridad. Cada dependencia funcional representa una relacin de uno a muchos.
27
1FN
Se descompone en:
PRODUCTO (codprod, nombre, descripcin) VERSIN (codprod, nmero, fecha, ventas)
OJO
Tema 7. Diseo lgico de bases de datos relacionales
VERSIN
codprod
Nulos
Borrado
PRODUCTO
28
precio
precio 1500 1500 1500 5000
INSCRIPCIN
Tema 7. Diseo lgico de bases de datos relacionales
ACTIVIDAD
29
3FN
inquilino
edificio alquiler
alquiler
alquiler 50.000 50.000 65.000 50.000
INQUILINO
Tema 7. Diseo lgico de bases de datos relacionales
EDIFICIO
30
Ejercicio de normalizacin
estudiante nombre apellido DNI direccin codbeca nombeca requisito fecha
0123 7636 7636 7636 0123 9516 0123 9516 0123 3361 ...
Carlos Paula Paula Paula Carlos Andrs Carlos Andrs Carlos Luca ...
Gil Tena Tena Tena Gil Calpe Gil Calpe Gil Porcar ...
159357 913752 913752 913752 159357 682432 159357 682432 159357 243115 ...
C/ Paz, 23 C/ Ro Po, 1 C/ Ro Po, 1 C/ Ro Po, 1 C/ Paz, 23 Plz. Sol, 40 C/ Paz, 23 Plz. Sol, 40 C/ Paz, 23 Plz. Sol, 26 ...
A223 B567 A223 G654 G654 G654 B567 B567 A223 A223 ...
EEUU ERASMUS EEUU DRAC DRAC DRAC ERASMUS ERASMUS EEUU EEUU ...
Ing. Sup. Ing. Tc. Ing. Sup. Ing. Sup. Ing. Sup. Ing. Sup. Ing. Tc. Ing. Tc. Ing. Sup. Ing. Sup. ...
10/10/98 12/11/98 14/10/98 15/09/99 17/09/98 12/09/99 12/11/98 23/11/99 12/10/99 12/10/99 ...
SOLICITUD (estudiante, codbeca, fecha, nombre, apellido, DNI, direccin, nombeca, requisito)
31
32
Desnormalizacin
Por ejemplo, se pueden fusionar las relaciones: CLIENTE(codcli, nombre, codpostal) y CODPOSTAL(codpostal, codpueblo) en una sola relacin: CLIENTE(codcli, nombre, codpostal, codpueblo) As se mejora el funcionamiento frente a la necesidad de hacer el JOIN de las dos tablas. Se notar ms la mejora cuanto ms frecuentes sean los accesos. Pero mucho OJO: se han introducido redundancias que ahora ser necesario controlar alguna idea sobre cmo hacerlo?
33
Particin de tablas
Por ejemplo, se puede descomponer la siguiente relacin: EMPLEADO(codemp, nombre, telfono, fecha_eval, aspecto1, aspecto2) en las relaciones: EMPLEADO(codemp, nombre, telfono) EVALUACION(codemp, fecha_eval, aspecto1, aspecto2) porque no se accede con frecuencia a los datos de la evaluacin de los empleados, o bien porque se quiere preservar la seguridad de los mismos. Y qu hacemos para el usuario que necesita ver la tabla tal y como estaba?
34
Optimizacin
UNIVERSIDAD(universidad, director, vicedirector) Cada universidad tiene un director y de uno a tres vicedirectores clave primaria? Hay una dependencia funcional no deseada: universidad director UNIVERSIDAD no se encuentra en 2FN debe descomponerse en: UNIVERSIDAD(universidad, director) ASISTENTE (universidad, vicedirector) Siempre que una aplicacin necesite informacin de la universidad, debe leer entre dos y cuatro filas de datos. Una alternativa que consigue mayor eficiencia es: UNIVERSIDAD(universidad, director, vicedirector1, vicedirector2, vicedirector3)
nulos?
Tema 7. Diseo lgico de bases de datos relacionales
nulos?
nulos?
35