Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Transpa Disenio 2010
Transpa Disenio 2010
Curso 2009-2010
2. Anomalías
3. Descomposiciones
4. Normalización
C ONTENIDO 2
I NTRODUCCIÓN
Vamos a proponer un ejemplo que consiste en una base de
datos que contendrá información sobre alumnos,
asignaturas, notas y profesores. Las restricciones de las que
partimos son las siguientes:
I NTRODUCCIÓN 3
Podríamos plantearnos mantener todos los datos en una
única tabla. Utilizaremos el siguiente ejemplo:
I NTRODUCCIÓN 4
R(T, L) : T = {Alumno, Asignatura, Profesor, Nota}
L= {Alumno Asignatura → Profesor,
Alumno Asignatura → Nota,
Profesor → Asignatura}
I NTRODUCCIÓN 5
A NOMALÍAS
• Repetición de Información. El problema fundamental de
la repetición de información no es el desperdicio de
espacio sino otros problemas derivados del
mantenimiento de información repetida, que
enumeramos a continuación.
A NOMALÍAS 6
• Anomalías en el borrado El problema que se nos
presenta aquí no es un problema de inconsistencia, sino
de pérdida de información.
A NOMALÍAS 7
• Imposición de las restricciones. Imponer la restricción de
que un alumno sólo tiene un profesor por asignatura
resulta tan sencillo como el declarar (Alumno,
Asignatura) como clave primaria. Sin embargo,
garantizar el cumplimiento de las DFs cuya parte
izquierda no es clave candidata no es así de sencillo.
Por ejemplo, comprobar la dependencia
Profesor→Asignatura requeriría establecer en SQL un
check como este:
alter table R add onstraint PRO_ASIG
he k (not exists (
sele t profesor
from R
group by profesor
having ount(distin t asignatura) > 1));
A NOMALÍAS 8
– Otra solución podría ser evitar que se inserten o
actualicen tuplas que contradigan la restricción
mediante triggers.
– En cualquier caso, nos vemos obligados a agregar más
código, lo que es posiblemente innecesario y ralentiza la
ejecución de nuestras modificaciones a la base de datos.
A NOMALÍAS 9
• Ante este tipo de anomalías, una solución consiste en
descomponer nuestro esquema original en varios
subesquemas de forma que dichas anomalías se eviten.
A NOMALÍAS 10
Descomposiciones
[
n
Ri = R (1)
i=1
A NOMALÍAS 11
• Vamos a ver cómo una descomposición puede resolver
algunos de los problemas mencionados en la sección
anterior.
A NOMALÍAS 12
R1
Profesor Asignatura
Newton Física
Kant Filosofía
Einstein Física
A NOMALÍAS 13
• Es evidente que esta descomposición nos resuelve
algunos problemas: se repite menos información; a un
profesor sólo se le puede asignar una asignatura
(profesor es la clave primaria de R2 ); y podemos guardar
información de la asignatura que imparte cada profesor
aunque no tengamos alumnos matriculados.
A NOMALÍAS 14
• Este problema se conoce con el nombre
de descomposición con pérdida de información,
generalmente denominado como lossy-join. Cuando
esta situación no se da, y toda la información que existía
previamente puede recuperarse después de la
descomposición, decimos que se cumple la
propiedad lossless-join o LJ.
A NOMALÍAS 15
R1 .Alumno R1 .Asignatura R2 .Profesor R1 .Nota
Luis Física Newton 5
Luis Física Einstein 5
Luis Filosofía Kant 7
Carlos Física Newton 6
Carlos Física Einstein 6
Marta Física Newton 5
Marta Física Einstein 5
Pepe Filosofía Kant 4
A NOMALÍAS 16
• Aparecen tres filas más (en sombreado) que en la tabla
R original. El problema radica en el hecho de que hay
más de un profesor de Física, con lo que al reunir (realizar
el producto natural) R1 y R2 , a cada alumno de Física se
le empareja con todos los profesores de Física, dando
lugar a filas espurias que contienen información
incorrecta.
A NOMALÍAS 17
Descomposición con la propiedad LJ
A NOMALÍAS 18
• Pues bien, puede demostrarse que siempre se da la
siguiente inclusión:
n
⊲⊳ ri ⊇ r (2)
i=1
A NOMALÍAS 19
• Decimos que una descomposición {R1 , R2 , . . . , Rn } de un
esquema R es sin pérdidas (lossless) cuando se verifica la
identidad
n
⊲⊳ ri = r (3)
i=1
R1 .Asignatura = R2 .Asignatura
A NOMALÍAS 20
• Esto hecho se conoce como:
Teorema 1. (Heath)
R1 ∩ R2 → R1 − R2
R1 ∩ R2 → R2 − R1
O lo que es lo mismo:
R1 ∩ R2 → R1
R1 ∩ R2 → R2
A NOMALÍAS 21
• Estas dependencias funcionales nos vienen a decir que
los atributos comunes a las dos tablas funcionan como
clave (más exactamente, superclave) en alguna de
ellas.
A NOMALÍAS 22
• Siguiendo con nuestro ejemplo, vemos que Asignatura es
el atributo común a ambas tablas y no es clave en
ninguna de ellas. Por eso, la descomposición propuesta
resultó ser con pérdidas.
A NOMALÍAS 23
R1
Alumno Profesor Nota
Luis Newton 5
Luis Kant 7
Carlos Einstein 6
Marta Newton 5
Pepe Kant 4
R2
Profesor Asignatura
Newton Física
Kant Filosofía
Einstein Física
A NOMALÍAS 24
• La descomposición es sin pérdida, ya que Profesor, el
atributo común, es clave en R2 .
A NOMALÍAS 25
R1
Alumno Profesor Nota
Luis Newton 5
Luis Kant 7
Carlos Einstein 6
Marta Newton 5
Pepe Kant 4
Luis Einstein 4
R2
Profesor Asignatura
Newton Física
Kant Filosofía
Einstein Física
A NOMALÍAS 26
• Lo que sucede en este caso es que no estamos
cumpliendo las restricciones de que un alumno tiene un
único profesor y una única nota en cada asignatura
(Alumno Asignatura → P rof esorN ota)
A NOMALÍAS 27
Descomposición sin pérdida de dependencias
Li = (X → Y ) ∈ L+ | (X ∪ Y ) ⊆ Ti (4)
A NOMALÍAS 28
• Ojo: Las dependencias que afectan a cada relación Ri
pueden no resultar necesariamente de la proyección de
las dependencias originales sobre los atributos Ti de Ri .
A NOMALÍAS 29
• Consideremos el conjunto L′ = ∪Li , es decir, la reunión
de todas las dependencias impuestas a cada
subesquema Ri . En general L′ ⊆ L, pero puede darse el
caso de que una dependencia del conjunto L pueda
deducirse de L′ aun no apareciendo explícitamente
en L′ ; es decir, se encuentre en (L′ )+ .
A NOMALÍAS 30
Observemos qué es lo que sucede en nuestro ejemplo.
Esquema de partida: R(T, L)
Atributos: T = {Alumno, Asignatura, Profesor, Nota}
Dependencias: L = {Alumno Asignatura → Profesor,
Alumno Asignatura → Nota,
Profesor → Asignatura,
Alumno Profesor → Nota}
Descomposición: R1 (T1 , L1 )
Atributos: T1 = {Alumno, Profesor, Nota}
Dependencias: L1 = {Alumno Profesor → Nota}
R2 (T2 , L2 )
Atributos: T2 = {Profesor, Asignatura}
Dependencias: L2 = {Profesor→Asignatura}
A NOMALÍAS 31
• Como vemos la dependencia
Alumno Asignatura→Profesor no aparece explícitamente
en L′ ; igual ocurre con Alumno Asignatura→Nota. Pero,
además, tampoco se pueden deducir de dicho
conjunto.
A NOMALÍAS 32
• El algoritmo se basa en la R-operación sobre el conjunto
de atributos Z respecto de L como la sustitución de Z
por Z ∪ ((Z ∩ Ti )+ ∩ Ti ).
Z⇐X
while Z cambie and not Y ∈ Z do
for i = 1 to K do {siendo K el número de subesquemas}
Z = Z ∪ ((Z ∩ Ti )+ ∩ Ti )
end for
end while
if Y 6∈ Z then
Se pierde la dependencia X → Y
else
Se conserva la dependencia X → Y
end if
A NOMALÍAS 33
• No siempre es posible encontrar una descomposición
que no presente ninguno de los anteriores problemas.
A NOMALÍAS 34
E STUDIO DE N ORMALIZACIÓN
• Ahora vamos a centrarnos en el estudio de la calidad de
un esquema R(T, L), lo que se conoce como estudio de
normalización. Lo que se pretende es dar una
clasificación, de mayor a menor, de la posibilidad de
encontrarnos con problemas a la hora de implementar
un esquema (tabla), teniendo en cuenta las restricciones
que se deben cumplir impuestas como dependencias
funcionales.
E STUDIO DE N ORMALIZACIÓN 35
Primera Forma Normal (1FN)
E STUDIO DE N ORMALIZACIÓN 36
Segunda Forma Normal (2FN)
E STUDIO DE N ORMALIZACIÓN 37
Tomemos el siguiente esquema:
Esquema: R(T, L)
T = {Alumno, Asignatura, Profesor, Nota, Departamento }
L = {Alumno Asignatura → Profesor,
Alumno Asignatura → Nota,
Profesor → Asignatura,
Profesor → Departamento}
E STUDIO DE N ORMALIZACIÓN 38
• Es cierto que en este esquema se repite
redundantemente la información del Departamento
siempre que se repita un determinado profesor, y por
tanto no cumple la 2FN.
E STUDIO DE N ORMALIZACIÓN 39
Tercera Forma Normal (3FN)
X ∩Z = φ
∃Y : X ∩ Y = φ, Y ∩ Z = φ
X → Y, Y 9 X y Y →Z
E STUDIO DE N ORMALIZACIÓN 40
• Aunque nuestro esquema no cumple la 2FN, este tipo de
transitividad también se presenta:
E STUDIO DE N ORMALIZACIÓN 41
• Otra forma equivalente, aunque algo más sencilla, de
comprobar si un esquema está en 3FN es la siguiente: un
esquema estará en 3FN si para toda dependencia
funcional no trivial X → A ( es decir que A * X ) se cumple
alguna de las siguientes condiciones:
1. X es una superclave de R
2. A está contenida en una clave candidata de R
E STUDIO DE N ORMALIZACIÓN 42
Forma Normal de Boyce-Codd (FNBC)
E STUDIO DE N ORMALIZACIÓN 43
• Para ver la diferencia entre FNBC y 3FN vamos a retomar
nuestro esquema original:
E STUDIO DE N ORMALIZACIÓN 44
• Hay un aspecto de la FNBC que la hace muy interesante
a la hora de implementar la base de datos. Si todas las
tablas están en FNBC, podemos hacer cumplir las
dependencias funcionales asociadas a cada tabla
mediante la restricción PRIMARY KEY (para la clave
primaria) y UNIQUE (para el resto de claves candidatas).
Sin embargo en 3FN las dependencias del tipo
Profesor→Asignatura suelen tener un coste
computacional elevado, como ya se mencionó
anteriormente.
E STUDIO DE N ORMALIZACIÓN 45
• Resumiendo, si un esquema (tabla) no alcanza una
forma normal satisfactoria, que reduzca la repetición de
información, entonces podemos realizar una
descomposición de la misma.
E STUDIO DE N ORMALIZACIÓN 46
Algoritmo de descomposición en FNBC con la Propiedad LJ
T1 = X ∪ {A} y
T2 = T − {A}
E STUDIO DE N ORMALIZACIÓN 47
• Podemos ver una de las condiciones para que la
descomposición cumpla la propiedad LJ
T1 ∩ T2 → T1 − T2
siempre se cumple, ya que (T1 ∩ T2 ) es X y (T1 − T2 ) es A,
y por tanto, se trata de la propia dependencia X → A. Es
decir, los atributos comunes (X) funcionan como clave
por lo menos en uno de los subesquemas (T2 ).
E STUDIO DE N ORMALIZACIÓN 48
• L1 y L2 son las proyecciones de L+ (cierre del conjunto
L) sobre T1 y T2 respectivamente. Normalmente no
tenemos calculado L+ , por tanto, debemos encontrar
todas las posibles dependencias que impliquen
únicamente a atributos de cada esquema y después
obtener su recubrimiento no redundante.
E STUDIO DE N ORMALIZACIÓN 49
• En la práctica cuando en los esquemas aparecen
dependencias de la forma
X → A1 , X → A2 . . . X → An
donde X no es clave candidata, se genera:
T1 = {X, A1 , A2 . . . An }
T2 = {T − {A1 , A2 . . . An }}
E STUDIO DE N ORMALIZACIÓN 50
• Ejemplo
R(T, L) : T = {Alumno, Asignatura, Profesor, Nota, Dpto}
L= {Alumno Asignatura → Profesor Nota
Profesor → Asignatura Dpto}
Claves Candidatas = {(Alumno Asignatura), (Alumno Profesor)}
E STUDIO DE N ORMALIZACIÓN 51
• El resultado que hemos obtenido con todas las tablas en
FNBC ya lo vimos anteriormente para mostrar que dicha
descomposición no conservaba dependencias. Una vez
más el resultado no parece óptimo, la elección última
dependerá de otros factores de implementación que no
se contemplan en esta teoría de diseño de bases de
datos.
E STUDIO DE N ORMALIZACIÓN 52