Autora original del documento que fue adaptado:
Mónica
María Rojas Rincón[email protected]Oficina: P19-103
Lo concideré un documento interesante y procedo a postearlo para que todos lo vean.
Modelo Relacional
Indice:Normalización: ¿para qué sirve?
Anomalías
FORMAS NORMALES
PRIMERA FORMA NORMAL
SEGUNDA FORMA NORMAL
TERCERA FORMA NORMAL
BCNF
Partición SPI y SPD
Descomposición sin pérdida de DF (SPD)
Refencias
Saludos!
Normalización: ¿para qué sirve?
Para diseñar "buenas" relaciones desde el punto de
vista de:
* Minimizar la redundancia
* Minimizar el mantenimiento de datos
* Minimizar el impacto de futuros cambios de datos e ingreso de información.
La normalización consiste en descomponer una
relación de una BD en sub-relaciones.
Las anomalías son a menudo debidas a una mala
repartición de la información entre las relaciones.
SE DEBE TENERCUIDADO:
- La normalización tiene un impacto sobre la eficiencia.
- La normalización puede traer perdida de información y de DF.
Ejemplo
PERSONAL
Cedula | Nombre | Apellido | Cargo | Escalafón | Salario |
4325 | Juan | García | Profesor | 6 | 1.589 |
8564 | Mario | López | Profesor | 9 | 2.023 |
3698 | Luis | Pérez | Profesor | 5 | 1.350 |
5874 | Carlos | Gómez | Profesor | 6 | 1.589 |
Una restricción del mundo real es:
DF = {Cargo, Escalafón} -> Salario
Anomalías
*
Anomalía de inserción: Para almacenar el salario de
un profesor de escalafón 3, es necesario que exista en
PERSONAL un maestro de escalafón 3.
*
Anomalía de modificación: la redundancia de la
información en los profesores de escalafón 6 puede
introducir problemas si el salario de esa categoría es
modificado. Es necesario tener en cuenta que se debe
modificar la tupla 1 y 4
*
anomalía de supresión : si el único profesor de
escalafón 5 (o del 9) cambia de escalafón se pierde la
información sobre el salario de los profesores de
escalafón 5 (o del 9)
FORMAS NORMALES
* 6 formas normales clásicas:
1NF, 2NF, 3NF, BCNF, 4NF, 5NF* Mientras una relación esté en una forma normal más alta "mucho mejor"
* Generalmente se acepta normalizar hasta BCNF
* Las formas normales 4 y 5 son casos "extremos"
- Si una relación cumple una forma normal n automáticamente
cumplirá las n-1 formas normales anteriores, es decir, cada
forma normal es "más fuerte" que sus predecesoras.
- El análisis de 1NF, 2NF y 3NF está considerado sólo para
relaciones con una sola clave candidata. Para relaciones
con más de 1 clave candidata directamente se aplica BCNF
PRIMERA FORMA NORMAL
Definición:
Una relación está en 1NF si todos sus atributos tienen valores atómicos(http://screenshotuploader.com/i/01/9nylx2a_q.png)
* Solución: crear una entidad adicional y agregarla al esquema con relación 1:N
(http://screenshotuploader.com/s/01/eww4iqjeb)
En otras palabras para que una tabla esté en 1NF todos sus campos deben hacer alusión a 1 solo dato, y cada registro en cada campo debe tener 1 solo dato, por ejemplo es incorrecto poner un campo Nombre y Apellido, porque el nombre es un dato y el apellido es otro, tendrían que estar en dos campos diferentes.
SEGUNDA FORMA NORMAL
* Una relación está en 2NF si y sólo si está en 1NF y todos los atributos no clave (si los hay) dependen funcionalmente por completo de la clave primaria.
en otras palabras para que una tabla esté en 2NF, la misma tiene que estar en 1NF, y que todos los campos de la tabla dependan del campo clave, lo que quiero decir es que si tienes un campo clave DNI, y varios campos nombre, apellido, edad, etc. estos dependen del numero de identificación de la persona que los identifica a todos ellos, pero si tu dices que el campo clave, es edad, no corresponde el dni, porque no dependencia con la edad. quiero decir que no necesariamente el dni es x, si la edad es i, pero si que la edad es x si el dni es i...
saludos!
TERCERA FORMA NORMAL
Una relación está en 3NF si y sólo si los atributos no clave (si
los hay) son:
* Mutuamente independientes
* Dependen por completo de la Clave Primaria
cédula | hobbie | valor_hobbie |
10 | Música | 100 |
20 | Pintura | 200 |
30 | Música | 100 |
40 | Pintura | 200 |
50 | Bolos | 100 |
si tomamos como clave primaria al campo cedula, tenemos un inconveniente, y es que el campo valor_hobbie depende del campo hobbie, por tanto hay una dependencia entre campos no clave, y esto no está normalizado.
La solución es hacer dos tablas, una con la cedula y el hobbie, y otra tabla que se llame hobbie y tenga el hobbie y el valor.
saludos!
BCNF
* La 3NF de Codd trabaja sobre el supuesto de una única clave
candidata
* En cambio la BCNF trabaja el caso más general en donde
puede haber más de una clave candidata
NOTA : Toda relación en BCNF está en 3NF, pero no toda relación
en 3FN esta en BCNF
Partición SPI y SPD
* La partición que se hace al normalizar una relación puede ser:
* Sin pérdida de información (SPI) o con pérdida de información.
* Sin pérdida de dependencias funcionales (SPD) o con pérdida de
dependencias funcionales.
* En BCNF no siempre es posible normalizar SPD. Entonces ¿qué hacer?
intentar una normalización menor o aceptar la pérdida de la restricción.
(http://screenshotuploader.com/i/01/pk5hn57sm.png)
(http://screenshotuploader.com/i/01/k4odgwz6w.png)
Refencias
Basado en:
* Abraham Silberschatz, et. Al. Fundamentos de Bases de Datos. Cuarta Edición. 2004. Pág. 163-167
* Margarita Hincapie. Notas de clase Bases de Datos. Politécnico Colombiano Jaime Isaza Cadavid.