Sei sulla pagina 1di 9

NORMALIZACIN

La normalizacin es un trmino que deriva de la metodologa que se utiliza para evitar la


redundancia de datos y el fcil acceso y actualizacin de estos. Esta metodologa consiste
en un conjunto de normas llamadas formas normales, numeradas desde la 1 a la !.
Lo importante de esta metodologa es que para que una relacin est en " forma normal
#$%& de'e anteriormente estar en 1 $%, para estar en ( $% de'e estar en " $% y por
transitividad, de'e estar en 1 $%.
Conceptos fundamentales para la compresin
Dependencia funcional
)omo su nom're lo indica, est fuertemente relacionado a los conceptos matemticos
aplicados al concepto de funcin.
*upongamos que tenemos una relacin compuesta por un conjunto de atri'utos y tomemos
a +,- e +y- atri'utos de esta relacin #la forma x e y es un generalizacin de los atri'utos&.
*e define como dependencia funcional entre , e y de una relacin . cualquiera si +para una
relacin . el atri'uto +y- de . depende funcionalmente del atri'uto +,- de . si y slo s un
valor de +y- en . est asociado a cada valor de +,- en .-.
Aplicacin de las diferentes formas normales
Ejemplo/ *upongamos que tenemos el siguiente modelo relacional/
0enta
%ro$actura
)digo1.roducto
2escripcin1.rod
.recio3nitario1.rod
)ant10endida1.rod
)digo1)liente
%om're1)liente
$ec4a1de10enta
Modelo relacional que contiene la relacin Venta
Definicin:
Una funcin es una relacin entre dos variables en la cual a cada valor de la
primera le corresponde un nico valor de la segunda.
or e!emplo: f"x# $ %x & '( )y* est+ en funcin de )x*.
Primera Forma Normal
La 1 $% solicita que se cumplan dos condiciones so're la relacin #entidad o ta'la&/
2e'e e,istir una clave primaria
5segurar la integridad de los datos eliminando los grupos repetitivos.
*i miramos nuestra relacin veremos que para una venta realizada en una determinada
fec4a con un n6mero de factura para un mismo cliente, por cada producto que compre el
cliente, suceder algo como lo que se ve en la 7a'la 1.
NroFactura Cod_Prod Descrip_Prod P_Prod Cant!end_Prod Cod_Cli Nom"_Cli Fec#a_!ta
( " 8artillo "9,:9 1! ;<; =uan .rez 9">9(>9<
( ! )lavo 9,;9 (99 ;<; =uan .rez 9">9(>9<
( ? )lavo 1,"9 "99 ;<; =uan .rez 9">9(>9<
( 1! 2estornillador <,!9 ; ;<; =uan .rez 9">9(>9<
Los atri'utos #campos& %ro$actura, )od1cliente, %om're1)liente y $ec4a1de10enta se
repiten en la ta'la por cada aparicin diferente de )od1.roducto, .recio3nitario1.rod y
2escripcin1.roducto. Estos 6ltimos atri'utos #los referentes al producto& no estn
cumpliendo con la segunda condicin definida para que una relacin se encuentre en 1 $%
y por ellos los campos correspondientes a la venta y el cliente se repiten en cada registro, a
esto se lo llama redundancia de datos.
*upongamos que el cliente se mudara, se estara o'ligado con este esquema de
representacin a actualizar los domicilios en todos los registros de la relacin venta donde
aparezca el cliente en cuestin, lo que no sera una tarea grata.
En esta relacin la clave primaria es el %ro. de $actura #%ro$actura&.
,Cmo -acemos para que la relacin Venta quede en ./ 012
.asos para lograr que una relacin quede en 1 $%
1@ Eliminar de la relacin original el o los atri'utos que no posean unvocamente valores
atmicos #o sea los que son grupos repetitivos&.
"@ *eleccionar la clave primaria de la relacin original.
(@ )rear una nueva relacin que posea los atri'utos que son repetitivos y fueron eliminados
de la relacin original.
:@ El atri'uto que es la clave primaria en la relacin original ser parte o formar parte de la
clave primaria de la nueva relacin.
!@ 2ar un nom're a la nueva relacin y definir su clave primaria.
7eniendo en cuenta los pasos anteriores, proceder de manera que la relacin 0enta quede
en 1 $%.
3!emplo:
1@ Eliminar de la relacin 0E%75 los siguientes atri'utos/ Cdi$o_Producto%
Descripcin_Prod% Precionitario_Prod & Cant_!endida_Prod'
"@ *eleccionar como clave primaria de la relacin venta el atri'uto NroFactura.
(@ 2efinir una nueva relacin con los siguientes atri'utos/ Cdi$o_Producto%
Descripcin_Prod% Precionitario_Prod & Cant_!endida_Prod'
:@ 5gregar a la nueva entidad el atri'uto %ro$actura que formar parte de la clave primaria
de la nueva entidad.
!@ 2efinir la relacin con el nom're 2E75LLE10E%75 y tomar como clave primaria de la
relacin a los atri'utos NroFactura y Cdi$o_Producto
)omo consecuencia queda el siguiente modelo relacional/
!(N)A
). %ro$actura
)digo 1 cliente
%om're 1 cliente
$ec4a1de10enta
D()ALL(_!(N)A
).
%ro$actura
)digo 1 producto
2escripcin1.rod
.recio3nitario1.rod
)ant10endida1.rod
0E%75
NroFactura Cdi$o _ cliente Nom"re _ cliente Fec#a_de_!enta
( ;<; =uan .rez 9">9(>9;
2E75LLE 0E%75
NroFactura Cdi$o_Producto Descripcin_Prod Precionitario_Prod Cant_!endida_Prod
( " 8artillo "9,: 1!
( ! )lavo 9,; (99
( ? 7aladro 1"9 "
( 1! 2estornillador <,! ;
5m'as relaciones 4an quedado en 1 $% con sus correspondientes claves primarias
definidas y se muestra como se preservan los datos en am'as ta'las sin prdida de
informacin con respecto a las tuplas de la entidad venta original.
*e$unda Forma Normal
.ara que una relacin se encuentre en " $% de'e satisfacer las siguientes condiciones/
2e'e estar en 1 $%.
7odos los atri'utos no clave dependen funcionalmente de la clave primaria.
En el ejemplo de la relacin 0E%75 que esta'a en 1 $% tam'in se encuentra en " $%,
pero la relacin 2E75LLE10E%75 que se encuentra en la 1 $% no se encuentra en " $%.
El atri'uto Descripcin_Prod depende funcionalmente Cdi$o_Producto que forma parte
de la clave primaria de esta relacin, pero no depende funcionalmente del atri'uto
NroFactura que tam'in es uno de los atri'utos que forman parte de la clave primaria de la
relacin. En cam'io los atri'utos Cant_!endida_Prod y Precionitario_Prod dependen
funcionalmente de am'os atri'utos, que forman la clave primaria.
1ota .: 4a segunda condicin de la '/ 01 solo debe verificarse cuando la clave primaria de la
relacin en cuestin es una clave primaria compuesta "es decir( algn atributo no clave depende de
uno de los atributos de la clave( pero no de la totalidad de ellos#( ya que cuando es de un solo atributo
esta condicin ser+ verdadera.
1ota ': Dependiendo de las reglas de negocio el atributo recioUnitario5rod podr6a poseer una
dependencia funcional completa de la clave primaria. 3n nuestro caso( se asume que el precio
unitario podr6a variar con el transcurso del tiempo7 pero si aceptamos que el precio de un producto es
invariable( este atributo depender6a parcialmente de la clave( ya que depender6a nicamente del
cdigo de producto.
,Cmo -acemos para que la relacin D3894435V3189 quede en '/ 012
.asos para lograr que una relacin quede en " $%
1@ Eliminar de la relacin original el o los atri'utos que no dependan funcionalmente por
completo de la clave primaria.
"@ )rear una nueva relacin que posea como atri'utos el o los atri'utos eliminados de la
relacin original.
(@ 5gregar a dic4a relacin el atri'uto de la clave primaria de la relacin original del cual
dependan funcionalmente los atri'utos no claves de la relacin original.
:@ El atri'uto del punto anterior ser tomado como clave primaria de la nueva relacin.
!@ 2arle un nom're a la nueva relacin.
7eniendo en cuenta los pasos anteriores, proceder de manera que la relacin 0enta quede
en " $%.
3!emplo:
1@ *acaremos de la relacin D3894435V3189 el atributo Descripcin_Prod.
"@ )rearemos una nueva relacin que contenga el atri'uto Descripcin_Prod.
(@ 5gregaremos a dic4a relacin el atri'uto Cdi$o_Producto.
:@ *e define el atri'uto Cdi$o_Producto como clave primaria de dic4a relacin.
!@ Llamamos a dic4a relacin :;DUC8;<.
)omo consecuencia queda el siguiente modelo relacional en " $%/
!(N)A
). %ro$actura
)digo 1 cliente
%om're 1 cliente
$ec4a1de10enta
PRODC)O*
).
)digo 1 producto
2escripcin1 producto
D()ALL(_!(N)A
).
%ro$actura
)digo 1 producto
.recio3nitario1.rod
)ant10endida1.rod
0E%75
NroFactura Cdi$o _ cliente Nom"re _ cliente Fec#a_de_!enta
( ;<; =uan .rez 9">9(>9;
2E75LLE10E%75
NroFactura Cdi$o_Producto Precionitario_Prod Cant_!endida_Prod
( " "9,: 1!
( ! 9,; (99
( ? 1"9 "
( 1! <,! ;
.AB23)7B
Cdi$o_Producto Descripcin_Prod
" 8artillo
! )lavo
? 7aladro
1! 2estornillador
Las tres relaciones se encuentran en " $% y adems se muestran los valores de la ta'la
original, sin prdida de informacin y sin redundancia.
)ercera Forma Normal
.ara que una relacin se encuentre en ( $% de'e cumplir las siguientes condiciones/
1@ 2e'e estar en " $%.
"@ %ing6n atri'uto no clave es funcin dependiente de cualquier otro atri'uto #es decir si
todos los atri'utos no claves dependen de manera no transitiva de la clave primaria&.
En nuestro ejemplo, las relaciones 2E75LLE10E%75 y .AB23)7B* satisfacen am'as
condiciones, pero no sucede lo mismo con la relacin 0E%75, ya que los atri'utos
%om're1cliente y 2omicilio1)liente dependen funcionalmente del atri'uto )digo1)liente
que no es un atri'uto clave y no dependen funcionalmente del atri'uto %ro$actura que es la
clave primaria.
.asos para lograr que una relacin quede en ( $%
1@ Eliminar de la relacin original los atri'utos no claves que dependen de manera no
transitiva de la clave primaria.
"@ )rear una nueva relacin que contenga como atri'utos el o los atri'utos eliminados de la
relacin original.
(@ )opiar el atri'uto no clave de la relacin original del cual dependan transitivamente los
atri'utos no claves eliminados de dic4a relacin.
:@ 2efinir el atri'uto del punto anterior como clave primaria de la nueva relacin.
!@ 2arle un nom're a la nueva relacin.
!(N)A
). %ro$actura
)digo 1 cliente
$ec4a1de10enta
D()ALL(_!(N)A
).
%ro$actura
)digo 1 producto
.recio3nitario1.rod
)ant10endida1.rod
PRODC)O*
).
)digo 1 producto
2escripcin1 producto
7eniendo en cuenta los pasos anteriores, proceder de manera que la relacin 0enta quede
en ( $%.
3!emplo:
1@ Eliminaremos de la relacin 0enta los atri'utos denominados %om're1)liente y
2omicilio1)liente.
"@ )rearemos a continuacin una relacin nueva con los atri'utos %om're1)liente y
2omicilio1)liente.
(@ )opiaremos el atri'uto )digo1)liente a esta nueva relacin.
:@ 2efiniremos al atri'uto )digo1)liente como clave primaria de esta relacin.
!@ 2aremos el nom're )LCE%7E* a la nueva relacin.
CLI(N)(
).
)digo 1 cliente
%om're1)liente
)on lo cual queda un modelo relacional en ( $% como el que sigue/
0E%75
NroFactura Cdi$o _ cliente Fec#a_de_!enta
( ;<; 9">9(>9;
)LCE%7E
Cdi$o _ cliente Nom"re _ cliente
;<; =uan .rez
2E75LLE10E%75
NroFactura Cdi$o_Producto Precionitario_Prod Cant_!endida_Prod
( " "9,: 1!
( ! 9,; (99
( ? 1"9 "
( 1! <,! ;
.AB23)7B
Cdi$o_Producto Descripcin_Prod
" 8artillo
! )lavo
? 7aladro
1! 2estornillador
Inte$ridad del modelo de datos
*e dice que una clave primaria es un atri'uto 6nico o el resto de los atri'utos no claves
dependen funcionalmente de ella, pero 4ay algo que no se mencion/ que las claves
primarias no pueden contener el valor nulo o null como valor vlido #ya que una clave
primaria no puede ser indefinida&. )on lo cual la primera condicin de integridad que de'e
cumplir un modelo relacional es que la clave primaria no puede contener valores nulos.
3na clave primaria es el atri'uto o conjunto de atri'utos que nos permite identificar
unvocamente a cada tupla de la relacin y el valor nulo en un atri'uto indica la indefinicin o
desconocimiento de su valor, por ende poco podra servir como clave primaria un atri'uto o
conjunto de atri'utos con valor desconocido.
Esto adems est relacionado con el concepto de modelo relacional, que es una simulacin
o representacin del mundo real, por ende es muy poco pro'a'le que en el mundo real
e,istan elementos indefinidos o no identifica'les sin am'igDedad.
E,iste otro concepto su'yacente al de clave primaria, y es el de clave fornea o clave
e,terna o clave ajena #todas formas diferentes de llamar lo mismo& el cual implica lo
siguiente/ una clave e,terna es un atri'uto o conjunto de atri'utos de una relacin . cuyos
valores de'en coincidir con el valor o los valores de los atri'utos que componen la clave
primaria de alguna relacin E.
Los valores de la clave fornea y los de la clave primaria asociada con esa calve fornea
pertenecen a un mismo dominio. .ara entender el concepto de clave fornea daremos un
ejemplo. Aetomando el modelo relacional anterior, si nos fijamos el )digo1)liente de la
relacin 0enta es clave fornea de la clave primaria )digo1)liente de la relacin )liente.
La segunda condicin de integridad del modelo relacional es la de integridad referencial que
pide que no e,istan valores para las claves forneas sin coincidencias con los valores de las
claves primarias asociada a ella.
0eamos con un ejemplo que es lo que est pidiendo esta " condicin.
!(N)A
). %ro$actura
)digo 1 cliente
%om're 1 cliente
$ec4a1de10enta
PRODC)O*
).
)digo 1 producto
2escripcin1 producto
D()ALL(_!(N)A
).
%ro$actura
)digo 1 producto
.recio3nitario1.rod
)ant10endida1.rod
Este modelo no podra tener registrada una venta para un cliente ine,istente, ya que eso no
cumplira la condicin de integridad referencial. Lgicamente, en la vida real slo es vlido
realizar una venta a un cliente e,istente y no tendra sentido realizar una venta a un cliente
ine,istente a no ser que se deseara realizar una estafa o manio'ra fraudulenta y no es la
idea permitir que esto suceda. *in em'argo, es facti'le tener registrado uno o ms clientes y
que ellos no realicen ninguna compra.
Ejemplo del modelo relacional terminado/
!(N)A
). %ro$actura
)E1 )digo@cliente
$ec4a1de10enta
PRODC)O*
).
)digo@cliente
%om're 1 cliente
D()ALL(_!(N)A
)., )E1
)., )E"
%ro$actura
)digo@producto
.recio3nitario1.rod
)ant10endida1.rod
PRODC)O*
).
)digo@producto
2escripcin1 producto
8odelo relacional normalizado y con la integridad referencial definida
La punta de flec4a indica la cardinalidad de 1 y la lnea continua donde termina la flec4a
indica muc4os #esta es una de las tantas formas de indicar la cardinalidad&. Esto se leera,
visto de la relacin )liente/ +3n cliente tiene muc4as ventas- o dic4o de otra manera visto de
la relacin 0enta/ +8uc4as ventas son de un cliente-.
Lo mismo se podra 4acer con 0enta y 2etalle10enta, parados en 0enta dira +3na venta
posee muc4os detalles de venta- y parados en 2etalle10enta dira +8uc4os detalles de
venta pertenecen a una venta-F parados en .roductos dira +3n producto puede e,istir en
muc4os detalles de venta- y parados en 2etalle10enta dira +8uc4os detalles de venta
contienen un producto-

Potrebbero piacerti anche