Professional Documents
Culture Documents
Notas de clase 1
Introducción
Para construir un modelo relacional de datos, con el cual a su vez se elaborará una base de datos,
es importante tener un modelo entidad relación que no tenga redundancias ni pérdida de
información, y que tampoco presente anomalías al realizar la gestión de los datos. Estas
características se garantizan mediante la normalización.
Para ilustrar las posibles anomalías se mostraran algunos datos de una entidad llamada
“ProveedorProducto”:
Definición
El proceso de normalización se genera alrededor del concepto de formas normales. Una entidad
está en una forma normal en particular si satisface un conjunto de condiciones preestablecidas.
Estas notas se basan principalm ente en [Date] y [Londoño], de donde se han tom ado algunos
apartes textuales. Se om iten las com illas dada esta aclaración
Página 1 de 5
Existen diferentes formas normales, que se basan en diferentes tipos de dependencias, así:
• Primera, Segunda y Tercera forma normal (1FN, 2FN, 3FN): se basan en las dependencias
funcionales.
• Forma normal de Boyce-Codd (FNBC): se basa en dependencias funcionales
• Cuarta forma normal (4FN): se basa en dependencias multivaluadas
• Quinta forma normal (5FN): se basa en dependencias de join.
La primera forma normal prohíbe tener atributos multivaluados. El dominio de cada atributo debe
ser atómico, es decir sus elementos deben ser unidades indivisibles.
Por ejemplo, si se tiene una tabla llamada Cuenta, con la siguiente información:
Para que la tabla cumpla con la primera forma normal es necesario que en cada fila solo se tenga
un valor único por atributo, así:
Página 2 de 5
En este caso se duplica información de la cuenta, pero esta redundancia se eliminará con las
siguientes formas normales.
Otra forma de hacer cumplir con la primera forma normal es crear otra entidad con los atributos
multivaluados. Específicamente para el ejemplo mostrado anteriormente el el modelo quedaría:
Para poder reconocer rápidamente las dependencias funcionales parciales se puede utilizar un
diagrama de dependencias. Por ejemplo, si se tiene una entidad, llamada ProveedorProducto, con
atributos Código, Descripción, Precio, Nit, Nombre y Teléfono; y con las siguientes dependencias
funcionales no redundantes:
Código ÷ Descripción
Nit ÷ Nombre, Teléfono
Código, Nit ÷ Precio
El identificador (clave primaria) es: Código, Nit.
El diagrama sería:
Página 3 de 5
Puede verse que sólo el precio depende totalmente del identificador, que es una combinación de
dos atributos. La descripción y el nombre dependen parcialmente del identificador, porque sólo
dependen de uno de los dos atributos.
Para solucionarlo se crean nuevas entidades con los atributos que forman parte de las
dependencias parciales, así:
Producto Proveedor
Código Nit
Descripción Nom bre
Teléfono
Las relaciones, como son uno-a-muchos, representan dependencias funcionales válidas. Como
un precio es de sólo un producto y un proveedor. Entonces:
Código, Nit ÷ Código y Código, Nit ÷ Nit.
Ejercicio
ProveedorArtículo
Código_p Dependencias funcionales:
Nombre Código_p ÷ Nombre, Teléfono
Teléfono Código_a ÷ Descripción_a
Código_a Código_c ÷ Descripción_c
Descripción_a Código_a, Código_c ÷ Precio
Precio
Código_c Identificador: Código_p, Código_a, Código_c
Descripción_c
Página 4 de 5
Normalización - Segunda Parte
Notas de clase 1
A continuación se presentan dos formas normales: la tercera forma normal y la forma normal
de Boyce-Codd. Estas formas normales se basan en dependencias funcionales.
En este caso también es útil tener un diagrama de dependencias. Por ejemplo, si se tiene una
entidad, llamada ProveedorProducto, con atributos Código, Descripción, Precio, Nit, Nombre y
Teléfono; y con las siguientes dependencias funcionales no redundantes:
Código ÷ Descripción, Precio
Nit ÷ Nombre, Teléfono
Nit ÷ Código
El identificador (clave primaria) es: Nit.
El diagrama sería:
Puede verse que hay dependencias funcionales transitivas, es decir, entre atributos que no hacen
parte de identificadores. Para solucionarlo se crea una nueva entidad con los atributos que están
en las dependencias transitivas, así:
Estas notas se basan principalm ente en [Date] y [Londoño], de donde se han tom ado algunos
apartes textuales. Se om iten las com illas dada esta aclaración
Página 1 de 3
Comprobamos que el nuevo modelo es equivalente porque se hay conservación de atributos,
dependencias y ocurrencias:
- En la entidad Proveedor se conserva la dependencia Nit ÷ Nombre, Teléfono (El identificador
en Nit).
- En la entidad Producto se conserva la dependencia Código ÷ Descripción, Precio (El
identificador es Código).
- En la relación se tiene la dependencia Nit ÷ Código. Como es una dependencia válida también
se garantiza la conservación de ocurrencias.
Esta forma normal es una mejoría a la tercera forma normal, ya que tiene en cuenta cuando hay
varios identificadores en una entidad.
Es decir, todas las dependencias en una entidad deben tener en el lado izquierdo a un identificador
candidato. Por ejemplo, si se tiene una entidad, llamada ProveedorProducto, con atributos Código,
Precio, Nit, Nombre; y con las siguientes dependencias funcionales no redundantes:
Nit, Código ÷ Precio
Nit ÷ Nombre
Nombre ÷ Nit
Hay dos identificadores: I1 = {Código, Nit}, I2 ={Código, Nombre}
En este caso se hacen dos diagramas de dependencias, uno para cada uno de los identificadores,
así:
Esta entidad está en 3FN, porque no hay dependencias parciales ni transitivas (recuerde que las
dependencias parciales o transitivas se dan con los atributos no principales).
Sin embargo esta entidad no cumple con la forma normal de Boyce-Codd, porque en dos
dependencias (Nit ÷ Nombre y Nombre ÷ Nit) el implicando, es decir, el lado izquierdo no es un
identificador. Para solucionar esto se crea una nueva entidad con los atributos que presentan la
anomalía, así:
Página 2 de 3
En este caso también se puede verificar la conservación de dependencias:
- En la entidad Proveedor se cumplen Nit ÷ Nombre y Nombre ÷ Nit, y en este caso hay dos
identificadores: I1 = {Nit}, I2 ={Nombre}
- En la entidad Producto se cumple Nit, Código ÷ Precio, y por lo tanto Producto sería una entidad
débil, que necesita de la relación para identificarse. Como la entidad Proveedor tiene dos
identificadores, entonces Producto también tiene dos identificadores: I1 = {Código, Nit},
I2 ={Código, Nombre}
Bibliografía
Página 3 de 3