Está en la página 1de 35

TEMA 7. DISEO LGICO DE BASES DE DATOS RELACIONALES 1. Introduccin 2. Metodologa de diseo lgico en el modelo relacional 3. Normalizacin 4.

Desnormalizacin, particin de relaciones y optimizacin

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

2. Metodologa de diseo lgico en el modelo relacional


1. Convertir los esquemas conceptuales locales en esquemas lgicos locales. 2. Derivar un conjunto de relaciones (tablas) para cada esquema lgico local. Construir y validar los esquemas lgicos locales para cada vista de usuario 3. Validar cada esquema 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. 7. Revisar cada esquema lgico local con el usuario correspondiente. 8. Mezclar los esquemas lgicos locales en un esquema lgico global. Construir y validar el 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.

Tema 7. Diseo lgico de bases de datos relacionales

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

Tema 7. Diseo lgico de bases de datos relacionales

(b) Eliminar las relaciones redundantes.

posee (1,n) ZOO

(1,1)

ANIMAL

(1,1)

pertenece (1,n)

(1,n)

alberga

(1,n)

ESPECIE

(1,n)

residencia

(0,n)

EMPLEADO nacimiento (0,1)

CIUDAD

(0,n)

Tema 7. Diseo lgico de bases de datos relacionales

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

LIBRO(isbn, editorial, AUTOR(autor), idioma, ttulo_ppal, subttulo, EDICIN(nmero, ao))


Tema 7. Diseo lgico de bases de datos relacionales 6

(b) Hay tres opciones para representar las jerarquas de generalizacin.


E ( p/t, e/s ) E1 opcin (1) (0,1) (1,1) E1 a3 opcin (2) E1 E2 E3 E2 a4 a3 a4 a2 a5 (0,1) (0,1) (0,1) E (0/1,1/n) AD a3 E2 a4 a1 a2 (0,1) (1,1) E3 E3 a5 a1 a2

(0,1)

(1,1) a5 opcin (3) a1 a2

a3

a1

a2

a4

a1

a2

a5

a1

Tema 7. Diseo lgico de bases de datos relacionales

(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

hijo (1,1) EMPLEADO (0,1) VEHCULO


conduce

codemp nombre

fecha_ini

matrcula

modelo

Tema 7. Diseo lgico de bases de datos relacionales

hijo (0,1) EMPLEADO (1,1) VEHCULO

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?

hijo (1,1) EMPLEADO (0,1) VEHCULO


conduce

VEHCULO(matrcula, modelo)

nulos?

codemp nombre

fecha_ini

matrcula

modelo

EMPLEADO(codemp, nombre, matrcula, fecha_ini) Nulos Borrado matrcula EMPLEADO VEHCULO

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

son sinnimos!! nulos?

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)

PROFESOR codpro nombre

tutor

ESTUDIANTE codest nombre

fecha

padre (0/1,n) (0,1)

HABITACIN numhab edificio

ocupa

ESTUDIANTE codest nombre

fecha

Tema 7. Diseo lgico de bases de datos relacionales

12

padre (0/1,n) (1,1)

nulos? PROFESOR(codpro, nombre) ESTUDIANTE codest nombre ESTUDIANTE(codest, nombre, codpro, fecha) ESTUDIANTE codpro
Nulos Borrado
tutor

PROFESOR codpro nombre

fecha

PROFESOR

padre (0/1,n) (0,1)

nulos? HABITACIN(numhab, edificio) ESTUDIANTE codest nombre ESTUDIANTE(codest, nombre, numhab, fecha) ESTUDIANTE numhab
Nulos Borrado
ocupa

HABITACIN numhab edificio

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) (,?)

CLIENTE codcli nombre

CITA fecha hora

recomienda_a (0,n) nombre

codcli

CLIENTE (1,1) recomendado_por

Tema 7. Diseo lgico de bases de datos relacionales

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

Tema 7. Diseo lgico de bases de datos relacionales

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

Tema 7. Diseo lgico de bases de datos relacionales

16

Resumen de la correspondencia entre esquemas para las relaciones binarias


Relacin 1:1 Integrar las dos tablas correspondientes a cada una de las entidades participantes en la relacin binaria, en una sola tabla. Relacin 1:n Relacin n:m Para este tipo de relaciones binarias no se puede escoger esta opcin. Es lo ms aconsejable cuando ambas entidades tienen el mismo identifica- Para este tipo de relaciones binarias dor. Los atributos de la relacin binaria no se puede escoger esta opcin. tambin estarn en la tabla. OJO: es posible que algunos atributos deban aceptar nulos.

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").

