¿Qué forma normal usar para normalizar?

Figura 1.0. Propiedades de las formas normales y sus descomposiciones

Después de aprender varios conceptos como dependencias funcionales y dependencias multivaluadas; surge la gran duda… ¿Qué forma normal usar para normalizar?. Puedes encontrar tanta información y teoría como quieras, pero pondré algunos consejos para tomar esta decisión.

Forma Normal de Boyce-Codd (FNBC)

Si se quiere eliminar la redundancia por dependencias funcionales, y por cada relación que se desea descomponer – para normalizar – existen al menos una dependencia funcional que viole (no cumpla) la definición de la forma normal de Boyce-Codd, entonces esta forma se debe usar.

Si ninguna dependencia funcional viola la FNBC en la relación R, entonces no es recomendable hacer esta forma normal, ya que se necesitaría obtener la cerradura de cada combinación de atributos para verificar que verdaderamente la relación R está en BCNF. En otras palabras, se puede normalizar, pero al no tener dependencias funcionales que violen la definición, entonces se deberá buscarlas todas, y esto es muy costoso.

Si la descomposición resultante de aplicar el algoritmo para normalizar en FNBC, no preserva las dependencias funcionales, entonces no se debe aplicar esta normalización. Preservar una dependencia funcional, significa que la dependencia funcional debe cumplir la misma restricción antes y después de la descomposición. Por ejemplo:

  • A->B y B->C en R(A, B, C) después de descomponer la relación podría quedar como S(A, B) y D(B, C). Ambas dependencias funcionales se preservan, ya que la primer DF se preserva en S y la segunda DF se preserva en D. Si hubiera ocurrido que S(A, C) y D(C, B) fueran resultado de la descomposición, entonces la primer dependencia funcional no se preserva.

Si por alguna de las recomendaciones de arriba no se puede normalizar con la forma normal de Boyce-Codd, entonces se debe usar la tercera forma normal.

Tercera forma normal (3NF)

La tercera forma normal (3NF) es la normalización más usual en la práctica ya que permite eliminar la mayor parte de redundancia por dependencias funcionales y conservar las dependencias funcionales (algo que quizá no se logre en las otras formas normales).

Cuarta forma normal (4FN)

La descomposición en la cuarta forma normal, solo debe usarse si en alguna relación existen dependencias funcionales y dependencias multivaluadas. Si las relaciones en el esquema de base de datos, cada relación solo tiene un tipo de dependencia (funcional o multivaluada), no es necesario aplicar la cuarta forma normal ya que el diseño del esquema de la base de datos ya no lo necesita.

Supongamos que tenemos una relación R que tiene dependencias funcionales y dependencias multivaluadas, la cuarta forma normal permite dividir la relación R de tal manera que se sacan las dependencias multivaluadas; para evitar la redundancia de tener dependencias funcionales y dependencias multivaluadas en una misma relación.

Conclusiones

Dependiendo lo que requieras, en la figura 1 se muestra el algoritmo de la forma normal que deberías usar. Si hiciste el diseño del modelo entidad-relación y lo mapeaste (tradujiste) al modelo relacional, es muy probable que el proceso de normalización sea poco o hasta nulo.

Para más información, recomiendo leer Ullman, J., & Widom, J. (2007). A First Course in Database Systems (3rd ed.). Pearson.

Comentarios