Cuarta forma normal
Cuarta forma normal ()4NF) es un formulario normal utilizado en la normalización de la base de datos. Presentada por Ronald Fagin en 1977, 4NF es el siguiente nivel de normalización después de la forma normal Boyce-Codd (BCNF). Mientras que las formas normales segunda, tercera y Boyce-Codd están relacionadas con dependencias funcionales, 4NF se preocupa por un tipo más general de dependencia conocido como una dependencia multivalorizada. Una tabla está en 4NF si y sólo si, por cada una de sus dependencias no tripuladas X ↠ ↠ {displaystyle twoheadrightarrow } Y, X es un superkey, es decir, X es una clave candidata o una superposición de ella.
Dependencias de varios valores
Si los encabezados de la columna en una tabla de bases de datos relacionales se dividen en tres agrupaciones disyuntivas X, Y, y Z, entonces, en el contexto de una fila particular, podemos referirnos a los datos debajo de cada grupo de encabezados como x, Sí., y z respectivamente. Una dependencia multivalorada X ↠ ↠ {displaystyle twoheadrightarrow } Y significa que si elegimos algo x realmente ocurre en la tabla (llamar esta opción xc), y compilar una lista de todos los xcYz combinaciones que ocurren en la tabla, encontraremos que xc se asocia con el mismo Sí. independientemente de las entradas z. Así que esencialmente la presencia de z no proporciona información útil para limitar los posibles valores de Sí..
A dependencia trivial multivalorada X ↠ ↠ {displaystyle twoheadrightarrow } Y es uno donde o Y es un subconjunto de X, o X y Y juntos forman todo el conjunto de atributos de la relación.
Una dependencia funcional es un caso especial de dependencia multivaluada. En una dependencia funcional X → Y, cada x determina exactamente una y, nunca más de una.
Ejemplo
Considere el siguiente ejemplo:
Restaurante | Pizza Variety | Zona de entrega |
---|---|---|
A1 Pizza | Thick Crust | Springfield |
A1 Pizza | Thick Crust | Shelbyville |
A1 Pizza | Thick Crust | Capital City |
A1 Pizza | Crust of Stuffed | Springfield |
A1 Pizza | Crust of Stuffed | Shelbyville |
A1 Pizza | Crust of Stuffed | Capital City |
Elite Pizza | Thin Crust | Capital City |
Elite Pizza | Crust of Stuffed | Capital City |
Pizza de Vincenzo | Thick Crust | Springfield |
Pizza de Vincenzo | Thick Crust | Shelbyville |
Pizza de Vincenzo | Thin Crust | Springfield |
Pizza de Vincenzo | Thin Crust | Shelbyville |
Cada fila indica que un restaurante determinado puede entregar una variedad determinada de pizza en un área determinada.
La tabla no tiene atributos que no sean clave porque su única clave candidata es {Restaurante, Variedad de pizza, Área de entrega}. Por lo tanto, cumple con todas las formas normales hasta BCNF. Sin embargo, si asumimos que las variedades de pizza que ofrece 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 multivaluadas no triviales en el atributo {Restaurante} (que no es una superclave). Las dependencias son:
- {Restaurante} ↠ ↠ {displaystyle twoheadrightarrow } {Pizza Variety}
- {Restaurante} ↠ ↠ {displaystyle twoheadrightarrow } {Área de animación}
Estas dependencias multivaloradas no tripuladas de un no-superkey reflejan el hecho de que las variedades de pizza que ofrece un restaurante son independientes de las áreas a las que el restaurante ofrece. Este estado de cosas conduce a la redundancia en la mesa: por ejemplo, se nos dice tres veces que A1 Pizza ofrece Stuffed Crust, y si A1 Pizza comienza a producir pizzas Cheese Crust entonces tendremos que añadir varias filas, una para cada una de las áreas de entrega de A1 Pizza. Además, no hay nada que nos impida hacer esto incorrectamente: podríamos añadir filas de Crust de Queso para todos menos una de las áreas de entrega de A1 Pizza, por lo que no respetan la dependencia multivalorada {Restaurante} ↠ ↠ {displaystyle twoheadrightarrow } {Pizza Variety}.
Para eliminar la posibilidad de estas anomalías, debemos colocar los datos sobre las variedades ofrecidas en una tabla diferente de los datos sobre las áreas de entrega, lo que genera dos tablas que están en 4FN:
Restaurante | Pizza Variety |
---|---|
A1 Pizza | Thick Crust |
A1 Pizza | Crust of Stuffed |
Elite Pizza | Thin Crust |
Elite Pizza | Crust of Stuffed |
Pizza de Vincenzo | Thick Crust |
Pizza de Vincenzo | Thin Crust |
Restaurante | Zona de entrega |
---|---|
A1 Pizza | Springfield |
A1 Pizza | Shelbyville |
A1 Pizza | Capital City |
Elite Pizza | Capital City |
Pizza de Vincenzo | Springfield |
Pizza de Vincenzo | Shelbyville |
Por el contrario, si las variedades de pizza que ofrece un restaurante a veces variaran legítimamente de un área de entrega a otra, la tabla original de tres columnas satisfaría 4NF.
Ronald Fagin demostró que siempre es posible lograr 4FN. El teorema de Rissanen también es aplicable en dependencias multivaluadas.
4NF en la práctica
Un artículo de 1992 de Margaret S. Wu señala que la enseñanza de la normalización de bases de datos normalmente no llega a 4NF, quizás debido a la creencia de que las tablas que violan 4NF (pero cumplen con todas las formas normales inferiores) rara vez se encuentran en las aplicaciones comerciales. Sin embargo, esta creencia puede no ser precisa. Wu informa que en un estudio de cuarenta bases de datos organizacionales, más del 20% contenía una o más tablas que violaban 4NF mientras cumplían con todas las formas normales inferiores.
Normalización más allá de 4NF
Solo en raras situaciones una tabla 4NF no se ajusta a la forma normal superior 5NF. Estas son situaciones en las que una restricción compleja del mundo real que rige las combinaciones válidas de valores de atributo en la tabla 4NF no está implícita en la estructura de esa tabla.
Contenido relacionado
Marcación demoníaca
Información digital
ECJ