Normalizacion BBDD - Tensho97/Aprende-a-Aprender GitHub Wiki
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.
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:
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.
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:
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 |
Matricula | Nombre | Direccion | Telefono | Carrera |
---|---|---|---|---|
1 | Sergio | Puebla 22 | 56565656 | Sistemas |
2 | Ana | Reforma 1 | 23232323 | Sistemas |
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 |
Autor: Julián