Вы находитесь на странице: 1из 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
DISEO
informacin de la carga esquema lgico
LGICO
criterios de rendimiento

Informacin de la carga

Volumen de la base de datos.


Conocimiento de consultas y transacciones a realizar, y su frecuencia.

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 3. Validar cada esquema mediante la normalizacin.
los esquemas lgicos locales 4. Validar cada esquema frente a las transacciones del
para cada vista de usuario 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 9. Validar el esquema lgico global.
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 3


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) (0,n)
PILOTO viaje AVIN

(0,n)
codpil nombre codavi matrcula
TRIPULACIN fecha

(0,n) (1,1)
codtrip nombre PILOTO AVIN
viaje
(1,1) (0,n)
(1,n)
codpil nombre codavi matrcula

(0,n)
TRIPULACIN

codtrip nombre
Tema 7. Diseo lgico de bases de datos relacionales 4
(b) Eliminar las relaciones redundantes.

(1,1) (1,1)
posee ANIMAL pertenece

(1,n) (1,n)
(1,n) (1,n)
ZOO alberga ESPECIE

(1,n) (0,n)
residencia

EMPLEADO CIUDAD

nacimiento
(0,1) (0,n)

Tema 7. Diseo lgico de bases de datos relacionales 5


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
(1,n)
edicin LIBRO editorial

(1,n)
autor
ttulo
nmero ao
idioma

ttulo_ppal 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.
a1
E
a2
( p/t, e/s )

E1 a3 E2 a4 E3 a5

opcin a1
(1) E a2
(0,1) (0,1)
(0,1)

(1,1) (1,1) (1,1)


E1 E2 E3
a3 a4 a5

opcin opcin
(2) a3 (3)
(0,1)
E1 E2 E3 a1
a4 (0,1)
E
a2
a5 (0,1) (0/1,1/n)
a3 a1 a2 a4 a1 a2 a5 a1 a2
AD
Tema 7. Diseo lgico de bases de datos relacionales 7
(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)


Nulos Borrado
E1.a1, E2.a1, E3.a1 son claves ajenas a E

(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) (1,1)
EMPLEADO conduce VEHCULO

fecha_ini
codemp nombre matrcula modelo

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

fecha_ini
codemp nombre matrcula modelo

Tema 7. Diseo lgico de bases de datos relacionales 9


hijo
(0,1) (1,1)
nulos?
EMPLEADO(codemp, nombre )
EMPLEADO conduce VEHCULO
VEHCULO(matrcula, modelo, codemp, fecha_ini)
codemp Nulos Borrado
fecha_ini VEHCULO EMPLEADO
codemp nombre matrcula modelo

son tan diferentes?


hijo
(1,1) (0,1)
nulos?
EMPLEADO conduce VEHCULO VEHCULO(matrcula, modelo)
EMPLEADO(codemp, nombre, matrcula, fecha_ini)
fecha_ini Nulos Borrado
codemp nombre matrcula modelo 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 (0,1) (1,1)


CLIENTE ENVO son sinnimos!!

direccin nombre direccin nulos?

CLIENTE(codcli, direccin, nombre, direccin_envo)


ENVO es una entidad dbil porque no tiene atributos que le sirvan como identificador.

acompaa_a
Ejercicio
(0,1)
codper
PERSONA
nombre

(1,1)
es_acompaada_por

Tema 7. Diseo lgico de bases de datos relacionales 11


