Nuevo Blog de Normalización de Base de Datos

Bienvenidos a mi nuevo Blog sobre la Normalización de Bases de Datos

Andres Perez                                                                          Publicado: 29 de Octubre de 2024

La normalización en bases de datos es un proceso de diseño que busca organizar los datos para reducir la redundancia y mejorar la integridad. Su objetivo principal es estructurar los datos de tal manera que se minimicen las anomalías durante las operaciones de actualización, inserción y eliminación.

Índice de Contenidos
  • ¿Cómo surgieron?
  • ¿Qué es la Normalización?
    • Principales Objetivos de la Normalización
  • Formas Normales
    • Primera Forma Normal (1NF)
    • Segunda Forma Normal (2NF)
    • Tercera Forma Normal (3NF)
    • Boyce-Codd Normal Form (BCNF)
    • Cuarta Forma Normal (4NF)
    • Quita Forma Normal (5NF)
  • Dependencia Funcional
    •  Tipos de Dependencias Funcionales
  • Conclusión

¿Cómo Surgieron?

La normalización de bases de datos surgió en la década de 1970 como una respuesta a la necesidad de gestionar datos de manera eficiente y estructurada en sistemas de bases de datos. A continuación, se detallan los hitos clave en su desarrollo:

Sistemas de Archivos: Antes de la normalización, los datos eran almacenados en sistemas de archivos, lo que llevaba a problemas de redundancia, inconsistencia y dificultad en la manipulación.



Modelo Relacional: En 1970, Edgar F. Codd, un investigador de IBM, presentó el modelo relacional de bases de datos en su artículo "A Relational Model of Data for Large Shared Data Banks". Este modelo introdujo la idea de usar tablas para representar datos, lo que permitió una mayor flexibilidad y mejor manejo de la información.

¿Qué es la Normalización?

La normalización es un proceso en el diseño de bases de datos que busca organizar los datos de manera eficiente para reducir la redundancia y mejorar la integridad. Su objetivo es estructurar la información de tal forma que se minimicen las anomalías durante las operaciones de actualización, inserción y eliminación.

Principales Objetivos de la Normalización:

Eliminar Redundancias: Se busca evitar la duplicación de datos, lo que ahorra espacio y mejora la eficiencia.



Asegurar la Integridad de los Datos: La normalización ayuda a mantener la consistencia y precisión de los datos a lo largo del tiempo.



Facilitar el Acceso a los Datos: Organizar los datos en tablas relacionadas permite consultas más simples y efectivas.


Formas Normales

Las formas normales son reglas o criterios utilizados en la normalización de bases de datos para organizar los datos y reducir la redundancia. Cada forma normal se basa en las anteriores y aborda diferentes tipos de problemas. Aquí tienes una descripción detallada de las formas normales más comunes:

