Está en la página 1de 10

Cómo normalizar una base de datos sin morir en el intento https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-in...

< Blog

sampol.90 8583 Puntos hace 3 años

Muchos de ustedes se preguntarán qué es y para qué sirve esto de normalizar


una base de datos y la verdad es mas sencillo de lo que parece.

Qué es la Normalización de una base de datos

El proceso de normalización de una base de datos relacional consiste en


aplicar una serie de reglas para evitar a futuro realizar queries, o
consultas innecesariamente complejas. En otras palabras están enfocadas
en eliminar redundancias e inconsistencias de dependencia en el diseño de las
tablas.

Las bases de datos se normalizan para:

Evitar la redundancia de datos


Proteger la integridad de los datos
Evitar problemas de actualización de los datos en las tablas

Para poder decir que nuestra base de datos está normalizada deben

1 de 10 18/01/2021 09:03 a. m.
Cómo normalizar una base de datos sin morir en el intento https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-in...

respetarse 3 niveles de normalización.

La primera forma Normal

Hay que seguir una serie de pasos para poder decir que nuestra tabla está en
primera forma normal, estos son:

1. Eliminar los grupos repetitivos de la tablas individuales.


2. Crear una tabla separada por cada grupo de datos relacionados.
3. Identificar cada grupo de datos relacionados con una clave primaria

Para identificar si lo hemos hecho de manera correcta debemos considerar los


siguientes aspectos:

Todos los atributos son atómicos. Un atributo es atómico si los


elementos del dominio son indivisibles, mínimos.
La tabla contiene una clave primaria única.
La clave primaria no contiene atributos nulos.
No debe existir variación en el número de columnas.
Los campos no clave deben identificarse por la clave (Dependencia
Funcional).
Debe existir una independencia del orden tanto de las filas como de las
columnas, es decir, si los datos cambian de orden no deben cambiar
sus significados.
Una tabla no puede tener múltiples valores en cada columna.
Los datos son atómicos (a cada valor de X le pertenece un valor de Y y
viceversa).

La segunda forma Normal

Debemos seguir los siguientes pasos:

2 de 10 18/01/2021 09:03 a. m.
Cómo normalizar una base de datos sin morir en el intento https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-in...

1. Crear tablas separadas para aquellos grupos de datos que se aplican a


varios
registros.
2. Relacionar estas tablas mediante una clave externa.

Sabremos si nuestra base de datos tiene en la segunda forma normal si ésta


previamente cumple con las normas de la Primera forma Normal y si sus
atributos no principales dependen de forma completa de la clave
principal. Es decir que no existen dependencias parciales.

La tercera forma Normal

Debemos considerar los siguientes puntos:

1. Eliminar aquellos campos que no dependan de la clave.


2. Ninguna columna puede depender de una columna que no tenga una clave.
3. No puede haber datos derivados.

Podemos decir que nuestra tabla se encuentra en tercera normal si


previamente estaba en segunda forma normal y si no existe ninguna
dependencia funcional transitiva entre los atributos que no son clave. Es decir
todo atributo no primo es implicado por la clave primaria en una secuencia no
transitiva.

Ejemplo:

Para entender mucho mejor todo esto revisemos la siguiente tabla:

3 de 10 18/01/2021 09:03 a. m.
Cómo normalizar una base de datos sin morir en el intento https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-in...

Si nos damos cuenta esta tabla no cumple con el requisito que dice que todos
los atributos deben ser atómicos, es decir que debemos descomponerlo en su
mínima expresión

Siguiendo los aspectos a considerar podríamos decir que nuestra tabla inicial
se transformaría a:

Con esto podríamos decir que nuestra tabla cumple con la Primera forma
Normal.
Ahora, si nos fijamos esta aun no cumple con los requisitos que pide la
Segunda forma Normal.

Podríamos crear tablas separadas para Cursos y para profesores y cada una
de estas tendría su clave primaria y estarían relacionadas por una clave
externa (Foreign Key).

Tabla de Cursos:

4 de 10 18/01/2021 09:03 a. m.
Cómo normalizar una base de datos sin morir en el intento https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-in...

Tabla Autores:

Ahora nuestra tabla está en Segunda Forma Normal.

Si detallamos nuestra tabla de Cursos aún podríamos simplificarla, para esto


podríamos extraer la columna de materiales y crear una nueva tabla para esto.

Con esto, nuestra tabla cumpliría con los requisitos de la Tercera forma normal

5 de 10 18/01/2021 09:03 a. m.
Cómo normalizar una base de datos sin morir en el intento https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-in...

y estaría lista
Carlos
@sampol.90
Si deseas aprender más sobre bases
8583 Puntos
de datos y su normalización te
hace 3 años Todas sus entradas

recomiendo ampliamente el curso de Fundamentos de Bases de datos y luego


profundizar con Curso de SQL y MySQL
o Curso de PostgreSQ
Escribe tu comentario +2

Top

Keily 3836Puntos 3 años

Santa cachucha batman. es el mejor articulo que he leído en toda mi vida!!!