(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 tutor ESTUDIANTE

fecha
codpro nombre codest nombre

padre
(0/1,n) (0,1)
HABITACIN ocupa ESTUDIANTE

fecha
numhab edificio codest nombre

Tema 7. Diseo lgico de bases de datos relacionales 12


padre nulos?
(0/1,n) (1,1) PROFESOR(codpro, nombre)
PROFESOR tutor ESTUDIANTE ESTUDIANTE(codest, nombre, codpro, fecha)
Nulos Borrado
codpro
fecha
codest nombre ESTUDIANTE PROFESOR
codpro nombre

padre nulos?
(0/1,n) (0,1) HABITACIN(numhab, edificio)
HABITACIN ocupa ESTUDIANTE ESTUDIANTE(codest, nombre, numhab, fecha)
Nulos Borrado
numhab
fecha ESTUDIANTE HABITACION
numhab edificio codest nombre

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 CITA

codcli nombre fecha hora

recomienda_a
(0,n)
codcli CLIENTE
nombre

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

(0,n) (1,n)
ASIGNATURA cursa ESTUDIANTE

codasi nombre codest nombre

(1,n) (0,n)
PACIENTE cita MDICO

codpac nombre codmed nombre


fecha hora

Tema 7. Diseo lgico de bases de datos relacionales 15


(0,n) (1,n) ASIGNATURA(codasi, nombre)
ASIGNATURA cursa ESTUDIANTE
ESTUDIANTE(codest, nombre)
CURSA(codest, codasi) Nulos Borrado
codasi nombre codest nombre codest
CURSA ESTUDIANTE
codasi
CURSA ASIGNATURA

(1,n) (0,n)
PACIENTE(codpac, nombre)
PACIENTE cita MDICO
MDICO(codmed, nombre)

codpac nombre codmed nombre


CITA(codmed, fecha, hora, codpac) Nulos Borrado
codmed
fecha CITA MDICO
hora codpac
CITA PACIENTE

Tema 7. Diseo lgico de bases de datos relacionales 16


Resumen de la correspondencia entre esquemas para las relaciones binarias
Relacin 1:1 Relacin 1:n Relacin n:m

Integrar las dos tablas Es lo ms aconsejable cuando ambas


correspondientes a entidades tienen el mismo identifica- Para este tipo de relaciones binarias Para este tipo de relaciones
cada una de las entida- dor. Los atributos de la relacin binaria no se puede escoger esta opcin. binarias no se puede escoger
des participantes en la tambin estarn en la tabla. OJO: es esta opcin.
relacin binaria, en una posible que algunos atributos deban
sola tabla. aceptar nulos.

La clave ajena se debe poner en la


La clave ajena se puede poner en tabla correspondiente a la entidad que
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 los atributos de la relacin binaria. de la relacin binaria se ponen como esta opcin.
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 La nueva tabla tiene una clave ajena a Esta nueva tabla tiene una
entidades participan en la relacin de cada una de las dos tablas y tambin clave ajena a cada una de las
Aadir al esquema una forma opcional y hay pocas ocurren- los atributos de la relacin binaria. La dos tablas y tambin los atribu-
nueva tabla en la que cias de la misma. Esta nueva tabla clave primaria de la nueva tabla ser tos de la relacin binaria. La
se refleje la relacin tiene una clave ajena a cada una de la clave ajena que hace referencia a la clave primaria variar segn el
binaria. las dos tablas y tambin los atributos tabla de la entidad que participa en la significado de la relacin
de la relacin binaria. relacin binaria con cardinalidad binaria (hay que "meditarla").
mxima 1.

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: 123456
Proveedor n: 9876
Nombre del proveedor: Productos Surtidos
Direccin del proveedor: Borriol, Castelln

Deseamos enven:

Nmero Descripcin Precio Cantidad Total


producto unitario
511246 Televisin 70.000 1 70.000
124456 Clavija antena 100 10 1.000
124763 Enchufe 150 10 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 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 LNEA
npedido 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 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)

npedido
LNEA 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)

npedido nproducto
LNEA PEDIDO LNEA 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
PEDIDO PROVEEDOR
npedido
LNEA PEDIDO
nproducto
LNEA 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 Y

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 nombre VERSIN
nmero fecha ventas
grupos repetitivos
LH4 Ladrillo hueco 1 1/3/1996 30.000 (valores no atmicos)
2 1/8/1998 50.000
3 1/2/2000 13.000
LP7 Ladrillo perforado 1 1/6/1996 70.000
2 1/12/2000

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


Se descompone en:
hereda la clave primaria
PRODUCTO (codprod, nombre, descripcin)
VERSIN (codprod, nmero, fecha, ventas)
Nulos Borrado
codprod
OJO VERSIN PRODUCTO

Tema 7. Diseo lgico de bases de datos relacionales 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


estudiante
precio
actividad precio actividad

estudiante actividad precio


100 Tenis 1500 misma actividad, mismo precio.
100 Yoga 1500
200 Tenis 1500
300 Escalada 5000

Se descompone en las proyecciones:


INSCRIPCIN (estudiante, actividad) y ACTIVIDAD (actividad, precio)
Nulos Borrado
actividad
INSCRIPCIN ACTIVIDAD

Tema 7. Diseo lgico de bases de datos relacionales 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) 3FN


edificio
inquilino
edificio alquiler
alquiler

inquilino edificio alquiler


100 E04 50.000 mismo edificio, mismo alquiler.
200 E13 50.000
300 E09 65.000
400 E04 50.000

Se descompone en las proyecciones:


INQUILINO (inqulino, edificio) y EDIFICIO (edificio, alquiler)
Nulos Borrado
edificio
INQUILINO EDIFICIO

Tema 7. Diseo lgico de bases de datos relacionales 30


Ejercicio de normalizacin

estudiante nombre apellido DNI direccin codbeca nombeca requisito fecha


0123 Carlos Gil 159357 C/ Paz, 23 A223 EEUU Ing. Sup. 10/10/98
7636 Paula Tena 913752 C/ Ro Po, 1 B567 ERASMUS Ing. Tc. 12/11/98
7636 Paula Tena 913752 C/ Ro Po, 1 A223 EEUU Ing. Sup. 14/10/98
7636 Paula Tena 913752 C/ Ro Po, 1 G654 DRAC Ing. Sup. 15/09/99
0123 Carlos Gil 159357 C/ Paz, 23 G654 DRAC Ing. Sup. 17/09/98
9516 Andrs Calpe 682432 Plz. Sol, 40 G654 DRAC Ing. Sup. 12/09/99
0123 Carlos Gil 159357 C/ Paz, 23 B567 ERASMUS Ing. Tc. 12/11/98
9516 Andrs Calpe 682432 Plz. Sol, 40 B567 ERASMUS Ing. Tc. 23/11/99
0123 Carlos Gil 159357 C/ Paz, 23 A223 EEUU Ing. Sup. 12/10/99
3361 Luca Porcar 243115 Plz. Sol, 26 A223 EEUU Ing. Sup. 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? nulos? nulos?

Tema 7. Diseo lgico de bases de datos relacionales 35

Вам также может понравиться