Está en la página 1de 9

5/1/2019 Cómo normalizar una base de datos sin morir en el intento

Planes Iniciar sesión Menú

1 año de todos los cursos para alguien especial,


tu empresa o para ti.

TERMINARÁ EN: 01D 11H 59M 40S

< Blog

 Cómo normalizar una base de datos sin morir en el


30
intento
sampol.90 7034 Puntos  hace un año

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

 Share 229 Twittear Share


30

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

Para poder decir que nuestra base de datos está normalizada deben 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. Identi car cada grupo de datos relacionados con una clave primaria

Para identi car 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 identi carse por la clave (Dependencia
Funcional).
Debe existir una independencia del orden tanto de las las como de las
columnas, es decir, si los datos cambian de orden no deben cambiar sus
signi cados.
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:

1. Crear tablas separadas para aquellos grupos de datos que se aplican a varios
 Share 229 Twittear Share
30 registros.

https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-intento/ 2/9
5/1/2019 Cómo normalizar una base de datos sin morir en el intento

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:

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 Share 229 Twittear Share
30

https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-intento/ 3/9
5/1/2019 Cómo normalizar una base de datos sin morir en el intento

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 jamos 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:

 Share 229 Twittear Share


30

https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-intento/ 4/9
5/1/2019 Cómo normalizar una base de datos sin morir en el intento

Tabla Autores:

Ahora nuestra tabla está en Segunda Forma Normal.

Si detallamos nuestra tabla de Cursos aún podríamos simpli carla, 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 y
estaría lista 😃

Si deseas aprender más sobre bases de datos y su normalización te recomiendo


ampliamente el curso de Fundamentos de Bases de datos y luego profundizar
con Curso de SQL y MySQL
o Curso de PostgreSQ

Carlos
@sampol.90 7034 Puntos  hace un año Todas sus entradas

 Share 229 Twittear Share


30

   
https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-intento/   5/9
5/1/2019 Cómo normalizar una base de datos sin morir en el intento
    Insertar código  Enlace  Imagen   

Suma tu comentario +2 

Ordenar por: Top

 Keily 2631 Puntos  un año


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

sampol.90  un año

1 Muchas gracias!!

 FreddySanchez 240 Puntos  19 días


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

 leandroferreyra93 9 Puntos  un año


1 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  un año

1 La última tabla muestra lo que contendrías en la tabla materias.

sampol.90  un año

Hola! No, esa ultima tabla es la tabla de materiales 😃
1
Saludos!!

leandroferreyra93  un año

0 Ah si puse mal cursos era materiales, ahí dice nombre material? es nombre_material?

sampol.90  un año

0 Si, asi es nombre_material . Fue un Typo

 milmend Share  un año


30  Share 229 Twittear

0
https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-intento/ 6/9
5/1/2019 Cómo normalizar una base de datos sin morir en el intento
0 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  un año

0 Eso lo he implementado en las ejemplos. Si te jas en la última imagen puedes verlo 😃

 Ver todas las respuestas

AlexJL 1278 Puntos  un año



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

sampol.90  un año

Me enfoqué en las primeras 3.
0
Quieres que haga otro post explicando el resto ?

 john_ospina 7595 Puntos  un año


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

sampol.90  un año

Es mejor ponerlos en ingles, garantiza que cualquiera pueda entenderlos.
1
Los puse en español por nes prácticos.

EnmanuelAlx 5835 Puntos  un año



1 Muy buen aporte, buena explicacion

sampol.90  un año

0 Gracias!

 germaniawebcom 583 Puntos  un año


1 Buen aporte. Gracias.

sampol.90  un año

1 Muchas gracias!

 CarlosSamuel 1260 Puntos  un año


0 Simplemente genial.

sampol.90  un año

 0 Muchas gracias 😃
Share !229 Twittear Share
30

https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-intento/ 7/9
5/1/2019 Cómo normalizar una base de datos sin morir en el intento

adolfo ores 8 Puntos  un año



0 Estaría

adolfo ores  un año



1 bueno si anexas un ejemplo de una bd básica normalizada 😛

sampol.90  un año

1 Entre hoy y mañana lo subo :p

sampol.90  un año

0 Ya puedes ver los ejemplos 😃

thomazhernandez 1658 Puntos  un año



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

sampol.90  un año
 Gracias por tu comentario, pronto estaré subiendo unos ejemplos y simpli cando el texto para
0
que sea entendible para todos.
Saludos!

sampol.90  un año

0 He subido unos ejemplos, comentame si ahora es mas comprensible 😃

Entradas relacionadas


17

¿Por qué odiamos las matemáticas?

¿Recuerdas esa época del colegio donde íbamos a las clases de matemáticas con muchas ganas de
aprender y fascinado con todas las aplicacione

sdorduzc


34 Share 229 Twittear Share
30

https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-intento/ 8/9
5/1/2019 Cómo normalizar una base de datos sin morir en el intento

Principios de programación SOLID

Los principios de programación SOLID son una excelente guía para mejorar tus habilidades de
programación. Recuerda que los patrones y los pr

hectorbenitez


14

¿Qué preguntas le hicimos a Google este 2018 en Latinoamérica?

¿Qué preguntas le hicimos a Google este 2018 en Latinoamérica? Se acaba este 2018, y una de
las cosas que más espero ver en esta temporada s

inventr

 Share 229 Twittear Share


30

https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-intento/ 9/9