Primera Forma Normal (1NF)

  • Definición: Una tabla está en 1NF si todos los atributos contienen valores atómicos (es decir, indivisibles) y cada fila es única.
  • Requisitos:
    • Cada columna debe contener solo valores simples (no listas o conjuntos).
    • No debe haber filas duplicadas.
  • Ejemplo:
    • No está en 1NF:
      | Cliente | Teléfonos | |---------|------------------| | Juan | 1234, 5678|
    • Está en 1NF:
      | Cliente | Teléfono | |-----------|------------| | Juan | 1234 | | Juan | 5678 |

    Segunda Forma Normal (2NF)

  • Definición: Una tabla está en 2NF si está en 1NF y todos los atributos no clave dependen completamente de la clave primaria.
  • Requisitos:
    • Debe cumplir con 1NF.
    • No debe haber dependencias parciales de la clave primaria.
  • Ejemplo:
    • No está en 2NF (supongamos que la clave primaria es ClienteID, y PedidoID es un atributo):
      | ClienteID | PedidoID | NombreCliente | |--------------|--------------|----------------------| | 1 | 1001 | Juan | | 1 | 1002 | Juan |
    • Está en 2NF:
      • Tabla de Clientes:
        | ClienteID | NombreCliente | |-----------|-------------------------| | 1 | Juan |
      • Tabla de Pedidos:
        | ClienteID | PedidoID | |--------------|--------------| | 1 | 1001 | | 1 | 1002 |
  • Tercera Forma Normal (3NF)

     

  • Definición: Una tabla está en 3NF si está en 2NF y no hay dependencias transitivas (es decir, un atributo no debe depender de otro atributo no clave).
  • Requisitos:
    • Debe cumplir con 2NF.
    • No debe haber dependencias transitivas.
  • Ejemplo:
    • No está en 3NF:
      | ClienteID | NombreCliente | Ciudad | CódigoPostal | |--------------|---------.------------|---------------|-------------------| | 1 | Juan | Madrid | 2800 |
      (Aquí, CódigoPostal depende de Ciudad, no de ClienteID).
    • Está en 3NF:
      • Tabla de Clientes:

        | ClienteID | NombreCliente | CiudadID | |--------------|---------------------|---------------|
      • Tabla de Ciudades:

        | CiudadID | Ciudad | CódigoPostal | |--------------|---------------|--------------------|

    Boyce-Codd Normal Form (BCNF)

    • Definición: Una tabla está en BCNF si está en 3NF y, además, para cada dependencia funcional, la parte izquierda de la dependencia es una superclave.
    • Requisitos:
      • Debe cumplir con 3NF.
      • Cada determinante debe ser una superclave.
    • Ejemplo:
      • No está en BCNF:

        | CursoID | ProfesorID | Horario | |------------|----------------|-----------------| | 101 | 1 | Lunes 10am| | 101 | 2 | Martes 10am|
        (Si un profesor enseña solo un curso, ProfesorID no es clave, pero determina CursoID).
      • Está en BCNF:
        • Separar en dos tablas:

          | CursoID | ProfesorID | |-------------|---------------| | 101 | 1 | | 101 | 2 |

          | ProfesorID | Horario | |----------------|-----------------| | 1 | Lunes 10am| | 2 | Martes 10am|


    CUARTA FORMA NORMAL (4NF)

  • Definición: Una tabla está en 4NF si está en BCNF y no tiene dependencias multivaluadas (es decir, cuando un atributo depende de otro de manera independiente).
  • Ejemplo:
    • No está en 4NF:
      | EstudianteID | Curso | Hobby | |-------------------|------------------|-------------| | 1 | Matemáticas | Pintura | | 1 | Física | Música |
    • Está en 4NF:
      • Separar la tabla en dos:
        | EstudianteID | Curso | |-------------------|-------------------| | 1 | Matemáticas | | 1 | Física |

        | EstudianteID | Hobby | |-------------------|--------------| | 1 | Pintura | | 1 | Música |

  • Quita Forma Normal (5NF)

  • Definición: Una tabla está en 5NF si está en 4NF y no hay dependencias de unión, es decir, puede ser dividida en varias tablas sin perder información.
  • Ejemplo:
    • No está en 5NF:
      | ProyectoID | EmpleadoID | Tarea | |------------|------------|--------------------| | 1 | 1 | Diseño | | 1 | 2 | Desarrollo | | 2 | 1 | Pruebas |
    • Está en 5NF:
      • Separar en tres tablas:
        | ProyectoID | EmpleadoID | |-----------------|------------|
        | ProyectoID | Tarea | |----------------|------------|
        | EmpleadoID | Tarea | |------------------|-------------|
    Cada forma normal aborda distintos aspectos de la organización de datos y ayuda a evitar problemas de redundancia y anomalías. La normalización es esencial para crear bases de datos eficientes y mantener la integridad de los datos.

  • Dependencia Funcional

    La dependencia funcional es un concepto clave en la normalización de bases de datos y se refiere a una relación entre dos conjuntos de atributos en una tabla. Se utiliza para determinar cómo los atributos están relacionados y cómo se pueden estructurar las tablas para eliminar redundancias y mejorar la integridad de los datos.

    Definición de Dependencia FuncionalAB, donde:

    • es un conjunto de atributos llamado determinante.
    • es un conjunto de atributos que dependen de A
    A, entonces necesariamente deben tener el mismo valor para B.
    Ejemplo de Dependencia Funcional

    Considera una tabla de Estudiantes:
    | EstudianteID | Nombre        | Curso      |
    |--------------|---------------|------------|
    | 1            |          Juan | Matemáticas|
    | 2            |         María |     Física |
    | 1            |          Juan |    Química |

    En este caso:

    La relación EstudianteIDNombre indica que, dado un EstudianteID, podemos determinar de manera única el Nombre.

    Sin embargo, la relación NombreCurso no es válida, ya que un mismo estudiante (Juan) puede estar en múltiples cursos.

    Tipos de Dependencias Funcionales

    Dependencia Funcional Trivial: Se dice que una dependencia es trivial si BB está en AA. Por ejemplo, EstudianteID,NombreNombreEstudianteID, Nombre \rightarrow Nombre es trivial.

    Dependencia Funcional No Trivial: Se dice que una dependencia es no trivial si BB no está en AA. Por ejemplo, EstudianteIDNombreEstudianteID \rightarrow Nombre es no trivial.

    Dependencia Parcial: Ocurre cuando un atributo no clave depende solo de parte de una clave primaria compuesta. Por ejemplo, si EstudianteID,CursoID{EstudianteID, CursoID} es la clave primaria, y NombreNombre depende solo de EstudianteIDEstudianteID, es una dependencia parcial.

    Dependencia Transitiva: Ocurre cuando hay una cadena de dependencias. Por ejemplo, si ABA \rightarrow B y BCB \rightarrow C, entonces se puede inferir que ACA \rightarrow C. Esto es importante para identificar cuándo se deben dividir tablas.

    Conclusión

    La normalización de bases de datos es un proceso fundamental en el diseño de sistemas de gestión de datos, que tiene como objetivo organizar la información de manera eficiente y coherente. A través de la identificación y análisis de dependencias funcionales, se pueden establecer relaciones claras entre los atributos, lo que permite eliminar redundancias y mejorar la integridad de los datos.

    1. Eficiencia: La normalización ayuda a optimizar el almacenamiento y el acceso a los datos, reduciendo la redundancia y mejorando la eficiencia de las consultas.

    2. Integridad: Al estructurar los datos de manera adecuada, se minimizan las anomalías durante las operaciones de actualización, inserción y eliminación, asegurando la consistencia y precisión de la información.

    3. Escalabilidad: Un diseño de base de datos bien normalizado es más fácil de mantener y escalar, permitiendo que se adapten a las necesidades cambiantes de los usuarios y del negocio.

    4. Comprensión: La normalización proporciona un marco lógico que facilita la comprensión de las relaciones entre diferentes entidades, lo que resulta útil tanto para desarrolladores como para administradores de bases de datos.

    5. Equilibrio: Aunque la normalización es esencial, también es importante encontrar un equilibrio entre la normalización y la desnormalización cuando sea necesario, para optimizar el rendimiento de las consultas específicas.

    En resumen, la normalización es una práctica crítica en la gestión de bases de datos que no solo mejora la estructura y la eficiencia de la información, sino que también sienta las bases para un sistema robusto y confiable