sampol.90 3 años
Muchas gracias!!

natu 8Puntos un año

¿Por qué DAVID se cambió el nombre a MARIO???

natu un año
miren la tabla de autores :v

FreddySanchez 536Puntos 2 años

Es un buen articulo.
Concuerdo con milmend
La tabla Materiales debería utilizarse para n cursos.
Saludos.

leandroferreyra93 9Puntos 3 años

Un post como la gente, conciso y al pie. Se comprendío perfectamente la tarea necesaria para las

normas en menos de 2 minutos de lectura.


Consulta, puede ser que en el último ejemplo quedó mal la tabla de cursos?

alexjl 3 años
La última tabla muestra lo que contendrías en la tabla materias.

sampol.90 3 años

Hola! No, esa ultima tabla es la tabla de materiales

6 de 10 18/01/2021 09:03 a. m.
Cómo normalizar una base de datos sin morir en el intento https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-in...

Saludos!!

leandroferreyra93 3 años
Ah si puse mal cursos era materiales, ahí dice nombre material? es nombre_material?

sampol.90 3 años
Si, asi es nombre_material . Fue un Typo

milmend 3 años
La tabla Materiales aún podría ser susceptible de una mejora, esto es, puede extraerse la
columna del curso y crear una nueva tabla con dos llaves: material - curso, de forma que un
material pueda ser utilizado en diferentes cursos. Saludos.

sampol.90 3 años
Eso lo he implementado en las ejemplos. Si te fijas en la última imagen puedes verlo

alexjl 1643Puntos 3 años

Buen Post!. ¿Y el resto de formas normales?

sampol.90 3 años
Me enfoqué en las primeras 3.

Quieres que haga otro post explicando el resto ?

alejandro-lopez953 3Puntos un año

buen aporte, muchas gracias

john_ospina 7618Puntos 3 años

Es buena practica poner el nombre de los atributos de la tabla en Ingles o Español?

sampol.90 3 años

Es mejor ponerlos en ingles, garantiza que cualquiera pueda entenderlos.


Los puse en español por fines prácticos.

isaias-morales-rodriguez 38Puntos 2 años

no es ta nada mal, es muy bueno y atendible, pero si pudieras poner mas ejemplos quedaría perfecto

brayanqs 3Puntos un año

realmente en necesario crear una tabla para los materiales del curso, es decir, crear una tabla que

7 de 10 18/01/2021 09:03 a. m.
Cómo normalizar una base de datos sin morir en el intento https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-in...

puede tener valores desde 1 hasta n, cada uno ocupando una fila, en lugar de dejarlo como un atributo

univaluado?
Perdon soy nuevo en esto y quiero aprender

CodeEveryDay 8Puntos un año

Super bien explicado!

lrmendiburo 19Puntos un año

Muchas gracias Carlos. Muy interesante tu articulo.

juliodenis 11917Puntos 5 meses

Excelente artículo ❤

jaime-rodrigo-cornejo-garrido 3Puntos 9 meses

Lei como seis horas otras publicaciones y no entendí nada, luego encontré esto y entendí en 2 minutos,
muchas gracias y muy bien explicado.

nigeldavila.m 2080Puntos 4 meses

como es que no lo vi mas antes


muy bueno el articulo

Jose_Veintimilla 147Puntos 10 días

Pensar que la respuesta era tan sencilla. Gracias.

EnmanuelAlx 6606Puntos 3 años

Muy buen aporte, buena explicacion

sampol.90 3 años
Gracias!

germaniawebcom 641Puntos 3 años

Buen aporte. Gracias.

sampol.90 3 años
Muchas gracias!

8 de 10 18/01/2021 09:03 a. m.
Cómo normalizar una base de datos sin morir en el intento https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-in...

spawnmc 167Puntos 3 meses

Excelente

JcbDino 3 meses
Long live ParrotOS!

thomas1889 1673Puntos 3 años

Demasiado abstracto para mi gusto. Mi abuela no lo podría entender. Crei que era to que fingiendo no
saber nada estaba mi comprensión mal. Pero al leer en voz alta a mis compañeros de oficina. quedaron
sin entener. Paso hacer el grafico…

sampol.90 3 años
Gracias por tu comentario, pronto estaré subiendo unos ejemplos y simplificando el texto para

que sea entendible para todos.


Saludos!

sampol.90 3 años
He subido unos ejemplos, comentame si ahora es mas comprensible

CarlosSamuel 1260Puntos 3 años

Simplemente genial.

sampol.90 3 años
Muchas gracias !

edwarvilchez1977 5934Puntos 2 meses

Excelente

adolfoflores 8Puntos 3 años

Estaría

adolfoflores 3 años
bueno si anexas un ejemplo de una bd básica normalizada

sampol.90 3 años
Entre hoy y mañana lo subo :p

sampol.90 3 años
Ya puedes ver los ejemplos

9 de 10 18/01/2021 09:03 a. m.
Cómo normalizar una base de datos sin morir en el intento https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-in...

Entradas relacionadas

10 de 10 18/01/2021 09:03 a. m.

También podría gustarte