Está en la página 1de 39

Temario

Introduccin y fundamentos
Introduccin a SQL
Modelo Entidad / Relacin
Modelo relacional
Diseo relacional: formas normales

Consultas
Clculo relacional
lgebra relacional
Implementacin de bases de datos
Estructura fsica: campos y registros
Indexacin
ndices simples
rboles B

Hashing
1

Diseo de esquemas relacionales


Igual que un programa C, un diseo BD puede ser sintcticamente
correcto, pero de baja calidad
Hay muchos criterios para valorar y procurar la calidad de un diseo
Claridad, facilidad de lectura, reflejo de las estructuras naturales del dominio
Eficiencia de consulta
Aprovechamiento del espacio en disco
Buena seleccin de claves, detalle en las restricciones
Facilidad de actualizacin y evolucin del diseo

Ciertas propiedades formales definibles en el modelo relacional

Propiedades formales
Evitar NULLs

Formas normales
2

Normalizacin de esquemas relacionales


Criterios formales para valorar y mejorar el diseo de una base de datos
Reducir redundancias (consumen espacio y pueden generar problemas de
consistencia)
Facilitar la actualizacin de datos de forma ms modular (evitar anomalas)
Facilitar la evolucin de los esquemas

Neutralidad respecto de las consultas

Formas normales 1, 2 y 3
E. Codd en 1970/71

Forma normal Boyce-Codd (BCNF)


R. F. Boyce en 1974

Formas normales 4, 5, 6

Edgard F. Codd

1977/79/2002
Menos utilizadas
3

Anomalas de diseo
No son un error en s mismas
Si se hace bien la actualizacin no habra problema

Pero son un factor de error


Dan la ocasin de generar inconsistencias semnticas y otros
problemas que el modelo relacional en s no detectara

La normalizacin las evita y hace el diseo ms robusto


Ahorra precauciones externas al diseo

Anomalas de actualizacin
NIE

Nombre

Telfono

Asignatura

NIE

Nombre

Telfono

NIE

Asignatura

12345

Isabel

123456789

17824

12345

Isabel

123456789

12345

17824

12345

Isabel

123456789

17825

67890

David

321654987

12345

17825

12345

Isabel

123456789

17826

12345

17826

12345

Isabel

123456789

17827

12345

17827

12345

Isabel

123456789

17828

12345

17828

67890

David

578234890
321654987

17824

67890

17824

67890

David

321654987

17825

67890

17825

67890

David

321654987

17826

67890

17826

67890

David

321654987

17827

67890

17827

Modificacin del valor de un campo

1.

Mejor diseo

Redundancia
Problemas al modificar: estado inconsistente
si no se actualizase el campo en todas las filas
5

Anomalas de actualizacin (cont)


2.

Insercin
NIE

Nombre

Telfono

NIE

Asignatura

12345

Isabel

123456789

17824

12345

Isabel

123456789

12345

17824

12345

Isabel

123456789

17825

67890

David

321654987

12345

17825

12345

Isabel

123456789

17826

12345

17826

12345

Isabel

123456789

17827

12345

17827

12345

Isabel

123456789

17828

12345

17828

67890

David

321654987

17824

67890

17824

67890

David

321654987

17825

67890

17825

67890

David

321654987

17826

67890

17826

67890

David

321654987

17827

67890

17827

987654321

Mejor diseo

NULL
NULL

Mara

32154

Asignatura

Telfono

Nombre

NIE
NIE

Problema al insertar tuplas cuando an no se saben todos


sus campos especialmente parte de la clave primaria

Anomalas de actualizacin (cont)


NIE

Nombre

Telfono

Asignatura

NIE

Nombre

Telfono

NIE

Asignatura

12345

Isabel

123456789

17824

12345

Isabel

123456789

12345

17824

12345

Isabel

123456789

17825

67890

David

321654987

12345

17825

12345

Isabel

123456789

17826

12345

17826

12345

Isabel

123456789

17827

12345

17827

12345

Isabel

123456789

17828

12345

17828

67890

David

321654987

17824

67890

17824

67890

David

321654987

17825

67890

17825

67890

David

321654987

17826

67890

17826

67890

David

321654987

17827

67890

17827

Eliminacin

3.

Mejor diseo

Al eliminar toda la matriculacin de un estudiante


