Normalizacion BBDD - Tensho97/Aprende-a-Aprender GitHub Wiki

¿Qué es?

Es un proceso que consiste en aplicar una serie de reglas con el fin de la simplificación de los datos

Los objetivos son:

  • Tener los datos almacenados en el menor espacio posible
  • Eliminar datos repetidos
  • Eliminar errores lógicos
  • Tener los datos ordenados

Para entender la Normalización de las Bases de Datos debemos entender lo que son la Dependencia Funcional y la Dependencia Transitiva.


Tipos de Normalización

Matricula Nombre Direccion Telefono Materia Num Materia Carrera
1 Sergio Puebla 22 56565656 Base de Datos 123 Sistemas
1 Sergio Puebla 22 56565656 Base de Datos 123 Sistemas
1 Sergio Puebla 22 56565656 Programacion Web 356 Sistemas
2 Ana Reforma 1 23232323 Base de Datos 123 Sistemas

Aquí contamos con una tabla sin normalizar, que la usaremos para explicar cada uno de los tipos.

Tenemos 6 tipos de normalizar las bases de datos, éstos son:


PRIMERA FORMA NORMAL (1FN)

Como podemos observar, en la anterior tabla tenemos redundancia de datos Los campos que nos están generando la redundacia son los campos de Materia y Num Materia.

Materia Num Materia
Base de Datos 123
Programacion Web 234
Programacion Web 234
Base de Datos 123

Ya que el resto de los datos son los que se repiten. Lo que debemos hacer es separarlos en dos tablas para evitar la redundancia.

Matricula Materia Num Materia
1 Base de Datos 123
1 Programacion Web 234
1 Programacion Web 234
2 Base de Datos 123
Matricula Nombre Direccion Telefono Carrera
1 Sergio Puebla 22 56565656 Sistemas
2 Ana Reforma 1 23232323 Sistemas

Debemos poner el campo matricula para mantener la relación entre las dos tablas. Con esto tendríamos la tabla normalizada en 1FN.


SEGUNDA FORMA NORMAL (2FN)

Para poder hacer la segunda forma normal necesitamos:

  • Que la tabla ya esté en Primera forma normal
  • Identificar las dependencias funcionales y transitivas
Matricula Materia Num Materia
1 Base de Datos 123
1 Programacion Web 234
1 Programacion Web 234
2 Base de Datos 123

Como podemos observar, en esta tabla tenemos dos claves primarias, que serían Matricula y Num Materia. Materia depende funcionalmente de Num Materia, ya que Materia no tendría razón de ser sin Num Materia. Sin embargo, Materia no depende de nada de Matricula, ya que son cosas diferentes. Por lo que no podemos tener en esta tabla la unión de las tres columnas.

Entonces vamos a dividirlas en dos tablas:

Esta tabla sería intermedia:

Matricula Materia
1 Base de Datos
1 Programacion Web
1 Programacion Web
2 Base de Datos

Esta sería fuerte

Materia Num Materia
Base de Datos 123
Programacion Web 234
Programacion Web 234
Base de Datos 123

Esta sería fuerte

Matricula Nombre Direccion Telefono Carrera
1 Sergio Puebla 22 56565656 Sistemas
2 Ana Reforma 1 23232323 Sistemas

TERCERA FORMA NORMAL (3FN)

Matricula Nombre Direccion Telefono Carrera
1 Sergio Puebla 22 56565656 Sistemas
2 Ana Reforma 1 23232323 Sistemas

Si nos fijamos bien podemos observar que Carrera depende del Nombre, pero éste no es una clave primaria. Recordemos que las dependecias funcionales y transitivas se deben analizar sobre claves primarias. Entonces tenemos una dependencia transitiva entre Carrera y Matricula. Lo que debemos hacer es sacar Carrera de esta tabla en otra de la siguiente manera:

Matricula Nombre Direccion Telefono
1 Sergio Puebla 22 56565656
2 Ana Reforma 1 23232323
No Carrera Carrera
1234 Sistemas
6789 Mecatronica

No Carrera es la clave primaria que le hemos asignado a Carrera.


La base de datos ya estaría normalizada. Quedaría de la siguiente forma:

Matricula Nombre Direccion Telefono
1 Sergio Puebla 22 56565656
2 Ana Reforma 1 23232323
No Carrera Carrera
1234 Sistemas
6789 Mecatronica
Matricula Materia
1 Base de Datos
1 Programacion Web
1 Programacion Web
2 Base de Datos
Materia Num Materia
Base de Datos 123
Programacion Web 234
Programacion Web 234
Base de Datos 123

FORMA NORMAL BOYCE CODD (FNBC)

CUARTA FORMA NORMAL (4FN)

QUINTA FORMA NORMAL (5FN)



Autor: Julián

⚠️ **GitHub.com Fallback** ⚠️