Ir al contenido principal

Normalización de bases de datos

 La normalización de bases de datos es un proceso de diseño que busca organizar la información de una base de datos de manera eficiente y sin redundancias, reduciendo la posibilidad de anomalías y mejorando la integridad de los datos. El objetivo principal es evitar la redundancia de datos y eliminar las dependencias funcionales no deseadas.

El proceso de normalización se lleva a cabo a través de una serie de reglas llamadas formas normales. Las formas normales van desde la primera forma normal (1NF) hasta la quinta forma normal (5NF), y cada una de ellas aborda ciertos aspectos de la organización de los datos. A continuación, se presenta un resumen de las primeras tres formas normales:

  1. Primera Forma Normal (1NF): Requiere que cada celda de una tabla contenga un solo valor y que cada columna tenga un nombre único. Además, los datos no deben contener grupos repetitivos.
  2. Segunda Forma Normal (2NF): Para cumplir con la 2NF, la tabla debe cumplir con la 1NF y, además, todas las columnas no clave deben depender completamente de la clave primaria.
  3. Tercera Forma Normal (3NF): Para cumplir con la 3NF, la tabla debe cumplir con la 2NF y, además, no debe haber dependencias transitivas. Esto significa que los atributos no clave no deben depender de otros atributos no clave.
La normalización se puede llevar más allá de la 3NF si es necesario, pero en muchos casos, la 3NF es suficiente para garantizar un diseño de base de datos eficiente. La normalización puede ayudar a mejorar el rendimiento de las consultas, reducir la redundancia y facilitar el mantenimiento de la base de datos.

Es importante tener en cuenta que, aunque la normalización es útil para estructurar datos, en algunos casos extremos puede llevar a un rendimiento deficiente en términos de consultas, por lo que el diseño de la base de datos debe equilibrarse con los requisitos específicos del sistema.

Primera Forma Normal (1NF)

La Primera Forma Normal (1NF) es la primera regla de normalización en el diseño de bases de datos y establece ciertas condiciones para la organización de los datos en una tabla. Para cumplir con la 1NF, una tabla debe satisfacer los siguientes requisitos:
  • Valores Atómicos: Cada celda de la tabla debe contener un solo valor atómico, es decir, un valor que no puede ser dividido en partes más pequeñas con significado propio. Esto asegura que cada atributo tenga una única entrada en cada celda, evitando la presencia de listas, conjuntos o estructuras complejas. Por ejemplo, considera una tabla que almacena información de estudiantes con una columna llamada "Cursos" que contiene múltiples cursos en una sola celda ("Matemáticas, Historia"). Esto violaría la 1NF. En cambio, cada curso debería tener su propia entrada en una fila diferente.
  • Nombre Único para Cada Columna: Cada columna en una tabla debe tener un nombre único. Esto evita confusiones y asegura que cada atributo sea identificable de manera única en la tabla. Por ejemplo, si tienes una tabla de empleados con columnas "Nombre" y "Apellido," no deberías tener dos columnas llamadas "Nombre" para almacenar información diferente. 
  • Orden de las Filas no Importa: El orden en que se ingresan o se presentan las filas no debe afectar la integridad de los datos. En otras palabras, el conjunto de datos debe ser independiente del orden de las filas. Por ejemplo, si tienes una tabla de empleados y cambias el orden en el que se registraron los empleados, la información sobre cada empleado aún debe ser coherente y completa.
Cumplir con la Primera Forma Normal es un paso esencial en el proceso de normalización y sienta las bases para formas normales posteriores. Al organizar los datos de esta manera, se facilita la gestión de la información, se evitan redundancias y se mejora la consistencia en la base de datos.

Un ejemplo para ilustrar la Primera Forma Normal (1NF). Supongamos que tenemos una tabla que almacena información sobre estudiantes y los cursos que están tomando:

Tabla sin cumplir la 1NF:

EstudianteID

Nombre