se podran perder todos los datos de ste
7

Anomalas de actualizacin (cont)


Las inconsistencias tpicamente afloran al hacer consultas
Un estudiante ya no aparece
Un estudiante con dos ns de telfono,
o dos direcciones, dos nombres

Las anomalas de actualizacin se depuran generalmente


descomponiendo esquemas
Pero no de cualquier manera: una descomposicin inadecuada
puede dar lugar a tuplas espurias

Matrcula

Estudiante

Matrcula

Telfono

Asignatura

NIE

Nombre

Telfono

12345

Isabel

123456789

17824

12345

Isabel

123456789

Isabel

17824

12345

Isabel

123456789

17825

67890

David

321654987

Isabel

17825

67890

David

321654987

17826

89456

Isabel

755326284

David

17826

67890

David

321654987

17827

David

17827

89456

Isabel

755326284

17835

Isabel

17835

89456

Isabel

755326284

17838

Isabel

17838

Tuplas
espurias
Tuplas espurias

Nombre

NIE

Nombre Asignatura

SELECT NIE, Nombre, Asignatura


FROM Estudiante
NATURAL JOIN Matricula
WHERE NIE = 12345
NIE

Nombre Asignatura

12345

Isabel

17824

12345

Isabel

17825

12345

Isabel

17835

12345

Isabel

17838
9

Descomposicin de esquemas relacionales


Una descomposicin de un esquema R es un mapping R R1 , , R
Es la base de la normalizacin (que ahora veremos)
Es deseable que una descomposicin cumpla las siguientes propiedades:
Preservacin de atributos
Es decir

=1 R

=R

Preservacin de dependencias

Qu son?

Vemoslo

Sea F el conjunto de dependencias funcionales de R

Sea R F el subconjunto de dependencias de F que implican slo atributos de R


Se debe cumplir que F es equivalente a

=1 R

En breve

En otras palabras, la unin de las dependencias de las tablas R equivale a las


dependencias de la tabla original
Join sin prdida (o join no aditivo prdida de informacin, no de tuplas)
Para todo estado de R se cumple R1 R2 R
R es la proyeccin de las tuplas de a los atributos de R
es el natural join
En otras palabras: el join de las tablas R es la tabla original R
Evita las tuplas espurias al hacer natural join

= , donde:

Operaciones de
lgebra relacional
(ms adelante)
10

Dependencias funcionales
Def: Dados dos conjuntos X e Y de atributos de un esquema R, Y depende
funcionalmente de X si t1[X] = t2[X] t1[Y] = t2[Y], t1, t2 r(R)
Es decir, los atributos de Y estn unvocamente determinados por los de X
Notacin: X Y
Ejemplos
X es una superclave de R X Y para cualquier conjunto de atributos Y de R
Reserva (Nombre, Dni, Nvuelo, Origen, Destino, Hora, Fecha, Precio)
Dni Nombre
/* No ponemos { } para abreviar */
Nvuelo { Origen, Destino, Hora }
{ Dni, Nvuelo } { Nombre, Origen, Destino, Hora }
{ Dni, Nvuelo, Fecha } { Nombre, Origen, Destino, Hora, Precio }
{ Dni, Fecha, Hora } { Nombre, Nvuelo, Origen, Destino, Precio }
11

Formas normales
Su cumplimiento reduce anomalas de actualizacin y mejora
las propiedades del diseo (robustez, actualizacin, etc.)
Son incrementales
Si se cumple la forma normal n-sima se cumple la (n-1)-sima

Formas normales 1, 2, 3, BCNF


2, 3 y BCNF se definen en trminos de dependencias funcionales
No eliminan totalmente la posibilidad de anomalas de actualizacin,

pero las reducen a casos muy excepcionales en la prctica

Formas 4, 5 y 6
Eliminan sucesivamente ms anomalas de actualizacin

12

1 forma normal (1NF)


Def: en un esquema 1NF
Los atributos son atmicos y univaluados
Los nombres de atributo son nicos
No hay tuplas duplicadas (consecuencia: todo esquema tiene alguna clave)

El orden de tuplas y atributos es arbitrario

Se considera parte inherente del modelo relacional


