Ejemplos de Primera forma normal del modelo relacional

Primera Forma Normal

Ejemplos de Primera forma normal del modelo relacional

Una relación se encuentra en Primera Forma Normal (1FN) cuando cada atributo solo toma un valor del dominio simple subyacente. En 1FN no existen grupos repetitivos (De
Miguel et al, 2001).  En el siguiente ejemplo la tabla no se encuentra en 1FN.

Nombre Recursos
Juan MochilaComputadora
María Libreta

 

Para que la tabla anterior esté en 1FN y sea una verdadera relación debería encontrarse en esta forma:

Nombre Recursos
Juan Mochila
Juan Computadora
María Libreta

 

Se dice entonces que una relación está en 1FN si los dominios de todos los atributos son atómicos (Silberschatz A., Korth H. y Sudarshan S., 2006) y monovalentes (Reynosa E., Maldonado C., Muñoz R., Damiano L., Abrutsky M, 2012). Se le llama atómico a los elementos de un dominio cuando son unidades indivisibles. En la primera tabla “Mochila” y “Computadora” son elementos divisibles por lo que esa tabla no está en 1FN. El término monovalente se refiere a que los valores no pueden repetirse y deben expresarse una sola vez por ocurrencia. Si una tupla tiene repetida varias veces la misma información deberá reducirse a una única instancia. A eso se refiere la expresión, eliminar grupos repetitivos.

Veamos el siguente ejemplo:

Tabla original

Sucursal y número de factura Fecha de la factura Forma de pago Código de cliente Nombre de cliente Código de artículo Nombre de artículo Cantidad del artículo Precio unitario del artículo Subtotal del artículo Total de factura
01-100 1/10/15 Crédito 01 PEREZ 01 CAMISA 2 50 100 440
01-100 1/10/15  Crédito 01 PEREZ 02 ZAPATOS 3 80 240 440
01-100 1/10/15 Crédito 01 PEREZ 05 MESA 1 100 100 440
01-101 2/10/15 Contado 33 GARCÍA 09 TINTA 4 25 100 100
02-100 3/10/15 Crédito 45 GOMEZ 13 CUADRO 5 90 450 550
02-100 3/10/15 Crédito 45 GOMEZ 05 MESA 1 100 100 550

 

Observamos que no se encuentra en 1FN, pues Sucursal y número de factura no es un dato atómico.  Un primer cambio que podemos hacer es el siguiente:

 

Sucursal Número de factura Fecha de la factura Forma de pago Código de cliente Nombre de cliente Código de artículo Nombre de artículo Cantidad del artículo Precio unitario del artículo Subtotal del artículo Total de factura
01 100 1/10/15 Crédito 01 PEREZ 01 CAMISA 2 50 100 440
01 100 1/10/15  Crédito 01 PEREZ 02 ZAPATOS 3 80 240 440
01 100 1/10/15 Crédito 01 PEREZ 05 MESA 1 100 100 440
01 101 2/10/15 Contado 33 GARCÍA 09 TINTA 4 25 100 100
02 100 3/10/15 Crédito 45 GOMEZ 13 CUADRO 5 90 450 550
02 100 3/10/15 Crédito 45 GOMEZ 05 MESA 1 100 100 550

 

Encontramos que todavía existen grupos repetitivos. Para eliminarlos y no eliminar los detalles de la factura no queda otra opción sino dividir la tabla.

Sucursal Número de factura Fecha de la factura Forma de pago Código de cliente Nombre de cliente Total de factura
01 100 1/10/15 Crédito 01 PEREZ 440
01 100 1/10/15  Crédito 01 PEREZ 440
01 100 1/10/15 Crédito 01 PEREZ 440
01 101 2/10/15 Contado 33 GARCÍA 100
02 100 3/10/15 Crédito 45 GOMEZ 550
02 100 3/10/15 Crédito 45 GOMEZ 550

 

Código de artículo Nombre de artículo Cantidad del artículo Precio unitario del artículo Subtotal del artículo
01 CAMISA 2 50 100
02 ZAPATOS 3 80 240
05 MESA 1 100 100
09 TINTA 4 25 100
13 CUADRO 5 90 450
05 MESA 1 100 100

 

