Cuarta forma normal


La cuarta forma normal ( 4NF ) es una forma normal utilizada en la normalización de bases de datos . Introducido por Ronald Fagin en 1977, 4NF es el siguiente nivel de normalización después de la forma normal de Boyce-Codd (BCNF). Mientras que la segunda , tercera y las formas normales de Boyce-Codd se refieren a las dependencias funcionales , la 4NF se ocupa de un tipo más general de dependencia conocida como dependencia multivalor . Una tabla está en 4NF si y solo si , para cada una de sus dependencias multivalor no triviales X Y , X es una superclave , es decir, X es una clave candidata o un superconjunto de la misma. [1]

Si los encabezados de columna en una tabla de base de datos relacional se dividen en tres grupos separados X , Y y Z , entonces, en el contexto de una fila en particular, podemos referirnos a los datos debajo de cada grupo de encabezados como x , y , y z respectivamente. Una dependencia de valores múltiples X Y significa que si elegimos cualquier x que ocurra realmente en la tabla (llame a esta opción x c ), y compilamos una lista de todas las combinaciones x c yz que ocurren en la tabla, encontraremos que x c está asociado con el mismo y entradas independientemente de z . Entonces, esencialmente, la presencia de z no proporciona información útil para restringir los posibles valores de y .

Una dependencia trivial de valores múltiples X Y es aquella en la que Y es un subconjunto de X , o X e Y juntos forman el conjunto completo de atributos de la relación.

Una dependencia funcional es un caso especial de dependencia multivalor. En una dependencia funcional XY , cada x determina exactamente una y , nunca más de una.

La tabla no tiene atributos que no sean clave porque su única clave es {Restaurante, Variedad de pizzas, Área de entrega}. Por tanto, cumple con todas las formas normales hasta BCNF. Sin embargo, si asumimos que las variedades de pizza ofrecidas por un restaurante no se ven afectadas por el área de entrega (es decir, un restaurante ofrece todas las variedades de pizza que fabrica en todas las áreas que abastece), entonces no cumple con 4NF. El problema es que la tabla presenta dos dependencias de valores múltiples no triviales en el atributo {Restaurante} (que no es una superclave). Las dependencias son:

Estas dependencias no triviales de valores múltiples de una no superclave reflejan el hecho de que las variedades de pizza que ofrece un restaurante son independientes de las áreas a las que entrega el restaurante. Este estado de cosas conduce a la redundancia en la tabla: por ejemplo, se nos dice tres veces que A1 Pizza ofrece Stuffed Crust, y si A1 Pizza comienza a producir pizzas de Cheese Crust, entonces tendremos que agregar varias filas, una para cada una de A1 Pizza. áreas de entrega. Además, no hay nada que nos impida hacer esto incorrectamente: podríamos agregar filas de corteza de queso para todas las áreas de entrega de A1 Pizza menos una, sin respetar así la dependencia de valores múltiples {Restaurante} {Variedad de pizza}.