Normalización
Ing. Gustavo Delgado Ugarte
Introducción
• La principal ventaja del modelo relacional frente a otros modelos de datos, como el de red o el jerárquico, es la existencia de un cuerpo teórico-formal en el que basar el proceso de diseño de bases de datos, de proceso de diseño de bases de datos, de modo que pueda dejar de ser una especie de “arte”, cuyo resultado depende fundamentalmente de la habilidad del diseñador para convertirse en un proceso metódico.
ANOMALIAS DE MANEJO
• Puede definirse el problema del diseño de las
bases de datos relacionales como el de escoger,
de entre una serie de posibilidades, un conjunto
de esquemas de relación “buenos” para de esquemas de relación “buenos” para
representar información del mundo real.
• ¿ Qué se entiende por un “buen” esquema de
relación ?
– Básicamente, uno que está libre de redundancia y de
anomalías de manejo.
ANOMALIAS DE MANEJO
• Consideremos un esquema de relación:
– PIEZAS ( PIEZA , PROVEEDOR , CANTIDAD )
• donde CANTIDAD indica la cantidad de una
determinada pieza en almacén.
• Supondremos que una misma pieza puede ser
suministrada por varios proveedores, y que un
proveedor puede suministrar varias piezas.
ANOMALIAS DE MANEJO
ANOMALIAS DE MANEJO
• Fácilmente se observa lo siguiente:– La cantidad de una determinada pieza aparece repetida tantas
veces como proveedores la suministran ( redundancia ).
– Al cambiar la cantidad almacenada de una determinada pieza, el valor debe alterarse en todas las tuplas correspondientes a dicha pieza ( anomalía de modificación ).
– Si se borra el último proveedor de una pieza, se pierde la cantidad de dicha pieza en almacén, a menos que se admitan valores nulos ( anomalía de borrado ).
– Solamente puede almacenarse la cantidad en almacén de una determinada pieza, cuando exista al menos un proveedor conocido para dicha pieza, a menos que se admitan valores nulos ( anomalía de inserción ).
FORMAS NORMALES
• Para caracterizar esquemas de relación desprovistos de determinados tipos de anomalías, se han definido las llamadas “formas normales”.
• Un esquema de relación está en una determinada forma normal cuando cumple ciertas condiciones que garantizan determinadas propiedades deseables del esquema.
1ra FORMA NORMAL ( Codd, 1970)
• Podríamos considerar la posibilidad de
sustituir el esquema de relación PIEZAS por
otro:
– PIEZAS2( PIEZA , PROVEEDORES , CANTIDAD )– PIEZAS2( PIEZA , PROVEEDORES , CANTIDAD )
• en el cual, el atributo PROVEEDORES toma como valor
el conjunto de proveedores de cada pieza.
1ra FORMA NORMAL ( Codd, 1970)
1ra FORMA NORMAL ( Codd, 1970)
• Un esquema de relación, alguno de cuyos
atributos toma como valores conjuntos de
valores más elementales , se dice que está “no
normalizado”.normalizado”.
• En caso contrario, es decir, si el dominio asociado
a cada atributo contiene únicamente valores
atómicos ( simples o compuestos ), entonces se
dice que el esquema está en primera forma
normal ( 1 FN ), o simplemente normalizado.
1ra FORMA NORMAL ( Codd, 1970)
• Definición: está en 1FN si
– Todo valor en es atómico
• no contiene grupos de repetición
• Consideraciones• Consideraciones
– La 1FN no permite
• Atributos multivalorados
• Atributos compuestos
• Combinaciones de estos
Métodos para corregir el problema
(1FN)
• Método 1
– Generar una nueva relación conteniendo el grupo
de repetición y la llave primaria de la relación
originaloriginal
– Determinar una llave primaria de la nueva relación
– Abordaje más genérico y no causa redundancia
Métodos para corregir el problema
(1FN)
• Método 2
– Eliminar el grupo de repetición
– Expandir la llave primaria
– Abordaje que causa redundancia
Métodos para corregir el problema
(1FN)
• Método 3
– Sustituir el grupo de repetición por un numero
máximo de valores establecidos para el grupo
– Abordaje menos genérica y que puede introducir
muchos valores nulos (null)
Métodos para corregir el problema
(1FN)
• Ejemplo
– Cliente(nro-cli, nombre, {dir_entrega})
Nro-cli Nombre Dir_entrega
124 Juan Pérez Calle 10, 1024124 Juan Pérez Calle 10, 1024
Calle 24, 1356
311 José Nieves Calle 46, 1344
Calle 98, 4456
Métodos para corregir el problema
(1FN)
• Solución al problema
– Método 1
• Cliente_nombre(nro-cli, nombre)
• Cliente_entrega(nro-cli, calle, numero)• Cliente_entrega(nro-cli, calle, numero)
– Método 2
• Cliente(nro-cli, nombre, calle, numero)
– Método 3
• Cliente(nro-cli, nombre, calle1, numero1, calle2,
numero2)
Descomposición de Esquemas
• Retomando el caso del esquema PIEZAS
Descomposición de Esquemas
• Las anomalías existentes en el esquema
PIEZAS se deben, básicamente, al hecho de
haber utilizado un único esquema de relación
para representar dos “hechos semánticos” para representar dos “hechos semánticos”
distintos, a saber:
– La relación entre proveedores y piezas
suministradas por lo mismos, y
– El hecho de que exista una cierta cantidad de cada
pieza en almacén.
Descomposición de Esquemas
• Podríamos pensar en dividir el esquema de
relación en dos:
Descomposición de Esquemas
Descomposición de Esquemas
• Podemos observar que:
– Se han eliminado la redundancia y las anomalías
de manejo existentes en el esquema original.
– En la segunda base de datos hemos separado en – En la segunda base de datos hemos separado en
esquemas de relación distintos los diferentes
hechos semánticos a representar.
– Podemos obtener la relación original mediante la
unión (join) natural de las dos proyecciones del
segundo esquema.
Descomposición de Esquemas
• Este último punto es muy importante. Cuando ocurre
esto, es decir, cuando un esquema de relación puede
descomponerse en proyecciones , a partir de las
cuales es posible recuperar el esquema original por
medio de la unión natural, se dice que el esquema es medio de la unión natural, se dice que el esquema es
descomponible , o que existe una descomposición
sin pérdidas de dicho esquema.
• El concepto de descomposición sin pérdidas es
fundamental en la teoría de diseño de bases de
datos relacionales.
Dependencias Funcionales (DF)
• Es una restricción entre dos subconjuntos de
atributos A y B de , siendo la notación A→B
• Especifica una restricción de las posibles tuplas R( ):
– Si ti[A] = tj [A] entonces ti [B] = tj [B] para cualquier i,j – i j i j
• En este caso se dice que A determina funcionalmente
a B (o alternativamente, B depende funcionalmente
de A)
• Ejemplo: Pieza → Cantidad
Notación Diagramática para DF
Nro-cliente Nombre Dirección
Nro-pedido Nro-pieza Cantidad_comprada Precio_contadoNro-pedido Nro-pieza Cantidad_comprada Precio_contado
Nro-cliente Nombre Dirección Cod_vend Nombre_vend
Dependencia Funcional
• Control de Consistencia
– Es necesario conocer todas las dependencias
funcionales – información semántica provistas por
el diseñadorel diseñador
– Algunas dependencias funcionales (DFs) pueden
ser inferidas a partir de DFs existentes => reglas de
inferencia
Dependencia Funcional
• Reglas de inferencia de DFs
– Reflexiva: si (DF Trivial)
– Aumentativa: Si
– Descomposición: Si– Descomposición: Si
– Aditiva: si
– Transitiva: si
– Pseudo-transitiva: si
– Observación: AB representa {A,B}
Definiciones
• Dados los conjuntos de atributos X e Y, y un
atributo A Є X:
– X → Y, es una dependencia funcional parcial si
– X → Y, es una dependencia funcional total si
– X → Y, es una dependencia funcional trivial si
Definiciones
• Dados los conjuntos de atributos X e Y, y un
atributo A Є X:
– X → Y, es una dependencia funcional transitiva si
existe X → Z y Z → Y, y Z no es parte de la llave existe X → Z y Z → Y, y Z no es parte de la llave
primaria.
– Atributo principal, primario o primo.- Atributo
que forma parte de alguna clave candidata en
2da Forma Normal (2FN)
• Definición.- Un esquema de relación está
en 2FN si todo atributo no primario A en
tiene dependencia funcional total de la clave
primaria de primaria de
– 1FN
– X → A es una dependencia funcional total si
(X – {B}) no determina funcionalmente A para
cualquier atributo B Є X
2da Forma Normal (2FN)
• “Prueba para 2FN”: verificar si los atributos del
lado izquierdo de las DFs forman parte de la clave
primaria.Ejemplo
• Pedido(nro-pedido, fecha, nro-pieza, descripción, • Pedido(nro-pedido, fecha, nro-pieza, descripción,
cantidad-comprada, precio-contado)
– nro-pedido → fecha
– nro-pieza → descripción
– {nro-pedido,nro-pieza} → {cantidad-comprada,
precio-contado}
2da Forma Normal (2FN)
• Para corregir el problema:
– Para cada subconjunto del conjunto de atributos que constituye una clave primaria, generar una relación con ese subconjunto como su clave primariaprimaria
– Incluir los atributos de la relación original en la relación correspondiente a la clave primaria apropiada
• Colocar cada atributo junto con una colección mínima de la cual depende, atribuyendo un nombre a cada relación.
2da Forma Normal (2FN)
• Tomando el ejemplo anterior
– Pedido(nro-pedido, fecha, nro-pieza, descripción,
cantidad-comprada, precio-contado)
• Pedido(nro-pedido, fecha)• Pedido(nro-pedido, fecha)
• Pieza(nro-pieza, descripción)
• Pedido_pieza(nro-pedido, nro-pieza, cantidad-
comprada, precio-contado)
2da Forma Normal (2FN)
• La 2FN evita:
– Inconsistencias y anomalías causadas por
redundancia de información
– Pérdida de información en operaciones de – Pérdida de información en operaciones de
eliminación y modificación en la relación
3ra Forma Normal (3FN)
• Definición. está en 3FN si
– Está en 2FN
– Ningún atributo no primario de fuera
transitivamente dependiente de la clave primariatransitivamente dependiente de la clave primaria
• Dependencia Transitiva
– Dependencia transitiva X→Y en sucede si:
• X→Z y Z→Y , y
• Z no es clave candidata ni subconjunto de cualquier
clave de
3ra Forma Normal (3FN)
• En otras palabras, todos los atributos no
primarios deben poseer dependencia total, no
transitiva, de la clave primaria
• Si X→Y es no transitiva, entonces no puede • Si X→Y es no transitiva, entonces no puede
haber el conjunto de DFs: X→Z y Z→Y
• Ejemplo:
– Cliente(nro-cliente, nombre-cliente, direcc-cliente,
nro-vendedor, nombre-vendedor)
• Nro-vendedor → nombre-vendedor
3ra Forma Normal (3FN)
• Corrigiendo el problema
– Para cada determinante que no es una clave
candidata, remover de la relación los atributos
que dependen de ese determinanteque dependen de ese determinante
– Crear una nueva relación conteniendo todos los
atributos de la relación original que dependen de
ese determinante
– Volver al determinante, clave primaria de la nueva
relación
3ra Forma Normal (3FN)
• Corrigiendo nuestro ejemplo
– Cliente(nro-cliente, nombre-cliente, direcc-cliente,
nro-vendedor, nombre-vendedor)
• Cliente(nro-cliente, nombre-cliente, direcc-cliente , nro-vendedor)
• Vendedor(nro-vendedor, nombre-vendedor)
Clave Foránea
3ra Forma Normal (3FN)
• Así como la 2FN, la 3FN evita:
– Inconsistencias y anomalías causadas por
redundancia de información
– Pérdida de información en operaciones de – Pérdida de información en operaciones de
eliminación y modificación en la relación
3ra Forma Normal (3FN)
• Así como la 2FN, la 3FN evita:
– Inconsistencias y anomalías causadas por
redundancia de información
– Pérdida de información en operaciones de – Pérdida de información en operaciones de
eliminación y modificación en la relación
Normalización
• Como hemos visto, la normalización de
relaciones:
– Está basada en DFs
– Garantiza consistencia en la construcción del – Garantiza consistencia en la construcción del
sistema
• Reducción de anomalías
• Reducción de redundancias
Normalización
• Formas Normales
– 1FN: el dominio de los atributos es atómico
– FNs basadas en DFs:
• Basadas en la clave primaria: 2FN, 3FN
• Basadas en claves candidatas: FN de Boyce-Codd (FNBC o en • Basadas en claves candidatas: FN de Boyce-Codd (FNBC o en inglés BCNF)
– FN basada en dependencias multivaloradas
• 4FN
• 5FN: generaliza dependencias multivaloradas, también denominada forma normal de reunión por proyección (FNRP)
Normalización
¿Preguntas?
Ing. Gustavo Delgado Ugarte