Aunque
SQL slo cumple la primera de estas condiciones (el tratamiento de NULL
se sale tambin del modelo relacional)
Se estudian alternativas como el modelo relacional anidado, que admite
relaciones como valores de atributos
13

2 forma normal (2NF)


Def: Un esquema R es 2NF si todo atributo no primario de R
tiene una dependencia funcional plena con las claves de R
Def: Atributos primarios son los que forman parte de alguna clave
Def: Una dependencia funcional X Y es plena si no le sobra

ningn atributo a X, es decir X {A} Y, A X


Dicho de otro modo, los atributos dependen de la clave completa;
slo los atributos de una clave pueden depender de partes de una clave

14

2 forma normal: ejemplo 1


Reserva (Nombre, Dni, Nvuelo, Origen, Destino, Hora, Fecha, Precio)
Ejemplos
Reserva (Ana, 165467, 123, MAD, LAX, 16:25:00, 2011-10-24, 620)
Reserva (Luis, 165467, 123, MAD, LAX, 16:25:00, 2011-10-24, 620)
Reserva (Luis, 165467, 123, MAD, LAX, 16:25:00, 2011-11-18, 620)

Claves
{ Dni, Nvuelo, Fecha }

/* Suponiendo que un pasajero slo reserva */

{ Dni, Fecha, Hora }

/* billetes que va a usar personalmente

*/

Dependencias
Dni Nombre
Nvuelo { Origen, Destino }

No 2NF

Nvuelo Hora /* Hora es un atributo primario */


{ Dni, Nvuelo, Fecha } Precio

Ok

{ Dni, Fecha, Hora } { Nvuelo, Origen, Destino, Precio }


15

2 forma normal: ejemplo 2


Vuelo (Nvuelo, Origen, Destino, Hora)
Claves:

Nvuelo

Dependencias: Nvuelo { Origen, Destino, Hora }

Ok 2NF

Pasajero (Dni, Nombre)


Claves:

Dni

Dependencias: Dni Nombre

Ok 2NF

Reserva (Dni, Nvuelo, Fecha)


Claves:

{ Dni, Nvuelo, Fecha }

Dependencias:

Ok 2NF

16

2 forma normal: ejemplo 3


Vuelo (Nvuelo, Origen, Destino, Ciudad_origen, Ciudad_destino, Hora)
Ejemplos

Vuelo (123, CDG, LHR, Pars, Londres, 11:35:00)

Vuelo (456, ORY, LGW, Pars, Londres, 15:20:00)

Claves

Nvuelo

Dependencias

Nvuelo { Origen, Destino, Ciudad_origen, Ciudad_destino, Hora }

Origen Ciudad_origen

Destino Ciudad_destino

Ok 2NF

17

2 forma normal: ejemplo 4

Si todas las claves tienen un solo atributo, el esquema es 2NF?

18

2 forma normal: ejemplo 5


Direccin (Calle, Nmero, Piso, Municipio, Provincia, Pas, CP)
Ejemplos
Direccin (Pza. Mayor, 2, 2, Oropesa, Castelln, Espaa, 12594)
Direccin (Pza. Mayor, 2, 1, Oropesa, Castelln, Espaa, 12594)
Direccin (Pza. Mayor, 2, 1, Oropesa, Toledo, Espaa, 45687)

Claves
{ Calle, Nmero, Piso, CP }
{ Calle, Nmero, Piso, Municipio, Provincia, Pas }

Dependencias
{ Calle, Nmero, Municipio, Provincia, Pas } CP
CP { Municipio, Provincia, Pas }

Ok
Ok?

Ok 2NF

CP, Municipio, Provincia, Pas son primarios


19

3 forma normal (3NF)


X A es trivial si A X

Def: Un esquema es 3NF si para toda dependencia X A no trivial,


o bien X es una superclave, o bien A es un atributo primario
Dicho de otro modo, no puede un atributo depender de algo que no sea
una superclave, excepto acaso los atributos que forman parte de alguna clave

20

3 forma normal: ejemplo 1


Direccin (Calle, Nmero, Piso, Municipio, Provincia, Pas, CP)
Ejemplos
Direccin (Pza. Mayor, 2, 2, Oropesa, Castelln, Espaa, 12594)
Direccin (Pza. Mayor, 2, 1, Oropesa, Castelln, Espaa, 12594)
Direccin (Pza. Mayor, 2, 1, Oropesa, Toledo, Espaa, 45687)

