La normalización es un proceso fundamental en el diseño de bases de datos relacionales. Su objetivo principal es organizar los datos para reducir la redundancia y mejorar la integridad de los datos. A continuación, se detallan los conceptos clave de la normalización.

Objetivos de la Normalización

  1. Eliminar la Redundancia de Datos: Reducir la duplicación de datos para ahorrar espacio y evitar inconsistencias.
  2. Mejorar la Integridad de los Datos: Asegurar que los datos sean precisos y consistentes.
  3. Facilitar el Mantenimiento de la Base de Datos: Hacer que la base de datos sea más fácil de actualizar y mantener.

Conceptos Clave

  1. Dependencias Funcionales

Una dependencia funcional describe una relación entre dos conjuntos de atributos en una base de datos. Si el valor de un atributo (o un conjunto de atributos) determina el valor de otro atributo, se dice que el segundo atributo es funcionalmente dependiente del primero.

Ejemplo: En una tabla de empleados, si EmpleadoID determina Nombre, entonces Nombre es funcionalmente dependiente de EmpleadoID.

  1. Formas Normales

Las formas normales son niveles de normalización que una base de datos puede alcanzar. Cada nivel tiene sus propios requisitos y se basa en el nivel anterior.

Primera Forma Normal (1NF)

  • Requisitos:
    • Eliminar grupos repetitivos.
    • Asegurar que cada columna contenga solo valores atómicos (indivisibles).
    • Cada columna debe contener valores del mismo tipo.
    • Cada columna debe tener un nombre único.
    • El orden en el que se almacenan los datos no debe tener importancia.

Ejemplo: Una tabla que almacena información de pedidos:

| PedidoID | ClienteID | Producto1 | Producto2 | Producto3 |
|----------|-----------|-----------|-----------|-----------|
| 1        | 101       | A         | B         | C         |
| 2        | 102       | D         | E         | NULL      |

Para cumplir con 1NF, se debe transformar en:

| PedidoID | ClienteID | Producto |
|----------|-----------|----------|
| 1        | 101       | A        |
| 1        | 101       | B        |
| 1        | 101       | C        |
| 2        | 102       | D        |
| 2        | 102       | E        |

Segunda Forma Normal (2NF)

  • Requisitos:
    • Cumplir con 1NF.
    • Eliminar dependencias parciales; es decir, todos los atributos no clave deben depender de la clave primaria completa.

Ejemplo: Una tabla que almacena información de cursos y estudiantes:

| CursoID | EstudianteID | NombreEstudiante | NombreCurso |
|---------|--------------|------------------|-------------|
| 1       | 101          | Juan             | Matemáticas |
| 1       | 102          | Ana              | Matemáticas |
| 2       | 101          | Juan             | Física      |

Para cumplir con 2NF, se debe dividir en dos tablas:

Tabla Cursos:
| CursoID | NombreCurso |
|---------|-------------|
| 1       | Matemáticas |
| 2       | Física      |

Tabla Estudiantes:
| EstudianteID | NombreEstudiante |
|--------------|------------------|
| 101          | Juan             |
| 102          | Ana              |

Tabla Inscripciones:
| CursoID | EstudianteID |
|---------|--------------|
| 1       | 101          |
| 1       | 102          |
| 2       | 101          |

Tercera Forma Normal (3NF)

  • Requisitos:
    • Cumplir con 2NF.
    • Eliminar dependencias transitivas; es decir, los atributos no clave no deben depender de otros atributos no clave.

Ejemplo: Una tabla que almacena información de empleados y departamentos:

| EmpleadoID | NombreEmpleado | DepartamentoID | NombreDepartamento |
|------------|----------------|----------------|--------------------|
| 1          | Juan           | 10             | Ventas             |
| 2          | Ana            | 20             | Marketing          |

Para cumplir con 3NF, se debe dividir en dos tablas:

Tabla Empleados:
| EmpleadoID | NombreEmpleado | DepartamentoID |
|------------|----------------|----------------|
| 1          | Juan           | 10             |
| 2          | Ana            | 20             |

Tabla Departamentos:
| DepartamentoID | NombreDepartamento |
|----------------|--------------------|
| 10             | Ventas             |
| 20             | Marketing          |

Ejercicio Práctico

Ejercicio 1: Identificación de Dependencias Funcionales

Dada la siguiente tabla de estudiantes y cursos, identifica las dependencias funcionales:

| EstudianteID | NombreEstudiante | CursoID | NombreCurso | Profesor |
|--------------|------------------|---------|-------------|----------|
| 1            | Juan             | 101     | Matemáticas | Dr. Pérez|
| 2            | Ana              | 102     | Física      | Dr. López|
| 1            | Juan             | 102     | Física      | Dr. López|

Solución:

Dependencias funcionales:

  • EstudianteID -> NombreEstudiante
  • CursoID -> NombreCurso
  • CursoID -> Profesor

Ejercicio 2: Normalización a 1NF

Normaliza la siguiente tabla a la Primera Forma Normal (1NF):

| PedidoID | ClienteID | Productos |
|----------|-----------|-----------|
| 1        | 101       | A, B, C   |
| 2        | 102       | D, E      |

Solución:

| PedidoID | ClienteID | Producto |
|----------|-----------|----------|
| 1        | 101       | A        |
| 1        | 101       | B        |
| 1        | 101       | C        |
| 2        | 102       | D        |
| 2        | 102       | E        |

Conclusión

La normalización es un proceso crucial en el diseño de bases de datos relacionales que ayuda a reducir la redundancia y mejorar la integridad de los datos. Comprender y aplicar las diferentes formas normales permite crear bases de datos eficientes y fáciles de mantener. En el siguiente tema, exploraremos las formas normales en mayor detalle y cómo aplicarlas en el proceso de diseño de bases de datos.

© Copyright 2024. Todos los derechos reservados