Cursos

1

Juan Pérez

Matemáticas, Historia

2

María Gómez

Ciencias, Literatura

3

Carlos Rodríguez

Inglés, Matemáticas


Esta tabla no cumple con la 1NF porque la columna "Cursos" tiene múltiples valores separados por comas, violando la regla de valores atómicos. Para cumplir con la 1NF, debemos descomponer la información en filas separadas y asegurarnos de que cada celda contenga un solo valor.

Tabla en 1NF:

EstudianteID

Nombre

Cursos

1

Juan Pérez

Matemáticas

1

Juan Pérez

Historia

2

María Gómez

Ciencias

2

María Gómez

Literatura

3

Carlos Rodríguez

Inglés

3

Carlos Rodríguez

Matemáticas


En esta versión, hemos descompuesto la información original y creado múltiples filas, cada una representando un curso tomado por un estudiante. Ahora, cada celda de la tabla contiene un único valor atómico, cumpliendo así con la Primera Forma Normal.

La Segunda Forma Normal (2NF)

La Segunda Forma Normal (2NF) es la segunda regla de normalización en el diseño de bases de datos. Para cumplir con la 2NF, una tabla ya debe estar en la Primera Forma Normal (1NF), y además, se deben cumplir dos condiciones:
  • Debe cumplir con la 1NF: Esto implica que todos los valores en la tabla deben ser atómicos, es decir, cada celda debe contener un único valor.
  • Todas las columnas no clave deben depender completamente de la clave primaria: Cada atributo no clave en la tabla debe depender completamente de la clave primaria, y no de solo una parte de ella.
Para entender mejor la Segunda Forma Normal, es útil revisar el concepto de dependencia funcional. La dependencia funcional se refiere a la relación entre dos conjuntos de atributos en una tabla. Si el valor de un conjunto de atributos determina completamente el valor de otro conjunto de atributos, se dice que existe una dependencia funcional.

Un ejemplo puede ilustrar mejor estos conceptos. Supongamos que tenemos una tabla que almacena información sobre libros, autores y las librerías donde se pueden encontrar. La tabla se ve así:

Tabla sin cumplir la 2NF:

ISBN

Título

Autor

Librería

Ubicación

978-1-xxx-xx-xx-1

"Introduction to DB"

John Smith

Librería A

Estante 1

978-1-xxx-xx-xx-1

"Introduction to DB"

John Smith

Librería B

Estante 3

978-2-xxx-xx-xx-2

"Data Science 101"

Jane Doe

Librería A

Estante 2


En este ejemplo, el ISBN es la clave primaria. La tabla no cumple con la 2NF porque la información sobre la librería y la ubicación está parcialmente dependiente de la clave primaria (ISBN). En otras palabras, la ubicación de un libro y la librería donde se puede encontrar están relacionadas solo con el ISBN, y no con el conjunto completo de atributos que forma la clave primaria.

Para cumplir con la 2NF, podemos dividir la tabla en dos:
Tabla en 2NF:

Tabla Libros:

ISBN

Título

Autor

978-1-xxx-xx-xx-1

"Introduction to DB"

John Smith

978-2-xxx-xx-xx-2

"Data Science 101"

Jane Doe


Tabla  de Ubicaciones:

ISBN

Librería

Ubicación

978-1-xxx-xx-xx-1

Librería A

Estante 1

978-1-xxx-xx-xx-1

Librería B

Estante 3

978-2-xxx-xx-xx-2

Librería A

Estante 2


Ahora, la información sobre las ubicaciones está completamente dependiente de la clave primaria de la tabla "Ubicaciones," cumpliendo así con la 2NF. Este proceso de descomposición mejora la estructura de la base de datos y evita redundancias.

La Tercera Forma Normal (3NF)