Tema 7. Diseo lgico de bases de datos relacionales

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.

Tema 7. Diseo lgico de bases de datos relacionales

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.

Tema 7. Diseo lgico de bases de datos relacionales

20

Fecha: 16/2/99

Pedido n: Proveedor n: Nombre del proveedor: Direccin del proveedor:

123456 9876 Productos Surtidos Borriol, Castelln

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

Importe total: 72.500

Tema 7. Diseo lgico de bases de datos relacionales

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

Hay atributos que tienen valores de tipo relacin (tabla).


Tema 7. Diseo lgico de bases de datos relacionales 22

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

LNEA npedido nproducto x x x x x x x x x x x x

x x x x

x x x x

x x x x

Tema 7. Diseo lgico de bases de datos relacionales

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!

Tema 7. Diseo lgico de bases de datos relacionales

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!

Tema 7. Diseo lgico de bases de datos relacionales

25

PEDIDO (npedido, nprov, fecha, importe) LNEA (npedido, nproducto, precio, cant, total) PRODUCTO (nproducto, descrip, precio) PROVEEDOR (nprov, nomprov, dirprov) nprov npedido nproducto

PEDIDO LNEA LNEA

PROVEEDOR PEDIDO PRODUCTO

Tema 7. Diseo lgico de bases de datos relacionales

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.

Tema 7. Diseo lgico de bases de datos relacionales

27

Primera forma normal (1FN)


Una relacin est en 1FN si, y slo si, todos sus dominios contienen valores atmicos.
PRODUCTO
codprod LH4 nombre nmero Ladrillo hueco 1 2 3 LP7 Ladrillo perforado 1 2 VERSIN fecha 1/3/1996 1/8/1998 1/2/2000 1/6/1996 1/12/2000 ventas 30.000 50.000 13.000 70.000 grupos repetitivos (valores no atmicos)

PRODUCTO (codprod, nombre, VERSIN (nmero, fecha, ventas))

1FN

Se descompone en:
PRODUCTO (codprod, nombre, descripcin) VERSIN (codprod, nmero, fecha, ventas)
OJO
Tema 7. Diseo lgico de bases de datos relacionales

hereda la clave primaria

VERSIN

codprod

Nulos

Borrado

PRODUCTO
28

Segunda forma normal (2FN)


Una relacin est en 2FN si, y slo si, est en 1FN y, adems, cada atributo no clave depende completamente de la clave primaria (no depende de algn subconjunto). INSCRIPCIN (estudiante, actividad, precio) 2FN actividad
estudiante 100 100 200 300 actividad Tenis Yoga Tenis Escalada estudiante actividad precio

precio
precio 1500 1500 1500 5000

misma actividad, mismo precio.

Se descompone en las proyecciones: INSCRIPCIN (estudiante, actividad) y ACTIVIDAD (actividad, precio)


actividad
Nulos Borrado

INSCRIPCIN
Tema 7. Diseo lgico de bases de datos relacionales

ACTIVIDAD
29

Tercera forma normal (3FN)


Una relacin est en 3FN si, y slo si, est en 2FN y, adems, cada atributo no clave no depende transitivamente de la clave primaria. INQUILINO (inqulino, edificio, alquiler) edificio
inquilino 100 200 300 400 edificio E04 E13 E09 E04

3FN
inquilino

edificio alquiler

alquiler
alquiler 50.000 50.000 65.000 50.000

mismo edificio, mismo alquiler.

Se descompone en las proyecciones: INQUILINO (inqulino, edificio) y EDIFICIO (edificio, alquiler)


edificio
Nulos Borrado

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)

Tema 7. Diseo lgico de bases de datos relacionales

31

4. Desnormalizacin, particin de relaciones y optimizacin


A partir del esquema lgico obtenido y teniendo en cuenta el modelado de la carga ... Se pueden fundir varias relaciones en una si se usan juntas con frecuencia mediante operaciones de JOIN Desnormalizacin. Se pueden dividir algunas relaciones con el objeto de reorganizar la distribucin de los casos Particin Horizontal, o de los atributos Particin Vertical, de manera que una relacin incluya atributos o casos a los que se requiera acceso simultneo con frecuencia. Se pueden introducir otros cambios para conseguir un acceso ms eficiente Optimizacin.

Tema 7. Diseo lgico de bases de datos relacionales

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?

Tema 7. Diseo lgico de bases de datos relacionales

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?

Tema 7. Diseo lgico de bases de datos relacionales

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

También podría gustarte