NORMALIZACION
Normalización
La normalización es una técnica que busca dar eficiencia y fiabilidad a una
BD relacional. Su objetivo es, por un lado, llevar la información a una
estructura donde prime el aprovechamiento del espacio; y por otro lado, que
el manejo de información pueda llevarse a cabo de forma rápida y que sea
facil de mantener.
Cuando realizamos un diseño en el modelo relacional existen diferentes
alternativas, pudiéndose obtener diferentes esquemas relacionales. No todos
ellos serán equivalentes y unos representarán mejor la información que otros.
Las tablas obtenidas pueden presentar problemas:
- Redundancia. Se llama así a los datos que se repiten continua e
innecesariamente por las tablas de las bases de datos. Cuando es
excesiva es evidente que el diseño hay que revisarlo, es el primer síntoma
de problemas y se detecta fácilmente.
- Ambigüedades. Datos que no clarifican suficientemente el registro al que
representan. Los datos de cada registro podrían referirse a más de un
registro o incluso puede ser imposible saber a qué ejemplar exactamente
se están refiriendo.
Normalización
- Pérdida de restricciones de integridad. Normalmente debido a
dependencias funcionales. Más adelante se explica este problema.
- Anomalías en operaciones de modificación de datos. El hecho de que
al insertar un solo elemento haya que repetir tuplas en una tabla para
variar unos pocos datos. O que eliminar un elemento suponga eliminar
varias tuplas necesariamente (por ejemplo que eliminar un cliente
suponga borrar seis o siete filas de la tabla de clientes, sería un error muy
grave y por lo tanto un diseño terrible).
La normalización nos permite eliminar estos problemas, forzando a la división
de una tabla en dos o más.
Normalización
Para comprender bien las formas normales es necesario identificar lo que
significa dependencia funcional:
Se dice que existe dependencia funcional entre dos atributos de una tabla si
para cada valor del primer atributo existe un sólo valor del segundo.
Por ejemplo, en el esquema:
Nota (nombre_alumno, asignatura, nota, ciudad)
existe dependencia funcional nombre_alumno -> ciudad, es decir para un
valor de nombre de alumno existe un solo valor de ciudad.
Formas Normales
Las formas normales se corresponden a una teoría de normalización iniciada
por Edgar F. Codd y continuada por otros autores (entre los que destacan
Boyce y Fagin).
Codd definió en 1970 la primera forma normal. Desde ese momento
aparecieron la segunda, tercera, la Boyce-Codd, la cuarta y la quinta forma
normal.
Una tabla puede encontrarse en primera forma normal y no en segunda
forma normal, pero no al contrario. Es decir los números altos de formas
normales son más restrictivos.
Primera Forma Normal (1FN)
Es una forma normal inherente al esquema relacional, por lo que su
cumplimiento es obligatorio; es decir toda tabla realmente relacional la
cumple.
La regla de la Primera Forma Normal establece que las columnas repetidas
deben eliminarse y colocarse en tablas separadas.
Poner la base de datos en la Primera Forma Normal resuelve el problema de
los encabezados de columna múltiples. Muy a menudo, los diseñadores de
bases de datos inexpertos harán algo similar a la tabla no normalizada. Una y
otra vez, crearán columnas que representen los mismos datos. La
normalización ayuda a clarificar la base de datos y a organizarla en partes
más pequeñas y más fáciles de entender. En lugar de tener que entender
una tabla gigantesca y monolítica que tiene muchos diferentes aspectos, sólo
tenemos que entender los objetos pequeños y más tangibles, así como las
relaciones que guardan con otros objetos también pequeños.
Normalización
Ejemplo de 1FN.
Consideremos la siguiente tabla denominada ORDENES
Al examinar estos registros, podemos darnos cuenta que contienen un grupo
repetido para NUM_ITEM, DESC_ITEM, CANT y PRECIO.
La 1FN prohíbe los grupos repetidos, por lo tanto tenemos que convertir a la
primera forma normal. Los pasos a seguir son:
» Tenemos que eliminar los grupos repetidos.
» Tenemos que crear una nueva tabla con la clave primaria de la tabla base y
el grupo repetido.
Normalización – Aplicación de 1FN
Los registros quedan ahora conformados en dos tablas que llamaremos
ORDENES y ARTICULOS_ORDENES
Segunda Forma Normal (2FN)
Ocurre si una tabla está en primera forma normal (1FN) y además cada
atributo que no sea clave, depende de forma funcional completa respecto de
cualquiera de las claves. Toda la clave principal debe hacer dependientes al
resto de atributos, si hay atributos que dependen sólo de parte de la clave,
entonces esa parte de la clave y esos atributos formarán otra tabla.
La regla de la Segunda Forma Normal establece que todas las dependencias
parciales se deben eliminar y separar dentro de sus propias tablas. Una
dependencia parcial es un término que describe a aquellos datos que no
dependen de la llave primaria de la tabla para identificarlos.
Una vez alcanzado el nivel de la Segunda Forma Normal, se controlan la
mayoría de los problemas de lógica. Podemos insertar un registro sin un
exceso de datos en la mayoría de las tablas.
Normalización – Ejemplo de 2FN
Ahora procederemos a aplicar la segunda formal normal, es decir, tenemos
que eliminar cualquier columna no llave que no dependa de la llave primaria
de la tabla. Los pasos a seguir son:
• Determinar cuáles columnas que no son llave no dependen de la llave
primaria de la tabla.
• Eliminar esas columnas de la tabla base.
• Crear una segunda tabla con esas columnas y la(s) columna(s) de la PK
de la cual dependen.
La tabla ORDENES está en 2FN. Cualquier valor único de ID_ORDEN
determina un sólo valor para cada columna. Por lo tanto, todas las columnas
son dependientes de la llave primaria ID_ORDEN.
Normalización – Ejemplo de 2FN
Por su parte, la tabla ARTICULOS_ORDENES no se encuentra en 2FN ya
que las columnas PRECIO y DESC_ITEM son dependientes de NUM_ITEM,
pero no son dependientes de ID_ORDEN. Lo que haremos a continuación es
eliminar estas columnas de la tabla ARTICULOS_ORDENES y crear una
tabla ARTICULOS con dichas columnas y la llave primaria de la que
dependen.
Normalización – Ejemplo de 2FN
Las tablas quedan ahora de la siguiente manera.
Normalización – Otro ejemplo de 2FN
Suponiendo que el DNI y el código de curso forman la clave principal para
esta tabla ALUMNO, sólo la nota tiene dependencia funcional completa. El
nombre depende de forma completa del DNI. La tabla no satisface la
segunda forma normal (no es 2FN). Para arreglarlo separamos la tabla en
dos:
Normalización – Otro ejemplo de 2FN
Tercera Forma Normal (3FN)
Ocurre cuando una tabla está en segunda forma normal (2FN) y además
ningún atributo que no sea clave depende funcionalmente de forma transitiva
de la clave primaria.
Una tabla está normalizada en esta forma si todas las columnas que no son
llave son funcionalmente dependientes por completo de la llave primaria y no
hay dependencias transitivas. Comentamos anteriormente que una
dependencia transitiva es aquella en la cual existen columnas que no son
llave que dependen de otras columnas que tampoco son llave.
Cuando las tablas están en la Tercera Forma Normal se previenen errores de
lógica cuando se insertan o borran registros. Cada columna en una tabla está
identificada de manera única por la llave primaria, y no deben haber datos
repetidos. Esto provee un esquema limpio y elegante, que es fácil de trabajar
y expandir.
Normalización – Ejemplo de 3FN
La tercera forma normal nos dice que tenemos que eliminar cualquier
columna no llave que sea dependiente de otra columna no llave. Los pasos a
seguir son:
• Determinar las columnas que son dependientes de otra columna no llave.
• Eliminar esas columnas de la tabla base.
• Crear una segunda tabla con esas columnas y con la columna no llave de
la cual son dependientes.
Al observar las tablas que hemos creado, nos damos cuenta que tanto la
tabla ARTICULOS, como la tabla ARTICULOS_ORDENES se encuentran en
3FN.
Normalización – Ejemplo de 3FN
Sin embargo la tabla ORDENES no lo está, ya que NOM_CLIENTE y
ESTADO son dependientes de ID_CLIENTE, y esta columna no es la llave
primaria de la tabla ORDENES.
Normalización – Ejemplo de 3FN
Para normalizar esta tabla, moveremos las columnas no llave y la columna
llave de la cual dependen dentro de una nueva tabla CLIENTES. Las nuevas
tablas CLIENTES y ORDENES se muestran a continuación.
Normalización – Otro ejemplo de 3FN
Tercera forma normal (3FN)
Ocurre cuando una tabla está en segunda forma normal (2FN) y además
ningún atributo que no sea clave depende funcionalmente de forma transitiva
de la clave primaria
La provincia depende funcionalmente del código de provincia, lo que hace
que no esté en 3FN.
Normalización – Otro ejemplo de 3FN
Resumen Formas Normales
1FN (Eliminación de grupos repetidos)
• Se deben eliminar los grupos repetidos.
• Se debe crear una nueva tabla con la clave primaria de la tabla base y el
grupo repetido.
2FN (Dependencia Funcional)
• Determinar cuáles columnas que no son llave no dependen de la llave
primaria de la tabla.
• Eliminar esas columnas de la tabla base.
• Crear una segunda tabla con esas columnas y la(s) columna(s) de la PK
de la cual dependen.
3FN (Dependencia Transitiva)
• Determinar las columnas que son dependientes de otra columna no llave.
• Eliminar esas columnas de la tabla base.
• Crear una segunda tabla con esas columnas y con la columna no llave de
la cual son dependientes.
Unidad 2.2 - Normalizacion.pptx

