Você está na página 1de 35

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

DISEO
LGICO

esquema lgico

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

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

(0,n)
viaje

AVIN

(0,n)
codpil

nombre

codavi

matrcula
fecha

TRIPULACIN
PILOTO

codtrip nombre
codpil

(0,n)

(1,1)

viaje
(1,n)

AVIN
(1,1)

nombre

(0,n)
codavi

matrcula

(0,n)
TRIPULACIN

Tema 7. Diseo lgico de bases de datos relacionales

codtrip

nombre

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)

nmero

ao

ttulo

ttulo_ppal

autor
idioma

subttulo

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


Tema 7. Diseo lgico de bases de datos relacionales

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


a1
a2

E
( p/t, e/s )
E1

E2

a3

opcin
(1)

a1
a2

E
(0,1)

(1,1)
E3

a3

E3

E2

E1

a2

a4

a1

a2

Tema 7. Diseo lgico de bases de datos relacionales

a5

a4

opcin
(2)

a1

(1,1)

E2

E1

a3

(0,1)

(0,1)

(1,1)

a5

E3

a4

a5

a1

a2

a3

(0,1)

a4

(0,1)

a5

(0,1)

opcin
(3)
a1

a2
(0/1,1/n)
AD

(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

hijo
(0,1)
EMPLEADO

codemp nombre

(1,1)
VEHCULO

conduce

fecha_ini

matrcula

modelo

EMPLEADO(codemp, nombre )

nulos?

VEHCULO(matrcula, modelo, codemp, fecha_ini)


codemp
Nulos Borrado
VEHCULO
EMPLEADO
son tan diferentes?

hijo
(1,1)
EMPLEADO

codemp nombre

(0,1)

conduce

fecha_ini

VEHCULO

matrcula

modelo

VEHCULO(matrcula, modelo)

nulos?

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

(0,1)

(1,1)

CLIENTE

direccin

son sinnimos!!

ENVO

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
codper
nombre

(0,1)
PERSONA
(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)

PROFESOR
codpro

(1,1)

ESTUDIANTE

tutor

nombre

fecha

codest

nombre

padre
(0/1,n)

HABITACIN
numhab

edificio

Tema 7. Diseo lgico de bases de datos relacionales

ocupa

fecha

(0,1)

ESTUDIANTE
codest nombre

12

nulos?

padre
(0/1,n)

PROFESOR
codpro

ESTUDIANTE

tutor

nombre

PROFESOR(codpro, nombre)

(1,1)

fecha

codest

nombre

ESTUDIANTE(codest, nombre, codpro, fecha)


ESTUDIANTE

codpro

Nulos

PROFESOR

nulos?

padre
(0/1,n)

HABITACIN
numhab

Borrado

edificio

ocupa

fecha

HABITACIN(numhab, edificio)

(0,1)

ESTUDIANTE
codest nombre

ESTUDIANTE(codest, nombre, numhab, fecha)


ESTUDIANTE

numhab

Nulos

Borrado

HABITACION

Y si hay muy pocos estudiantes que viven en


una habitacin del campus?
Tema 7. Diseo lgico de bases de datos relacionales

13

(0,n)

ASIGNATURA

codasi

cursa

ASIGNATURA(codasi, nombre)
ESTUDIANTE

codest

nombre

(1,n)

PACIENTE
codpac

(1,n)

(0,n)

MDICO

cita

nombre
fecha

nombre

codmed

nombre

hora

Tema 7. Diseo lgico de bases de datos relacionales

ESTUDIANTE(codest, nombre)
CURSA(codest, codasi)
codest
CURSA
ESTUDIANTE
codasi
CURSA
ASIGNATURA

Nulos Borrado

PACIENTE(codpac, nombre)
MDICO(codmed, nombre)
CITA(codmed, fecha, hora, codpac)
codmed
CITA
MDICO
codpac
CITA
PACIENTE

Nulos Borrado

16

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

123456
9876
Productos Surtidos
Borriol, Castelln

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

Deseamos enven:
Nmero
producto

Descripcin

Precio
unitario

Cantidad

Total

511246

Televisin

70.000

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

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

PEDIDO
LNEA
LNEA

nprov
npedido
nproducto

Tema 7. Diseo lgico de bases de datos relacionales

PROVEEDOR
PEDIDO
PRODUCTO

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

LP7

nombre
Ladrillo hueco

Ladrillo perforado

VERSIN
nmero

fecha

ventas

1/3/1996

30.000

1/8/1998

50.000

1/2/2000

13.000

1/6/1996

70.000

1/12/2000

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

Se descompone en:

grupos repetitivos
(valores no atmicos)

1FN

hereda la clave primaria

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

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

precio

estudiante

actividad

precio

100

Tenis

1500

100

Yoga

1500

200

Tenis

1500

300

Escalada

5000

estudiante
precio

actividad

misma actividad, mismo precio.

Se descompone en las proyecciones:


INSCRIPCIN (estudiante, actividad)

INSCRIPCIN
Tema 7. Diseo lgico de bases de datos relacionales

ACTIVIDAD (actividad, precio)


actividad

Nulos

Borrado

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

3FN
inquilino

alquiler

inquilino

edificio

alquiler

100

E04

50.000

200

E13

50.000

300

E09

65.000

400

E04

50.000

edificio
alquiler

mismo edificio, mismo alquiler.

Se descompone en las proyecciones:


INQUILINO (inqulino, edificio)

INQUILINO
Tema 7. Diseo lgico de bases de datos relacionales

EDIFICIO (edificio, alquiler)


edificio

Nulos

Borrado

EDIFICIO
30

Ejercicio de normalizacin
estudiante

0123
7636
7636
7636
0123
9516
0123
9516
0123
3361
...

nombre

Carlos
Paula
Paula
Paula
Carlos
Andrs
Carlos
Andrs
Carlos
Luca
...

apellido

Gil
Tena
Tena
Tena
Gil
Calpe
Gil
Calpe
Gil
Porcar
...

DNI

direccin

codbeca

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

nombeca

requisito

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

fecha

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

Você também pode gostar