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:
- 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.
- 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.
- 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)
| Estudiante | Materias |
|---|---|
| Juan | Matemáticas, Física |
| Ana | Química, Biología |
| Luis | Historia |
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.
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
| Estudiante | Materia |
|---|---|
| Juan | Matemáticas |
| Juan | Física |
| Ana | Química |
| Ana | Biología |
| Luis | Historia |
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.
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:
- 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)
| Estudiante | Materia | Profesor | Dirección del Estudiante |
|---|---|---|---|
| Juan | Matemáticas | López | Calle A |
| Juan | Física | García | Calle A |
| Ana | Química | Pérez | Calle B |
| Ana | Biología | López | Calle 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".
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)
| Estudiante | Materia | Profesor |
|---|---|---|
| Juan | Matemáticas | López |
| Juan | Física | García |
| Ana | Química | Pérez |
| Ana | Biología | López |
Tabla 2: Información de Estudiantes (Ahora en 2FN)
| Estudiante | Dirección |
|---|---|
| Juan | Calle A |
| Ana | Calle 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.
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:
- 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)
| Empleado | Ciudad | País | Código Postal |
|---|---|---|---|
| Ana | Barcelona | España | 08001 |
| Juan | Madrid | España | 28001 |
| Luis | París | Francia | 75001 |
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)
| Empleado | Ciudad |
|---|---|
| Ana | Barcelona |
| Juan | Madrid |
| Luis | París |
Tabla 2: Información de Ciudades (Ahora en 3FN)
| Ciudad | País | Código Postal |
|---|---|---|
| Barcelona | España | 08001 |
| Madrid | España | 28001 |
| París | Francia | 75001 |
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.
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:
- 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)
| Empleado | Proyecto | Habilidad |
|---|---|---|
| Ana | Proyecto A | Java |
| Ana | Proyecto A | SQL |
| Ana | Proyecto B | Java |
| Juan | Proyecto A | Python |
| Juan | Proyecto C | HTML |
| Juan | Proyecto C | CSS |
En esta tabla:
- La clave primaria es "Empleado".
- Un empleado puede estar trabajando en varios proyectos.
- Un empleado puede tener varias habilidades.
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)
| Empleado | Proyecto |
|---|---|
| Ana | Proyecto A |
| Ana | Proyecto B |
| Juan | Proyecto A |
| Juan | Proyecto C |
Tabla 2: Empleados y Habilidades (Ahora en 4FN)
| Empleado | Habilidad |
|---|---|
| Ana | Java |
| Ana | SQL |
| Juan | Python |
| Juan | HTML |
| Juan | CSS |
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.
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...