La Tercera Forma Normal (3NF) es la tercera regla de normalización en el diseño de bases de datos. Al igual que con la Segunda Forma Normal (2NF), para cumplir con la 3NF, una tabla ya debe estar en la Primera Forma Normal (1NF) y la Segunda Forma Normal (2NF). Además, se debe satisfacer una condición adicional:
  • Todos los atributos no clave deben depender directamente de la clave primaria; no debe haber dependencias transitivas.
La dependencia transitiva se refiere a una situación en la que un atributo no clave depende de otro atributo no clave, en lugar de depender directamente de la clave primaria. Para entender mejor este concepto, veamos un ejemplo.

Supongamos que tenemos una tabla que almacena información sobre empleados, incluyendo su departamento y la ubicación del departamento. La tabla se ve así:

Tabla sin cumplir la 3NF:

EmpleadoID

Nombre

Departamento

Ubicación

1

Juan

Ventas

Ciudad A

2

María

Finanzas

Ciudad B

3

Carlos

Ventas

Ciudad A


En esta tabla, el atributo "Ubicación" depende de "Departamento", pero también depende de la clave primaria "EmpleadoID" a través de "Departamento". Esto crea una dependencia transitiva, ya que la ubicación está vinculada indirectamente a la clave primaria.

Para cumplir con la 3NF, podemos descomponer la tabla de la siguiente manera:

Tabla en 3NF:


Tabla Empleados:

EmpleadoID

Nombre

Departamento

1

Juan

Ventas

2

María

Finanzas

3

Carlos

Ventas


Tabla Departamentos:

Departamento

Ubicación

Ventas

Ciudad A

Finanzas

Ciudad B


Ahora, la ubicación se ha separado en una tabla independiente, eliminando la dependencia transitiva. Cada tabla representa una entidad única y la información está organizada de manera más eficiente y sin redundancias. Este proceso de descomposición garantiza que no haya dependencias transitivas y cumple con la Tercera Forma Normal.

Comentarios

Entradas populares de este blog

Tipos de datos de Oracle 21c

  Tipo de dato Numérico de Oracle 21c NUMBER(precision, scale) Este tipo de dato se utiliza para almacenar números de punto fijo. La precisión representa el número total de dígitos en el número, y la escala es la cantidad de dígitos a la derecha del punto decimal. INTEGER o INT Este tipo de dato se utiliza para almacenar números enteros. FLOAT(p) Se utiliza para almacenar números de punto flotante. La "p" representa la precisión binaria, es decir, el número total de bits utilizados para representar el número. DOUBLE PRECISION: Similar a FLOAT, pero con mayor precisión. Tipo de dato Cadenas de caracteres de Oracle 21c CHAR(n) Este tipo de dato se utiliza para almacenar cadenas de caracteres de longitud fija. El número "n" representa la longitud máxima de la cadena. VARCHAR2(n) Similar a CHAR, pero para cadenas de longitud variable. El número "n" representa la longitud máxima de la cadena. CLOB Se utiliza para almacenar grandes cantidades de datos de caracte...

TENDENCIAS ACTUALES

Inteligencia Artificial y Machine Learning en Bases de Datos: La integración de capacidades de inteligencia artificial y machine learning en los sistemas de gestión de bases de datos permite análisis más avanzados y automatización de tareas Bases de Datos sin Servidor: La tendencia hacia arquitecturas sin servidor ha llevado al desarrollo de bases de datos sin servidor, donde los desarrolladores pueden centrarse en el código y la lógica de la aplicación sin preocuparse por la gestión de la infraestructura subyacente. Blockchain en Bases de Datos: La tecnología blockchain se está utilizando para proporcionar una mayor seguridad y transparencia en las transacciones de bases de datos, especialmente en aplicaciones financieras y de cadena de suministro. Bases de Datos Distribuidas y Escalabilidad: Con el crecimiento continuo de datos, la necesidad de bases de datos distribuidas y soluciones escalables se mantiene. Tecnologías como Apache Cassandra y CockroachDB abordan estos desafíos....