Teoría:
| R está en 2FN si y sólo si está en 1FN y todos los atributos no clave dependen funcionalmente de manera completa de la clave primaria.
(NOTA: cuando se dice un “atributo no clave“ estamos indicando tanto que este atributo no forma parte de una clave candidata o no es en sí mismo clave candidata). |
En la práctica:
Si la clave es compuesta (más de un atributo), chungo. Tenemos que comprobar que no haya dependencias entre los atributos que componen la clave primaria y el resto de atributos que no son clave.
En nuestro caso, la cosa huele mal. De todos modos lo primero será identificar las claves primarias de cada relación (si no lo habíamos hecho ya). En este caso tenemos:
Como vemos la cosa tiene mala pinta, todas las claves son compuestas. Empecemos con la primera relación, SP.
Dibujamos el diagrama de las dependencias funcionales respecto a la clave primaria existente para asustarnos ya del todo (de momento omitimos cualquier otra dependencia que no sea la de clave primaria para no confundirnos, tenemos que tener claro que estamos comprobando la 2FN).
Fig.1. Diagrama de dependencias funcionales |
El problema:
Los inconvenientes que presenta una relación así son principalmente:
Y en este caso tenemos... un auténtico desastre, esa es la verdad. Y es que sólo hay un atributo no clave que dependa funcionalmente de manera completa de la clave, la cantidad. ¿Cómo arreglamos este desaguisado?.
La solución:
Teoría:
| Teorema:
Sea R una relación con atributos (A,B,C,D) y con clave primaria (A,B) tal que A --> D, entonces la relación R puede descomponerse como: R --> R1(A,D) y R2(A,B,C) |
En la práctica:
Sacamos de la relación los atributos no clave que dependan funcionalmente de un componente de la clave y los metemos en una nueva relación, esta relación tendrá como clave primaria el componente de la clave del que depende el resto.
En nuestro caso (tabla SP) veremos que tenemos que aplicar el método dos veces. Pero vayamos poco a poco. En primer lugar tenemos que la clave primaria es (S#,P#) y que existen atributos que dependen funcionalmente de S#. Tomamos S# y todos esos atributos y los metemos en una nueva relación, a la que, para ser sorprendentemente originales, le pondremos el nombre S.Tendremos por tanto la siguiente relación:
Y la relación original quedaría como:
Sin embargo, como supongo que ya habréis adivinado, esta última relación sigue sin estar en 2FN, mirando el diagrama observamos que color y nompie dependen funcionalmente de P#, un componente de la clave (S#,P#). Volvemos a aplicar el teorema para SP, en este caso para con el atributo P# y todos los atributos que dependen funcionalmente de él (color y nompie claro).
El resultado final es:
Ahora nos queda la tabla SPJ, directamente el resultado final es:
Hazlo tu mismo:
Desarrolla todo el proceso no descrito para la tabla SJP.
| Anterior | [1] | [2] | [3] | [4] | [5] | [6] | Siguiente |