Los problemas de 2FD son producto de la dependencias entre los atributos no claves,
este problema puede ser enunciado formalmente como sigue.
Existen dependencias funcionales entre atributos no claves, es decir, dada una
relación R donde R (x, y, z,.....w) siendo x la clave primaria y el resto atributos no claves,
entonces si existe un atributo diferente de X, un Y (por ejemplo) tal que ese atributo
depende funcionalmente de un atributo no clave “z” ó “w” entonces existe transitividad.
Ahora el problema es descomponer por proyecciones la relación, de tal manera, que
al reunir las proyecciones se obtenga la relación inicial y que las proyecciones sean
independientes.
Una relación está en 3NF si y sólo si está en 2FN y no existe dependencia transitiva
de los atributos no claves con respecto a la clave, es decir, todos los atributos no clave
dependen de manera no transitiva de la clave primaria. La dependencia transitiva aparece
cuando un atributo no clave es funcionalmente dependiente de uno o más atributos no
claves.
R2’ (S#, status, ciudad)
Se hace proyección sobre S# y ciudad y se obtiene
R3’ (S#, ciudad)
Se hace proyección sobre ciudad y status y se obtiene
R3’’ (ciudad, status)
Los diagramas de dependencias funcionales son:
Forma normal Boyce/Codd
La definición de Codd de 3FN acusa ciertas insuficiencias tales como que ésta no
maneja satisfactoriamente el caso de relaciones que posean dos o más claves candidatas
compuestas y solapadas. Una definición revisada (debida a Boyce y a Codd) más fuerte se
dio, con la finalidad de solventar estos problemas.
Esta revisión se denominó Forma normal Boyce/Codd (FNBC). Esta es
conceptualmente más sencilla que la 3FN en el sentido que no hace referencia explícitas de
las 1FN y 2FN, así como tampoco a conceptos de dependencia transitiva o completa.
FNBC: Una relación R está en Forma normal Boyce/Codd si y sólo si cada
determinante es una clave candidata.
Donde un “determinante” se define como un atributo tal vez compuesto, del cual
depende funcionalmente en forma completa algún atributo.
Ejemplos:
Sea R1 (S#, P#, cantidad, ciudad, status)
Determinantes de R1: S#, ciudad, (S#, P#)
R1 no está en FNBC ya que S# y ciudad no son candidatos a clave.
R2 (S#, P#, cantidad) Determinante: (S#, P#)
R2 está en FNBC ya que el determinante es la clave primaria.
R2’ (S#, status, ciudad) Determinante: S#, ciudad
R2’ no está en FNBC ya que ciudad no es candidato a clave primaria.
Consideremos ahora un ejemplo donde las claves candidatas solapan. Dos clave
candidatas se solapan si comprenden dos o más atributos cada una y si tienen algún atributo
en común.
Sea la relación SSP en 3FN
SSP (S#, NOMS, P#, cantidad) claves (S#, P#)
(NOMS, P#)
Determinantes de SSP
S#, NOMS, (P#, S#), (NOMS, P#)
SSP no está en FNBC ya que dos de sus determinantes S# y NOMS no son claves
candidatas (S# determina a NOMS y viceversa).
La solución del problema consiste en descomponer la relación SSP en dos
proyecciones
SS(S#, NOMS) SP(S#, P#, cantidad)
SS y SP están en FNBC.
Bibliografia:
- Lectura de docencia "Sistemas de Bases de Datos" realizado por Concettina Di Vasta y Rossana Díaz
No hay comentarios:
Publicar un comentario