Para que una tabla pueda cumplir con la segunda forma normal es requisito indispensable que cumpla con la primera forma normal, y además que:
- Cualquier campo no-llave (aquellos campos que no forman parte de las llaves) dependa de toda la clave primaria (y de las candidatas) en vez de solo de una parte de ella.
Esto significa que es necesario revisar cualquier campo -que no forme parte de una llave candidata (llámese llave primaria o llaves secundarias). De esta manera se podrá asegurar que no hay campos que estén «fuera de lugar» ya que cualquier campo hablará sobre todo el concepto que se quiere guardar en la tabla y no es un campo que debe estar en otra tabla.
Ejemplo de materias cursadas en una escuela
Considerando la siguiente tabla de materias cursadas por cada alumno en una escuela se podría tener el siguiente modelo de tabla
- Matricula
- ClaveDeMateria
- NombreDeLaMateria
- Calificación
- NombreDelAlumno
Si asumimos que ya cumple con la 1FN y que la llave primaria es Matrícula + Clave de materia (y que no hay otras llaves candidatas) se debe hacer un análisis de los demás campos llave para ver si dependen de toda la llave o solo de parte de ella
- ¿El NombreDeLaMateria depende de toda la llave primaria? Es decir, ¿es un campo que habla de la Matrícula (del alumno) o de ClaveDeMateria (solo de la materia)?. En este caso NombreDeLaMateria depende solo de parte de la llave primaria (solo es un campo relacionado con la materia, no con la combincación de Materia+Alumno), por tanto este campo no cumple con la segunda forma normal.
- Calificación es un valor que está asociado al alumno (Matrícula), pero es la calificación también de dicho alumno en una materia en particular (ClaveDeMateria), por lo que podemos concluir que este campo si cumple con la segunda forma normal.
- NombreDelAlumno, por otro lado, solo es un campo que «habla» del alumno, no de las materias que cursa cada alumno, ya que es un campo que depende de la Matrícula (el nombre de la persona no cambia nunca, independientemente de la materia que curse dicho alumno), por lo que es un campo que no cumple con la segunda forma normal. En este caso, el campo de Nombre del alumno tendrá que estar en aquella tabla donde Matrícula sea llave primaria (es decir, en una eventual tabla de Alumnos), lo cual tiene mucho sentido.
Encontramos por tanto que NombreDeLaMateria y NombreDelAlumno no dependen de toda la llave primaria (y candidatas) por lo que toda la tabla no cumple con la segunda forma normal y es necesario cambiar el modelo. En este caso el nombre de la materia tendrá que ir en la tabla del catálogo de las materias, y el nombre del alumno iría en la tabla de los alumnos inscritos.
Tabla Alumnos:
- Matrícula
- Nombre de alumno
Materias cursadas con
- Clave de Materia
- Aula
Tabla intermedia (transitiva) con
- Matrícula
- Clave de Materia
- Calificación final
IMPORTANTE: Cuando una tabla en 1FN no tiene ninguna clave candidata compuesta (claves candidatas consistiendo en más de un atributo), la tabla está automáticamente en 2FN.