Claves
{ Calle, Nmero, Piso, CP }
{ Calle, Nmero, Piso, Municipio, Provincia, Pas }

Dependencias
{ Calle, Nmero, Municipio, Provincia, Pas } CP
CP { Municipio, Provincia, Pas }

Ok 2NF

Ok 3NF

CP, Municipio, Provincia, Pas son primarios


21

3 forma normal: ejemplo 2


Vuelo (Nvuelo, Origen, Destino, Ciudad_origen, Ciudad_destino, Hora)
Ejemplos

Vuelo (123, CDG, LHR, Pars, Londres, 11:35:00)

Vuelo (456, ORY, LGW, Pars, Londres, 15:20:00)

Claves

Nvuelo

Dependencias

Nvuelo { Origen, Destino, Ciudad_origen, Ciudad_destino, Hora }

Origen Ciudad_origen

Destino Ciudad_destino

No 3NF

Ok 2NF

No superclaves
No primarios
22

3 forma normal: ejemplo 3

Si todas las claves tienen un solo atributo, el esquema es 3NF?

23

Forma normal Boyce-Codd (BCNF)


Def: Un esquema R es BCNF si para toda dependencia X Y no trivial
X es una superclave de R
Dicho de otro modo, no puede haber ms dependencia que con
las superclaves

24

Forma normal Boyce-Codd: ejemplo


Direccin (Calle, Nmero, Piso, Municipio, Provincia, Pas, CP)
Ejemplos
Direccin (Pza. Mayor, 2, 2, Oropesa, Castelln, Espaa, 12594)
Direccin (Pza. Mayor, 2, 1, Oropesa, Castelln, Espaa, 12594)

Direccin (Pza. Mayor, 2, 1, Oropesa, Toledo, Espaa, 45687)

Claves
{ Calle, Nmero, Piso, CP }
{ Calle, Nmero, Piso, Municipio, Provincia, Pas }

Dependencias
No superclave { Calle, Nmero, Municipio, Provincia, Pas } CP
CP { Municipio, Provincia, Pas }

No BCNF

Ok 3NF

CP, Municipio, Provincia, Pas son primarios


25

Forma normal Boyce-Codd (BCNF)


BCNF no elimina totalmente las anomalas de actualizacin FN 4, 5, 6
Marca

Medicamento Indicaciones
Fiebre

Gelocatil Paracetamol

Resfriado

Gelocatil Paracetamol

Cefalea

Tylenol

Paracetamol

Fiebre

Tylenol

Paracetamol

Resfriado

Tylenol

Paracetamol

Cefalea

Tylenol

Codena

Tos

Tylenol

Codena

Dolor

Redundancias

Gelocatil Paracetamol

Mejor diseo

El esquema es BCNF
Pero contiene redundancias
Anomalas de actualizacin: modificar /
aadir / eliminar indicaciones de un
medicamento, etc.

Marca

Medicamento

Gelocatil Paracetamol
Tylenol

Paracetamol

Tylenol

Codena

Medicamento Indicaciones
Paracetamol

Fiebre

Paracetamol

Resfriado

Paracetamol

Cefalea

Codena

Tos

Codena

Dolor
26

Un ltimo ejemplo
Cul es la mnima forma normal de un esquema en el que
la combinacin de todos sus atributos forma una clave?

27

Resumen
X superclave
No
S

Dada X Y
Y primario

X primario
S

S
No

BCNF

No
3NF

1NF

2NF

28

Algoritmos de normalizacin
Comprobacin de preservar dependencias en descomposiciones
Comprobacin de join sin prdida en descomposiciones
Comprobacin de que un conjunto de atributos es una superclave
Propiedad 3NF, BCNF de relaciones
Descomposicin de relaciones a 3NF, BCNF
Siempre es posible descomponer a 2NF y 3NF sin prdida de dependencias
BCNF puede no ser posible sin perder alguna dependencia

29

Normalizacin 3NF
3NF (R, F)

Qu es?

D :=
G := cobertura mnima de F
for X Y G

Aadir a D el esquema X { A1, A2, , An }