Unidad 2.2 - Normalizacion.pptx

  • 2.
  • 3.
    Normalización La normalización esuna técnica que busca dar eficiencia y fiabilidad a una BD relacional. Su objetivo es, por un lado, llevar la información a una estructura donde prime el aprovechamiento del espacio; y por otro lado, que el manejo de información pueda llevarse a cabo de forma rápida y que sea facil de mantener. Cuando realizamos un diseño en el modelo relacional existen diferentes alternativas, pudiéndose obtener diferentes esquemas relacionales. No todos ellos serán equivalentes y unos representarán mejor la información que otros. Las tablas obtenidas pueden presentar problemas: - Redundancia. Se llama así a los datos que se repiten continua e innecesariamente por las tablas de las bases de datos. Cuando es excesiva es evidente que el diseño hay que revisarlo, es el primer síntoma de problemas y se detecta fácilmente. - Ambigüedades. Datos que no clarifican suficientemente el registro al que representan. Los datos de cada registro podrían referirse a más de un registro o incluso puede ser imposible saber a qué ejemplar exactamente se están refiriendo.
  • 4.
    Normalización - Pérdida derestricciones de integridad. Normalmente debido a dependencias funcionales. Más adelante se explica este problema. - Anomalías en operaciones de modificación de datos. El hecho de que al insertar un solo elemento haya que repetir tuplas en una tabla para variar unos pocos datos. O que eliminar un elemento suponga eliminar varias tuplas necesariamente (por ejemplo que eliminar un cliente suponga borrar seis o siete filas de la tabla de clientes, sería un error muy grave y por lo tanto un diseño terrible). La normalización nos permite eliminar estos problemas, forzando a la división de una tabla en dos o más.
  • 5.
    Normalización Para comprender bienlas formas normales es necesario identificar lo que significa dependencia funcional: Se dice que existe dependencia funcional entre dos atributos de una tabla si para cada valor del primer atributo existe un sólo valor del segundo. Por ejemplo, en el esquema: Nota (nombre_alumno, asignatura, nota, ciudad) existe dependencia funcional nombre_alumno -> ciudad, es decir para un valor de nombre de alumno existe un solo valor de ciudad.
  • 6.
    Formas Normales Las formasnormales se corresponden a una teoría de normalización iniciada por Edgar F. Codd y continuada por otros autores (entre los que destacan Boyce y Fagin). Codd definió en 1970 la primera forma normal. Desde ese momento aparecieron la segunda, tercera, la Boyce-Codd, la cuarta y la quinta forma normal. Una tabla puede encontrarse en primera forma normal y no en segunda forma normal, pero no al contrario. Es decir los números altos de formas normales son más restrictivos.
  • 7.
    Primera Forma Normal(1FN) Es una forma normal inherente al esquema relacional, por lo que su cumplimiento es obligatorio; es decir toda tabla realmente relacional la cumple. La regla de la Primera Forma Normal establece que las columnas repetidas deben eliminarse y colocarse en tablas separadas. Poner la base de datos en la Primera Forma Normal resuelve el problema de los encabezados de columna múltiples. Muy a menudo, los diseñadores de bases de datos inexpertos harán algo similar a la tabla no normalizada. Una y otra vez, crearán columnas que representen los mismos datos. La normalización ayuda a clarificar la base de datos y a organizarla en partes más pequeñas y más fáciles de entender. En lugar de tener que entender una tabla gigantesca y monolítica que tiene muchos diferentes aspectos, sólo tenemos que entender los objetos pequeños y más tangibles, así como las relaciones que guardan con otros objetos también pequeños.
  • 8.
    Normalización Ejemplo de 1FN. Consideremosla siguiente tabla denominada ORDENES Al examinar estos registros, podemos darnos cuenta que contienen un grupo repetido para NUM_ITEM, DESC_ITEM, CANT y PRECIO. La 1FN prohíbe los grupos repetidos, por lo tanto tenemos que convertir a la primera forma normal. Los pasos a seguir son: » Tenemos que eliminar los grupos repetidos. » Tenemos que crear una nueva tabla con la clave primaria de la tabla base y el grupo repetido.
  • 9.
    Normalización – Aplicaciónde 1FN Los registros quedan ahora conformados en dos tablas que llamaremos ORDENES y ARTICULOS_ORDENES
  • 10.
    Segunda Forma Normal(2FN) Ocurre si una tabla está en primera forma normal (1FN) y además cada atributo que no sea clave, depende de forma funcional completa respecto de cualquiera de las claves. Toda la clave principal debe hacer dependientes al resto de atributos, si hay atributos que dependen sólo de parte de la clave, entonces esa parte de la clave y esos atributos formarán otra tabla. La regla de la Segunda Forma Normal establece que todas las dependencias parciales se deben eliminar y separar dentro de sus propias tablas. Una dependencia parcial es un término que describe a aquellos datos que no dependen de la llave primaria de la tabla para identificarlos. Una vez alcanzado el nivel de la Segunda Forma Normal, se controlan la mayoría de los problemas de lógica. Podemos insertar un registro sin un exceso de datos en la mayoría de las tablas.
  • 11.
    Normalización – Ejemplode 2FN Ahora procederemos a aplicar la segunda formal normal, es decir, tenemos que eliminar cualquier columna no llave que no dependa de la llave primaria de la tabla. Los pasos a seguir son: • Determinar cuáles columnas que no son llave no dependen de la llave primaria de la tabla. • Eliminar esas columnas de la tabla base. • Crear una segunda tabla con esas columnas y la(s) columna(s) de la PK de la cual dependen. La tabla ORDENES está en 2FN. Cualquier valor único de ID_ORDEN determina un sólo valor para cada columna. Por lo tanto, todas las columnas son dependientes de la llave primaria ID_ORDEN.
  • 12.
    Normalización – Ejemplode 2FN Por su parte, la tabla ARTICULOS_ORDENES no se encuentra en 2FN ya que las columnas PRECIO y DESC_ITEM son dependientes de NUM_ITEM, pero no son dependientes de ID_ORDEN. Lo que haremos a continuación es eliminar estas columnas de la tabla ARTICULOS_ORDENES y crear una tabla ARTICULOS con dichas columnas y la llave primaria de la que dependen.
  • 13.
    Normalización – Ejemplode 2FN Las tablas quedan ahora de la siguiente manera.
  • 14.
    Normalización – Otroejemplo de 2FN Suponiendo que el DNI y el código de curso forman la clave principal para esta tabla ALUMNO, sólo la nota tiene dependencia funcional completa. El nombre depende de forma completa del DNI. La tabla no satisface la segunda forma normal (no es 2FN). Para arreglarlo separamos la tabla en dos:
  • 15.
  • 16.
    Tercera Forma Normal(3FN) Ocurre cuando una tabla está en segunda forma normal (2FN) y además ningún atributo que no sea clave depende funcionalmente de forma transitiva de la clave primaria. Una tabla está normalizada en esta forma si todas las columnas que no son llave son funcionalmente dependientes por completo de la llave primaria y no hay dependencias transitivas. Comentamos anteriormente que una dependencia transitiva es aquella en la cual existen columnas que no son llave que dependen de otras columnas que tampoco son llave. Cuando las tablas están en la Tercera Forma Normal se previenen errores de lógica cuando se insertan o borran registros. Cada columna en una tabla está identificada de manera única por la llave primaria, y no deben haber datos repetidos. Esto provee un esquema limpio y elegante, que es fácil de trabajar y expandir.
  • 17.
    Normalización – Ejemplode 3FN La tercera forma normal nos dice que tenemos que eliminar cualquier columna no llave que sea dependiente de otra columna no llave. Los pasos a seguir son: • Determinar las columnas que son dependientes de otra columna no llave. • Eliminar esas columnas de la tabla base. • Crear una segunda tabla con esas columnas y con la columna no llave de la cual son dependientes. Al observar las tablas que hemos creado, nos damos cuenta que tanto la tabla ARTICULOS, como la tabla ARTICULOS_ORDENES se encuentran en 3FN.
  • 18.
    Normalización – Ejemplode 3FN Sin embargo la tabla ORDENES no lo está, ya que NOM_CLIENTE y ESTADO son dependientes de ID_CLIENTE, y esta columna no es la llave primaria de la tabla ORDENES.
  • 19.
    Normalización – Ejemplode 3FN Para normalizar esta tabla, moveremos las columnas no llave y la columna llave de la cual dependen dentro de una nueva tabla CLIENTES. Las nuevas tablas CLIENTES y ORDENES se muestran a continuación.
  • 20.
    Normalización – Otroejemplo de 3FN Tercera forma normal (3FN) Ocurre cuando una tabla está en segunda forma normal (2FN) y además ningún atributo que no sea clave depende funcionalmente de forma transitiva de la clave primaria La provincia depende funcionalmente del código de provincia, lo que hace que no esté en 3FN.
  • 21.
  • 22.
    Resumen Formas Normales 1FN(Eliminación de grupos repetidos) • Se deben eliminar los grupos repetidos. • Se debe crear una nueva tabla con la clave primaria de la tabla base y el grupo repetido. 2FN (Dependencia Funcional) • Determinar cuáles columnas que no son llave no dependen de la llave primaria de la tabla. • Eliminar esas columnas de la tabla base. • Crear una segunda tabla con esas columnas y la(s) columna(s) de la PK de la cual dependen. 3FN (Dependencia Transitiva) • Determinar las columnas que son dependientes de otra columna no llave. • Eliminar esas columnas de la tabla base. • Crear una segunda tabla con esas columnas y con la columna no llave de la cual son dependientes.