• Saltar a la navegación principal
  • Saltar al contenido principal

DBA dixit

Recursos en línea para el administrador y el desarrollador de bases de datos

  • Lo básico
  • SQL
  • Administración
  • Herramientas
  • Buenas prácticas
  • Performance & Tuning
Usted está aquí: Inicio / Buenas prácticas / Segunda forma normal o 2FN

Segunda forma normal o 2FN

05/02/2021 by DBA

Segunda forma normal o 2FN

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

Ejemplo de la segunda forma normal

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.

Publicado en: Buenas prácticas, Performance & Tuning

  • Lo básico
  • SQL
  • Administración
  • Herramientas
  • Buenas prácticas
  • Performance & Tuning

Copyright © 2023 · Wellness Pro on Genesis Framework · WordPress · Acceder