Modelado logico relacional de bases de datos

Introducción a la Normalización de Bases de Datos

La normalización es un proceso que se utiliza en las bases de datos relacionales para organizar los datos de manera que se reduzcan redundancias y se asegure la integridad de los datos. El objetivo principal es evitar la duplicación de información y garantizar que los datos estén estructurados de manera lógica y eficiente.

La normalización se lleva a cabo mediante una serie de "formas normales" o niveles, donde cada nivel se enfoca en resolver ciertos problemas comunes en la estructura de una base de datos.

Primera Forma Normal (1FN)

Una tabla está en Primera Forma Normal (1FN) si cumple con los siguientes requisitos:

  1. Eliminación de grupos repetitivos: Todos los valores de cada columna deben ser atómicos, es decir, no se permiten múltiples valores en una misma celda. Cada columna debe contener un solo valor por fila.
  2. Cada columna debe tener un dominio de valores único: Esto significa que los valores de una columna deben pertenecer a un mismo tipo o categoría de datos.
  3. Todas las filas deben ser únicas: Cada fila debe poder ser identificada de manera única, generalmente mediante una clave primaria.

Ejemplo

Supongamos que tienes una tabla que almacena la información de estudiantes y las materias que cursan. Si una misma celda almacena más de un valor, no está en 1FN.

Tabla Original (No está en 1FN)

EstudianteMaterias
JuanMatemáticas, Física
AnaQuímica, Biología
LuisHistoria

En esta tabla, en la columna "Materias", algunos estudiantes tienen múltiples materias en una misma celda, lo que va en contra del principio de 1FN.

forma normal 0

Para cumplir con la 1ª Forma Normal:

Debemos dividir los valores atómicos, es decir, cada valor debe ocupar una sola celda.

Tabla Normalizada en 1FN

EstudianteMateria
JuanMatemáticas
JuanFísica
AnaQuímica
AnaBiología
LuisHistoria

Ahora, cada celda contiene un único valor, y la tabla está en Primera Forma Normal. Esto elimina la redundancia de almacenar múltiples valores en una sola celda y asegura que cada registro (fila) sea único.

forma normal 1

Conclusión

La Primera Forma Normal es el primer paso para estructurar bien una base de datos, asegurando que cada columna tenga valores atómicos y eliminando la duplicidad dentro de las celdas. Este es solo el comienzo del proceso de normalización, pero es esencial para una base de datos bien diseñada.

Segunda Forma Normal (2FN)

Una tabla está en Segunda Forma Normal (2FN) si primero cumple con los requisitos de la Primera Forma Normal (1FN) y, además, cumple con el siguiente criterio adicional:

  1. No debe haber dependencias parciales: Esto significa que todas las columnas no clave deben depender completamente de la clave primaria, es decir, no puede haber atributos que dependan de una parte de la clave primaria, sino que deben depender de toda la clave.

Esto se aplica principalmente en tablas que tienen una clave primaria compuesta, es decir, una clave que está formada por dos o más columnas. Si la tabla tiene una clave primaria simple (una sola columna), entonces la tabla ya está en 2FN si está en 1FN.

Ejemplo

Imagina una tabla que almacena información de estudiantes y las materias que cursan, junto con el nombre del profesor que imparte la materia. Supongamos que la clave primaria de esta tabla está compuesta por las columnas "Estudiante" y "Materia".

Tabla Original (En 1FN, pero no en 2FN)

EstudianteMateriaProfesorDirección del Estudiante
JuanMatemáticasLópezCalle A
JuanFísicaGarcíaCalle A
AnaQuímicaPérezCalle B
AnaBiologíaLópezCalle B

Aquí, la clave primaria compuesta es (Estudiante, Materia), pero el problema es que la columna "Dirección del Estudiante" depende solo del estudiante, no de la combinación completa de "Estudiante" y "Materia". Esto significa que existe una dependencia parcial: "Dirección del Estudiante" solo depende de "Estudiante", pero no de "Materia".

forma normal 1 pero no 2ª

Para cumplir con la 2ª Forma Normal:

Debemos dividir la tabla en dos tablas separadas: una que contenga la relación entre el estudiante y sus materias (la clave primaria compuesta) y otra que almacene la información del estudiante (sin depender de la materia).

Tabla 1: Materias (Ahora en 2FN)

EstudianteMateriaProfesor
JuanMatemáticasLópez
JuanFísicaGarcía
AnaQuímicaPérez
AnaBiologíaLópez

Tabla 2: Información de Estudiantes (Ahora en 2FN)

EstudianteDirección
JuanCalle A
AnaCalle B

En este caso, cada tabla cumple con la Segunda Forma Normal:

  • En la Tabla 1, no hay dependencias parciales, ya que todas las columnas dependen completamente de la clave primaria compuesta (Estudiante, Materia).
  • En la Tabla 2, la columna "Dirección" depende únicamente del estudiante, que es la clave primaria.
forma normal 2

Conclusión

La Segunda Forma Normal elimina las dependencias parciales dividiendo los datos en múltiples tablas de manera que las columnas no clave dependan completamente de la clave primaria. Esto mejora la organización de la base de datos y reduce aún más las redundancias, asegurando que la información se almacene de manera eficiente.

Tercera Forma Normal (3FN)