En la primera de las dos tablas resultantes, podemos eliminar los datos repetitivos, quedando la tabla de esta forma

Sucursal Número de factura Fecha de la factura Forma de pago Código de cliente Nombre de cliente Total de factura
01 100 1/10/15 Crédito 01 PEREZ 440
01 101 2/10/15 Contado 33 GARCÍA 100
02 100 3/10/15 Crédito 45 GOMEZ 550

 

Elegimos los dos primeros atributos como clave primaria

PK
Sucursal Número de factura Fecha de la factura Forma de pago Código de cliente Nombre de cliente Total de factura
01 100 1/10/15 Crédito 01 PEREZ 440
01 101 2/10/15 Contado 33 GARCÍA 100
02 100 3/10/15 Crédito 45 GOMEZ 550

 

Agregamos las columnas que componen la clave primaria de la primera tabla, a la segunda tabla para poder relacionar ambas tablas.

Sucursal Número de factura Código de artículo Nombre de artículo Cantidad del artículo Precio unitario del artículo Subtotal del artículo
01 100 01 CAMISA 2 50 100
01 100 02 ZAPATOS 3 80 240
01 100 05 MESA 1 100 100
01 101 09 TINTA 4 25 100
02 100 13 CUADRO 5 90 450
02 100 05 MESA 1 100 100

 

Establecemos los tres primeros atributos como clave primaria para esta tabla. Y por último establecemos los dos primeros atributos como clave foránea.

PK
Sucursal Número de factura Código de artículo Nombre de artículo Cantidad del artículo Precio unitario del artículo Subtotal del artículo
01 100 01 CAMISA 2 50 100
01 100 02 ZAPATOS 3 80 240
01 100 05 MESA 1 100 100
01 101 09 TINTA 4 25 100
02 100 13 CUADRO 5 90 450
02 100 05 MESA 1 100 100
Fk

 

¿Usar o no usar datos atómicos?

Un caso común de violación a la 1FN es cuando una empresa asigna un número de control a sus empleados utilizando una combinación de claves, por ejemplo, el código de departamento con el código de empleado. Estos números pueden dividirse en unidades menores, por lo que una relación que los usara no se encuentra en 1FN. (Además, utilizar esos números como clave primaria ocasionaría problemas, por ejemplo cuando un empleado cambiara de departamento).

Otro ejemplo sería cuando  un atributo llamado “Dirección” guarda los datos de calle y ciudad, ambos datos se considerarían como uno solo, y no se podrían hacer búsquedas por calle o por ciudad. Sin embargo, si en algún caso no se requiriera el uso de datos independientes, tendría sentido utilizar datos no atómicos para evitar una carga innecesaria al programador cuando éste tuviese que convertir los datos separados a datos atómicos.

 

Referencias

  1. De Miguel et al (2001). Diseño de Bases de Datos. Alfaomega, México.
  2. Silberschatz A., Korth H. y Sudarshan S. (2006). Fundamentos de bases de datos. Quinta edición. McGraw Hill. Madrid.
  3. Reynosa E., Maldonado C., Muñoz R., Damiano L., Abrutsky M. (2012). Bases de datos. Ed. Alfaomega.

 

¿Qué te pareció este artículo?
  • Excelente 
  • Interesante 
  • Regular 
  • No era lo que buscaba 
  • Poco informativo 
Facebooktwittergoogle_plusmail

Tu comentario

opiniones

Comments

  • Segunda forma normal en el modelo relacional (2FN) | Blog de tecnología y educación | Nov 4,2015

    […] En el artículo anterior comentamos la Primera Forma Normal. (1FN). Y una relación debe normalizarse a ese nivel si deseamos cumplir con la 2FN. Una vez cubierto este requisito, analicemos el siguiente: los atributos no clave deben depender por completo de la clave primaria y no a una parte de ella. Los atributos no clave son todos aquellos que no forman parte de la clave primaria, y ninguno de ellos dependerá de una parte de la clave primaria. […]