Capítulo 5
Normalización
Diseño de BD Relacionales
• ¿Qué pasa si no nos preocupamos de la calidad del diseño de
una BD relacional?
Diseño de BD Relacionales
• ¿Qué pasa si no nos preocupamos de la calidad del diseño de
una BD relacional?
Consecuencia
Redundancia de información
Trabajo con valores nulos
innecesario
Comprensibilidad disminuida
Restricciones de integridad
insuficientes
Relaciones entre atributos no
contempladas
Chequeo ineficiente de
restricciones de integridad
Diseño de BD Relacionales
• ¿Cómo el problema de tener un diseño de calidad va a
afectar a los desarrolladores si no se preocupan?
Consecuencia
Redundancia de información
Trabajo con valores nulos
innecesario
Comprensibilidad disminuida
Restricciones de integridad
insuficientes
Relaciones entre atributos no
contempladas
Chequeo ineficiente de
restricciones de integridad
Diseño de BD Relacionales
• ¿Cómo el problema de tener un diseño de calidad va a
afectar a los desarrolladores si no se preocupan?
Consecuencia Tarea Requerida
Redundancia de información ocuparse mantener la consistencia entre las
copias.
Trabajo con valores nulos Al borrar tuplas consultar si no se pierde
innecesario información y preservarla si hace falta.
Comprensibilidad disminuida Aclaraciones y entrenamiento extra a los que
usan la BD para evitar que la usen mal.
Restricciones de integridad Restaurar la integridad de la BD cada vez que la
insuficientes misma queda en estado inconsistente.
Relaciones entre atributos no Modificar el diseño y averiguar los datos
contempladas faltantes con los proveedores de datos.
Chequeo ineficiente de Funcionamiento más lento del sistema gestor
restricciones de integridad de BD.
Diseño de BD Relacionales
• Meta: aprender a hacer diseños de calidad de
esquemas de BD relacionales.
• Solución: algoritmos de normalización.
Diseño de BD Relacionales
• Mensaje: Si proveo inputs deficientes, la calidad de la
solución calculada se va a ver perjudicada.
• Aun cuando no aplico algoritmos de normalización
necesito tener los inputs para el mismo. ¿por qué?:
Diseño de BD Relacionales
• Mensaje: Si proveo inputs deficientes, la calidad de la
solución calculada se va a ver perjudicada.
• Aun cuando no aplico algoritmos de normalización
necesito tener los inputs para el mismo. ¿por qué?:
1. Debo considerar los atributos del problema en el diseño.
• Sino el cliente va a quedar descontento.
2. Las DF son restricciones de integridad que necesitan ser
capturadas para mantener la integridad de la BD.
• Conclusión: El aplicar normalización es un bonus por
tener los inputs adecuados que son obligatorios.
Metas de la normalización
• Idea de algoritmo de normalización
Decidir si un esquema R está en “buena” forma.
Que está en “buena” forma implica que R no introduce
ciertos inconvenientes de diseño.
¿Si R no está en “buena” forma qué hacer?
Metas de la normalización
• Idea de algoritmo de normalización
Decidir si un esquema R está en “buena” forma.
En el caso en que R no está en “buena” forma,
decomponerlo en un conjunto de esquemas {R1, R2, ..., Rn}
tal que:
o Cada esquema está en buena forma
o La descomposición es de reunión sin pérdida
La teoría se basa en las DFs.
Metas de la normalización
¿Cuando descomponemos un esquema R con un conjunto de
DFs F en R1, R2,.., Rn qué cosas queremos? (Repaso)
Metas de la normalización
¿Cuando descomponemos un esquema R con un conjunto de
DFs F en R1, R2,.., Rn qué cosas queremos?
o Descomposición de reunión sin pérdida: de otro modo la
descomposición va a tener pérdida de información.
o No redundancia de información: Los esquemas Ri preferentemente
deben estar en forma normal de Boyce-Codd o en Tercera forma
Normal.
o Preservación de las dependencias: Sea Fi el conjunto de DF de F+ que
incluye solo atributos en Ri.
Preferentemente la descomposición debe conservar las dependencias,
esto es, (F1 F2 … Fn)+ = F+
De otro modo, chequear actualizaciones para violaciones de las DFs va a
requerir computar reuniones naturales lo cual es costoso.
Metas de la normalización
• Meta: responder a la siguientes preguntas:
• Problema 1: ¿Qué significa tener un esquema R en
buena forma con respecto a un conjunto F de DFs?
• Problema 2: ¿Cómo comprobar si un esquema R está
en buena forma con respecto a un conjunto F DF?
• ¿Por qué necesito preocuparme del problema 2?
– Hay algoritmos de normalización que necesitan de estas
comprobaciones.
Forma normal de Boyce Codd
• Solución al problema 1:
– R universal, DFs que señalan redundancia de datos: DF no trivial
tal que su parte izquierda no determina R y sus atributos del
lado derecho representan información redundante.
– Idea: estar en “buena” forma es prohibir este tipo de DFs.
Hay DF no trivial tal que su parte izquierda no
determina R.
(⟺) ∃α : α no es superclave de R ∧ α+ ≠ α.
(⟺) ┐(∀α⊆R: α es superclave de R ⋁ α+= α).
(⟺) ┐(∀ α ⊆ R: α es superclave de R V
(∀ β ⊆R: α β є F+ ⟹ β ⊆α)).
(⟺) ┐(∀ α,β ⊆R: αβ є F+ ⟹
(α es superclave de R ⋁ β ⊆α)).
Forma normal de Boyce Codd
• Definición: Un esquema R está en forma normal de
Boyce-Codd (FNBC) con respecto a un conjunto F de DFs
si para todas las DFs en F+ de la forma , donde
R y R, al menos una de las siguientes
propiedades se cumple:
es trivial (i.e., )
es una superclave de R (i.e. R ∈ F+).
Definición: Sea R esquema universal, F conjunto de DFs.
Una descomposición {R1,…,Rn} de R está en Forma
normal de Boyce-Codd (FNBC) con respecto a F si y solo
si cada Ri está en FNBC con respecto a F.
Forma normal de Boyce Codd
• ¿Cómo comprobar que un esquema R con
respecto a F no está en FNBC?
• Ayuda: primero negar la condición de Boyce
Codd y luego responder la pregunta.
Forma normal de Boyce Codd
• ¿Cómo comprobar que un esquema R con
respecto a F no está en FNBC?
• Una DF de F+ que no cumple la condición de FNBC
se llama violación o DF testigo.
– Es una DF no trivial en Fi tal que Ri ∉F+
• Para probar que R no está en FNBC con respecto
a F basta con encontrar una DF testigo en F+.
– A veces (pero no siempre) la DF testigo está en F.
Forma normal de Boyce Codd
• Ejemplo: Sea R = (A, B, C) esquema con DFs:
F = {AB, BC}.
{A} es clave candidata de R
R no está en FNBC. ¿Por qué?
Sea la descomposición de R: R1 = (A, B), R2 = (B, C)
Esta descomposición está en FNBC, es de reunión sin
pérdida y preserva las dependencias.
Forma normal de Boyce Codd
• Tengo esquema R y F conjunto de DF.
• ¿Cómo encontrar dependencia testigo
cuando R no está en FNBC?
Forma normal de Boyce Codd
• Tengo esquema R y F conjunto de DF.
• ¿Cómo encontrar dependencia testigo
cuando R no está en FNBC?
– Primero se pueden comprobar las dependencias
funcionales de F.
– Si no se encontró ninguna DF testigo en F se
puede continuar mirando DFs que se deducen a
partir de F.
Forma normal de Boyce Codd
• Ejemplo: Sea el esquema relacional R = (A, C, D) con
DFs: F = {AB, BC}.
• ¿Está R en FNBC?
Forma normal de Boyce Codd
• Problema 2: ¿Cómo comprobar si un esquema R está
en FNBC con respecto a un conjunto F de DF?
– Iremos respondiendo mediante un análisis de casos.
• Caso 1: los atributos de F están contenidos en R.
• Proposición: Para comprobar si R, F está en FNBC,
donde los atributos de F están contenidos en R, basta
con chequear la condición de FNBC para las DF de F.
– Hay que ver que ninguna DF es testigo.
Forma normal de Boyce Codd
• Ejemplo: Sea R = (A, B, C) esquema con DFs:
F = {AB, BC, CA}.
¿Está R en FNBC?
Forma normal de Boyce Codd
• Ejemplo: Sea el esquema relacional R = (A, B, C, D)
con DFs: F = {AB, BC}.
– {A,D} es clave candidata.
– R no está en FNBC. ¿Por qué?
Forma normal de Boyce Codd
• Ejemplo: Sea el esquema relacional R = (A, B, C, D)
con DFs: F = {AB, BC}.
– {A,D} es clave candidata.
– R no está en FNBC. ¿Por qué?
– Sea la descomposición de R: R1 = (A, B), R2 = (A, C, D)
– Esta descomposición no está en FNBC, porque no lo está
R2.
– Observar que no basta con mirar solo F para responder si
la descomposición está en FNBC.
– ¿Generalizando este ejemplo qué se puede afirmar?
Forma normal de Boyce Codd
• Respuesta: Usar sólo F puede ser incorrecto cuando
se prueba un esquema en una descomposición del
esquema universal.
– Si RU (esquema universal) está descompuesto, y esquema
R de la descomposición de RU cumple: los atributos de F no
están contenidos en R.
• hay que comprobar dependencias de F+ en R.
• Uno puede comenzar buscando DF testigo en R.
Forma normal de Boyce Codd
• Situación: lo intentamos y no encontramos una DF testigo.
– En ese caso intentar probar que tenemos un esquema en FNBC.
• Comprobación de FNBC (caso 2): Sea RU universal, con DFs
F y sea Ri que forma parte de descomposición de RU; para
probar que Ri está en FNBC se puede hacer la siguiente
comprobación:
∀ α ⊆ Ri : α+ ∩ (Ri – α) = ф ⋁ Ri ⊆α+
• Prueba: Supongamos que Ri está en FNBC y ┐Ri ⊆α+:
toda α β en F+ con atributos en Ri es trivial.
Esto equivale a β ∩ (Ri – α) = ф
Luego: α+ ∩ (Ri – α) = ф (tomo β = α+)
Forma normal de Boyce Codd
• Ejercicio: Sea F dado por:
1. nomBib calle, numero
2. calle, numero nomBib
3. ISBN título, editorial, autores, edición
4. nomBib, numInv ISBN
• Sea la descomposición:
BibLibs = (nomBib, numInv, ISBN)
Biblioteca = (nomBib, calle, número)
Libro = (ISBN, título, editorial, autores, edición)
• Comprobar que Biblioteca, Libro están en FNBC.
Forma normal de Boyce Codd
• La comprobación de FNBC va a ser usada por el
algoritmo de normalización.
• Situación: la comprobación de FNBC falla para un α.
– ¿Esto qué quiere decir?
– Ayuda: negar la condición de comprobación de FNBC.
Forma normal de Boyce Codd
• La comprobación de FNBC va a ser usada por el
algoritmo de normalización.
• Situación: la comprobación de FNBC falla para un α.
– Eso nos permite definir una DF testigo.
– ¿Cuál es una dependencia testigo?
– Considerar la negación de la comprobación de FNBC
Forma normal de Boyce Codd
• Observación: Si α ⊆ Ri viola la condición:
∀ α ⊆ Ri : α+ ∩(Ri – α) = ф ⋁ Ri ⊆ α+
entonces la siguiente DF es testigo:
– α α+ ∩ (Ri – α) .
– Notar que por teoría de conjuntos:
α+ ∩ (Ri – α) = (α+ - α) ∩ (Ri – α) = (α+ - α) ∩Ri
– Luego α (α+- α) ∩ Ri es testigo.
– Esta DF muestra que Ri viola la FNBC.
Algoritmo de normalización en FNBC
• Problema 3: Sea R, F conjunto de DFs. ¿Cómo hallar una
descomposicion de R que está en FNBC?
• Solución: Algoritmo de normalización en FNBC.
• result := {R};
done := false;
while (not done) do
if (there is a schema Ri in result that is not in BCNF)
then begin
let DF testigo de Ri and = ;
result := (result – Ri ) (Ri – ) (, );
end
else done := true;
Algoritmo de normalización en FNBC
• Algunas aclaraciones sobre el algoritmo
anterior si se implementa automáticamente:
– Para buscar esquema que no está en FNBC se
puede usar el algoritmo de comprobación de que
esquema está en FNBC.
∀ α ⊆ Ri : α+ ∩ (Ri – α) = ф ⋁ Ri ⊆α+
– Ese algoritmo va a encontrar un α que no cumple
la condición. Y a partir del mismo se puede
obtener la DF testigo:
α (α+- α) ∩ Ri
Algoritmo de normalización en FNBC
• Algunas aclaraciones sobre cómo aplicar el
algoritmo anterior a mano:
– ¿Cómo buscar DF testigo para un Ri?
Algoritmo de normalización en FNBC
• Algunas aclaraciones sobre cómo aplicar el
algoritmo anterior a mano:
– ¿Cómo buscar DF testigo para un Ri?
• Se puede primero buscar testigo mirando DF en F.
• Si el intento anterior fracasó: derivar DF en Fi a partir de F y
chequear si es testigo. Repetir esto varias veces si hace falta.
– A la DF testigo se le sacan atributos del lado derecho que están
en el lado izquierdo.
• Si el intento anterior falló, recién usar el algoritmo para
chequear que Ri está en FNBC o para encontrar DF testigo.
∀ α ⊆ Ri : α+ ∩ (Ri – α) = ф ⋁ Ri ⊆α+
Algoritmo de normalización en FNBC
• Ejercicio: Aplicar el algoritmo de normaliza-
ción en FNBC a:
R = (A, B, C, D, E, F)
F = {A CB, E FA}
Algoritmo de normalización en FNBC
• Proposición: Luego de cada paso de iteración
obtenemos una descomposición de reunión sin
pérdida.
• Prueba: Luego del primer paso de iteración
obtenemos la descomposición: {(Ri – ), (, )}
– Observar que (Ri – ) ∩ (, ) =
– Por aumentatividad ∊ F+
– Por lo tanto {(Ri – ), (, )} es descomposi-
ción de reunión sin pérdida (por proposición
del capítulo anterior).
Algoritmo de normalización en FNBC
• Asumimos que al terminar el paso de iteración k
tenemos una descomposición R1,…,Rk+1 de reunión sin
pérdida. O sea, para toda r(R) legal con respecto a F:
r = R ( R1(r) ⨝R2(r) ⨝… ⨝Rn(r)) .
• Asumimos que en el paso k+1 para algún j se descom-
pone Rj en {Rj – δ, (γ, δ)} .
– Observamos que Rj – δ ∩ (γ, δ) = γ
– Por aumentatividad γ γ δ ∊ Fj+
– Luego {Rj – δ, (γ, δ)} es de reunión sin pérdida
• s = Rj – δ(s) ⨝ (γ, δ)(s) para todo s legal en Fj
Algoritmo de normalización en FNBC
Sea r(R) legal bajo F.
r
= {luego de paso k descomposición de reunión sin pérdida}
R ( R1(r) ⨝… ⨝ Rj(r) ⨝… ⨝Rk+1(r))
= {{Rj – δ, (γ, δ)} de reunión sin pérdida}
R ( R1(r) ⨝… ⨝ Rj - δ (Rj(r) ) ⨝ (γ, δ)(Rj(r) ) ⨝ … ⨝Rk+1(r))
= {A ( B(s) = A(s) cuando A⊆B}
R ( R1(r) ⨝… ⨝ Rj - δ(r) ⨝ (γ, δ)(r) ⨝ … ⨝Rk+1(r))
Por lo tanto, luego del paso de iteración k+1 se obtiene una
descomposición de reunión sin pérdida. QED
Algoritmo de normalización en FNBC
• Ejercicio: Sea el esquema universal:
BibLibs = (nomBib, calle, número, numInv,
ISBN, título, editorial, autores, edición)
Sea F dado por:
– nomBib calle, número
– calle, número nomBib
– ISBN título, editorial, autores, edición
– nomBib, numInv ISBN
Aplicar el algoritmo de normalización en FNBC.
FNBC y preservación de dependencias
• Mensaje: No es siempre posible obtener una
descomposición en FNBC que preserva las
dependencias.
• Ejemplo:
R = (J, K, L)
F = {JK L, L K}
Hay dos claves candidatas: JK y JL
R no está en FNBC.
Toda descomposición de R falla en preservar:
JK L
FNBC y preservación de dependencias
Meta: Encontrar una descomposición en “buena
forma” (i.e. evita la redundancia de información
todo lo posible) que es de reunión sin pérdida y
preserva las dependencias.
Tercera forma normal
Solución: definir una forma normal más débil que FNBC
llamada tercera forma normal.
o Permite alguna redundancia de información.
o Pero las DFs pueden ser chequeadas en relaciones individuales
sin computar reuniones naturales.
o Hay siempre una descomposición en 3FN que es de reunión sin
pérdida y que preserva las dependencias.
Tercera forma normal
Definición: Un esquema R está en tercera forma normal
(3FN) si para todas las DF ∈ F+ tal que , ⊆ R al
menos una de las siguientes condiciones se cumple:
o es trivial (i.e., ⊆)
o es superclave para R (i.e. R ∈ F+).
o Cada atributo A en – está contenido en una clave candidata de
R.
Definición: Sea R esquema universal, F conjunto de DFs. Una
descomposición {R1, …,Rn} de R está en tercera forma normal
(3FN) con respecto a F si y solo si
o cada Ri está en 3FN con respecto a F.
Tercera forma normal
Aclaración: cada atributo puede estar en una clave candidata
diferente
La tercera condición es una relajación mínima de FNBC para
garantizar preservación de las dependencias.
La tercera condición permite obtener dependencias
funcionales que señalan redundancia de información:
o Dependencias funcionales que no cumplen las dos primeras
condiciones y tienen la forma: A con A atributo contenido en
clave candidata de R.
Tercera forma normal
Repaso: clave candidata de R si y solo si
o R ∈ F+ , y
o ∀ C ∈ : ¬ ( - {C}) R ∈ F+
Propiedad: Si un esquema está en FNBC, entonces está en
3FN.
Tercera forma normal
• ¿Cómo comprobar que un esquema R con respecto a F
no está en 3FN?
• Ayuda: primero negar la condición de tercera forma
normal y luego responder la pregunta
Tercera forma normal
• ¿Cómo comprobar que un esquema R con respecto a F
no está en 3FN?
• Una DF de F+ que no cumple la condición de 3FN se
llama violación o DF testigo.
– Es una DF no trivial en Fi tal que Ri ∉F+ y
hay atributo de que no está en clave candidata de Ri.
• Para probar que R no está en 3FN con respecto a F
basta con encontrar una DF testigo en F+.
– A veces (pero no siempre) la DF testigo está en F.
Tercera forma normal
• Ejercicio: Sea R = (I, S, C, D, A, O), con las DFs:
F = {S → D; I → A; IS → C; A → O}
– Sea R1 = (I, S, C, D),
– ¿está R1 en 3FN? Justifique su respuesta.
Tercera forma normal
• Problema: ¿Cómo comprobar si un esquema R está en
3FN con respecto a un conjunto F DF?
• Proposición: Para comprobar si R, F, con los atributos
de F incluidos en R está en 3FN, basta con comprobar
las DFs de F.
– Además se pueden descomponer las DFs de F de modo
que sus lados derechos consistan solo de atributos
sencillos y utilizar el conjunto resultante en lugar de F.
Tercera forma normal
¿Cómo se chequea DF de F+ ?
Tercera forma normal
¿Cómo se chequea DF de F+ ?
Usar clausuras de atributos para chequear para cada DF
, si es una superclave.
Si no es una superclave, tenemos que verificar si cada
atributo en está contenido en una clave candidata de R
o Esta prueba es bastante más cara, porque involucra encontrar claves
candidatas.
Tercera forma normal
• Ejercicio: Sea el esquema relacional R = (J,K,L) con
DFs:
F = {JK L, L K}.
Probar que R está en 3FN.
• Se permite redundancia de información:
J K L
j1 l1 k1
j2 l1 k1
j3 l1 k1
null l2 k2
Tercera forma normal
• Si los atributos de F no están incluidos en Ri
(contenido en el esquema universal)
– el chequeo de si Ri está en 3FN se complica bastante.
• Chequeo a realizar: Si para todos los α ⊆ Ri que
no cumplen:
α+ ∩ (Ri – α) = ф ⋁ Ri ⊆α+
– Chequear que cada atributo de α+ ∩ (Ri – α) está
incluido en una clave candidata de Ri
(incluye el caso de que distintos atributos de α+ ∩ (Ri – α)
estén en distintas claves candidatas de Ri);
– entonces Ri está en 3FN.
Tercera forma normal
• Si el chequeo anterior da verdadero, entonces el
esquema Ri está en 3FN:
– Asumimos que el chequeo anterior da verdadero.
– Hacemos una prueba por el absurdo, o sea, supongamos
que Ri no está en 3FN : existe ∈ F+ tal que , ⊆ Ri
no es trivial, no es superclave de Ri y existe atributo A en
– que no está contenido en ninguna clave candidata
de Ri.
– Como A en – se tiene que A en Ri – α; por lo tanto A
en α+ ∩ (Ri – α) y A no está contenido en ninguna clave
candidata de Ri. Esto es un absurdo! Porque el chequeo
anterior dio verdadero.
Tercera forma normal
• Ejercicio: Sea R = (A, B, C, D,E, F) con DFs
G = {A BC; BC DEF; E F; BF A}
• ¿Está el esquema R2 = (B, D, F, E) en 3FN?
• Solución:
– Solo hay dos α ⊆ R2 que no cumplen:
α+ ∩ (R2 – α) = ф ⋁ R2 ⊆α+
– α = E y α = ED. Hay que analizarlos.
Tercera forma normal
• Si hay α ⊆ Ri que no cumple: α+ ∩ (Ri – α) = ф ⋁ Ri ⊆α+ , y hay
un atributo A de α+ ∩ (Ri – α) que no está contenido en
ninguna clave candidata de Ri , entonces la dependencia
funcional A es testigo.
Tercera forma normal
• Situación: Probar 3FN ha sido probado que es NP-hard.
• Sin embargo, la descomposición en 3FN puede ser hecha en
tiempo polinomial.
o Mensaje: no necesito preocuparme por chequear si el esquema
universal está en 3FN.
• Problema: Sea R, F conjunto de DFs. ¿Cómo hallar una
descomposicion de R que está en 3FN?
• Solución: Algoritmo de normalización en 3FN.
Algoritmo de normalización en 3FN
• Let Fc be a canonical cover for F;
i := 0;
for each functional dependency in Fc do
if none of the schemas Rj, 1 j i contains
then begin
i := i + 1;
Ri :=
end
if none of the schemas Rj, 1 j i contains a candidate key for R
then begin
i := i + 1;
Ri := any candidate key for R;
end
return (R1, R2, ..., Ri)
Algoritmo de normalización en 3FN
• Ejercicio: Sea el esquema universal:
– BibLibs = (nomBib, calle, número, numInv, ISBN, título,
editorial, autores, edición)
Sea F dado por:
1. nomBib calle, numero
2. calle, numero nomBib
3. ISBN título, editorial, autores, edición
4. nomBib, numInv ISBN
Descomponer BibLibs en 3FN.
Corrección del algoritmo de
descomposición en 3FN
El algoritmo evita descomponer más de la cuenta y el
hacerlo implica chequear dependencias funcionales en
más de una tabla.
o Si agregué y luego agrego δγ, y δγ entonces la
dependencia δ γ la voy a tener que chequear en las tablas
con columnas: y δγ respectivamente.
El algoritmo de descomposición en 3FN garantiza la
preservación de las dependencias,
o debido a que hay un esquema para cada DF en Fc.
Corrección del algoritmo de
descomposición en 3FN
Además se arranca con las dependencias de Fc para
que la descomposción resultante esté en 3FN.
La descomposición obtenida es de reunión sin pérdida.
– Una clave candidata está en uno de los esquemas Ri de la
descomposición.
– Ejercicio de la práctica.
Corrección del algoritmo de
descomposición en 3FN
Si un esquema Ri está en la descomposición
generada por el algoritmo anterior, entonces Ri
satisface 3FN.
o Sea Ri generado por la DF
o Sea B una DF no trivial en Ri. (Necesitamos solo
considerar DFs cuya partes derechas tienen un solo
atributo)
o B puede estar en o pero no en ambos.
Consideramos cada caso por separado.
Corrección del algoritmo de
descomposición en 3FN
Caso 1: Si B ∈ :
– If is a superkey, the 2nd condition of 3NF is satisfied
– Otherwise must contain some attribute not in
– Since B is in F+ it must be derivable from Fc, by using attribute closure on
.
– Attribute closure not have used - if it had been used, must be
contained in the attribute closure of , which is not possible, since we
assumed is not a superkey.
– Now, using (- {B}) and B, we can derive B
(since , and B since B is non-trivial)
– Then, B is extraneous in the right-hand side of ; which is not possible
since is in Fc.
– Thus, if B is in then must be a superkey, and the second condition of 3NF
must be satisfied.
Corrección del algoritmo de
descomposición en 3FN
Caso 2: B ∈ .
– Debido a que es una clave candidata, se satisface
trivialmente la tercera alternativa en la definición de 3FN.
– De hecho, no podemos probar que es una superclave.
– Esto muestra exactamente porqué la tercera alternativa
está presente en la definición de la 3FN.
Q.E.D.
Comparación de FNBC y 3FN
Es siempre posible descomponer un esquema en esquemas
en 3FN y
o La descomposición es de reunión sin pérdida.
o Las dependencias son preservadas.
Es siempre posible descomponer un esquema en FNBC y
o La descomposición es de reunión sin pérdida.
o Puede no ser posible preservar las dependencias.
Resultados obtenidos
• ¿Cómo afecta al futuro el usar los algoritmos de
normalización estudiados?
– Descomposiciones de reunión sin pérdida.
– En caso de usar 3FN se tienen preservación de las
dependencias.
– Se evita bastante redundancia de información:
• FNBC es mejor que 3FN en esto.