donde X Ai son todas las dependencias sobre X en G
Si ningn esquema de D contiene una clave de R, aadir a D un esquema
con una clave de R
Eliminar los esquemas redundantes de D (esquemas incluidos en otros)
La descomposicin tiene join sin prdida,
y preserva las dependencias
30

Normalizacin 3NF (cont)


En otras palabras
1. Partiendo de una cobertura mnima
2. Sacar a tablas aparte los atributos de todos los conjuntos
de dependencias con la misma parte izquierda
3. Si no ha salido ninguna tabla con la clave original completa,
crear esa tabla
4. Eliminar esquemas redundantes

31

Normalizacin BCNF
BCNF (R, F)
D := {R}
while D contiene una relacin no BCNF

Q := elegir una relacin no BCNF en D


X Y := elegir una dependencia de F en Q que no cumple BCNF
Substituir Q en D por (Q Y), (X Y)
El algoritmo genera una descomposicin que tiene join sin prdida,
pero no asegura la preservacin de todas las dependencias

32

Normalizacin BCNF (cont)


En otras palabras

Ah se pueden perder dependencias

1. Sacar a tablas aparte todas las dependencias no BCNF de la relacin


original, pero eliminando de sta la parte derecha de las dependencias
2. Repetir el proceso sobre las relaciones que van saliendo

33

Join sin prdida


Test sencillo:
Una descomposicin binaria {R1, R2} de una relacin R tiene join sin prdida
respecto a un conjunto de dependencias F si:
O bien (R1 R2 R1 R2) se infiere de F
O bien (R1 R2 R2 R1) se infiere de F

R1

R2

Qu quiere decir?
Esto viene a decir que R1 R2 acta como clave fornea de R1 a R2, o viceversa

34

Cobertura mnima
Def: Una cobertura mnima de un conjunto de dependencias F es un
conjunto mnimo equivalente a F
Def: Un conjunto de dependencias F es mnimo si:
La parte derecha de todas sus dependencias es un solo atributo
Si eliminamos una dependencia, obtenemos un conjunto no equivalente a F
Si eliminamos un atributo en la derecha de una dependencia, obtenemos un
conjunto no equivalente a F

En otras palabras: dependencias en forma cannica y sin redundancias


Def: Dos conjuntos de dependencias son equivalentes si toda dependencia
de uno se puede inferir de las dependencias del otro y viceversa
35

Inferencia entre dependencias


Reflexividad:

YX

X Y (dependencia trivial)

Aumento:

XY

XZ YZ

Transitividad:

{ X Y, Y Z }

XZ

Proyeccin:

X YZ

Reglas (axiomas) de
Armstrong, completas
X Y (descomposicin)

Aditividad:

{ X Y, X Z }

X YZ (unin)

Pseudotransitividad: { X Y, WY Z }

Obsrvese que:

WX Z

{ X Y, Z W }

XZ YW

XZ

XY Z

36

Cobertura mnima (cont)


Cobertura mnima (E)
F := E
Substituir todas las dependencias X { Y1, , Yn } en F
por X Y1, , X Yn
for X Y F do
for A X do
if F { X Y } { (X {A}) Y } es equivalente a F
then F := F { X Y } { (X {A}) Y }

for X Y F do
if F { X Y } es equivalente a F
then F := F { X Y }
return F
37

Cobertura mnima (cont)


En otras palabras
1. Descomponer en dependencias sobre atributos individuales
en la parte derecha
2. Eliminar atributos que sobren en las partes izquierdas
3. Eliminar dependencias que se infieren de otras

38

Otros criterios de diseo


Adems de la normalizacin (motivada por las anomalas de actualizacin)
Evitar valores NULL
Crean problemas en operaciones que implican comparaciones, conteos o sumas
La proporcin de NULLs en un atributo puede ser un criterio para sacar el atributo
a una relacin aparte

Semntica de los esquemas


La facilidad con que pueden explicarse es una medida informal de la calidad
del diseo
P.e. un esquema que junta varias entidades del mundo real puede ser ms confuso

Eficiencia y denormalizacin
Tablas no normalizadas pueden ser ms eficientes para algunas consultas
Por motivos de eficiencia en ocasiones compensa juntar o no descomponer ciertas
tablas: ceder espacio y robustez a cambio de eficiencia (se ahorran joins)

Depende de la frecuencia de consulta, tamao de las tablas y frecuencias de valores


39

También podría gustarte