Una tabla está en Tercera Forma Normal (3FN) si cumple con los requisitos de la Segunda Forma Normal (2FN) y, además:

  1. No debe haber dependencias transitivas: Esto significa que no puede haber columnas no clave que dependan de otras columnas no clave. Todas las columnas no clave deben depender únicamente de la clave primaria y no de otras columnas que no forman parte de la clave.

Dependencia Transitiva

Una dependencia transitiva ocurre cuando una columna A depende de la clave primaria, y otra columna B depende de A. En este caso, la columna B tiene una dependencia transitiva de la clave primaria, lo que viola la 3FN.

Ejemplo

Supongamos que tienes una tabla de empleados con información sobre la ciudad donde trabajan y el país al que pertenece la ciudad:

Tabla Original (En 2FN, pero no en 3FN)

EmpleadoCiudadPaísCódigo Postal
AnaBarcelonaEspaña08001
JuanMadridEspaña28001
LuisParísFrancia75001
forma normal 2

En esta tabla:

  • La clave primaria es "Empleado".
  • "Ciudad" depende de "Empleado".
  • "País" depende de "Ciudad".
  • "Código Postal" también depende de "Ciudad".

Aquí tenemos una dependencia transitiva: la columna "País" depende de "Ciudad", y "Ciudad" depende de "Empleado". Esto significa que "País" está indirectamente dependiendo de "Empleado" a través de "Ciudad". Lo mismo ocurre con "Código Postal".

Para cumplir con la 3ª Forma Normal:

Debemos eliminar las dependencias transitivas separando las columnas que no dependen directamente de la clave primaria y creando una nueva tabla para ellas.

Tabla 1: Información de Empleados (Ahora en 3FN)

EmpleadoCiudad
AnaBarcelona
JuanMadrid
LuisParís

Tabla 2: Información de Ciudades (Ahora en 3FN)

CiudadPaísCódigo Postal
BarcelonaEspaña08001
MadridEspaña28001
ParísFrancia75001

Ahora, cada tabla está en Tercera Forma Normal:

  • En la Tabla 1, no hay dependencias transitivas. La única columna que no es clave ("Ciudad") depende directamente de la clave primaria ("Empleado").
  • En la Tabla 2, la información sobre el país y el código postal depende directamente de "Ciudad", sin ninguna dependencia transitiva.
forma normal 3

Conclusión

La Tercera Forma Normal elimina las dependencias transitivas, asegurando que todas las columnas no clave dependan únicamente de la clave primaria. Esto mejora aún más la estructura de la base de datos, reduciendo redundancias y garantizando una organización lógica y eficiente.

Cuarta Forma Normal (4FN)

Una tabla está en Cuarta Forma Normal (4FN) si cumple con los requisitos de la Tercera Forma Normal (3FN) y, además:

  1. No debe haber dependencias multivaluadas: Esto significa que no puede haber múltiples relaciones entre columnas independientes en una misma tabla. Es decir, no puede haber columnas que almacenen conjuntos de valores repetidos que no estén relacionados entre sí.

Dependencias Multivaluadas

Una dependencia multivaluada ocurre cuando una tabla contiene dos o más conjuntos de datos que son independientes entre sí, pero están almacenados en la misma tabla. En estos casos, lo ideal es dividir la tabla para que cada conjunto de datos independiente se almacene en su propia tabla.

Ejemplo

Supongamos que tienes una tabla donde se almacena información sobre los proyectos en los que trabajan los empleados y las habilidades que tienen. Un empleado puede trabajar en varios proyectos y tener múltiples habilidades. Si tratamos de almacenar esto en una misma tabla, podemos encontrar una dependencia multivaluada.

Tabla Original (En 3FN, pero no en 4FN)

EmpleadoProyectoHabilidad
AnaProyecto AJava
AnaProyecto ASQL
AnaProyecto BJava
JuanProyecto APython
JuanProyecto CHTML
JuanProyecto CCSS

En esta tabla:

  • La clave primaria es "Empleado".
  • Un empleado puede estar trabajando en varios proyectos.
  • Un empleado puede tener varias habilidades.
forma normal 3

El problema aquí es que las columnas "Proyecto" y "Habilidad" son independientes entre sí. Ana puede estar en múltiples proyectos y tener diferentes habilidades, pero no hay una relación directa entre el proyecto en el que trabaja y las habilidades que tiene. Esto es una dependencia multivaluada.

Para cumplir con la 4ª Forma Normal:

Debemos dividir la tabla en dos tablas separadas: una que relacione empleados con proyectos y otra que relacione empleados con habilidades. Esto elimina las dependencias multivaluadas.

Tabla 1: Empleados y Proyectos (Ahora en 4FN)

EmpleadoProyecto
AnaProyecto A
AnaProyecto B
JuanProyecto A
JuanProyecto C

Tabla 2: Empleados y Habilidades (Ahora en 4FN)

EmpleadoHabilidad
AnaJava
AnaSQL
JuanPython
JuanHTML
JuanCSS

Ahora, ambas tablas cumplen con la Cuarta Forma Normal:

  • En la Tabla 1, se almacena solo la relación entre empleados y proyectos, sin ninguna relación extra.
  • En la Tabla 2, se almacena solo la relación entre empleados y habilidades, sin mezclarse con los proyectos.
forma normal 4

Conclusión

La Cuarta Forma Normal elimina las dependencias multivaluadas, asegurando que los datos que son independientes entre sí se almacenen en tablas separadas. Esto mejora aún más la estructura de la base de datos, eliminando la redundancia y haciendo que las tablas sean más fáciles de gestionar y consultar.

  • Loading...