-
Normalización de relaciones en bases de datos
-
1ª Forma Normal
Descripción
- Una relación es primera forma normal si y solo si sus tuplas (filas) contienen valores atómicos, es decir, no contienen valores que a su vez sean conjuntos.
- En resumen, que todos los atributos (columnas) deben tener todos sus valores, o lo que es lo mismo, no debe haber celdas en blanco.
Ejemplo de relación que no cumple la primera forma normal
S# P# QTY s1 p1 300
p2 200
p3 400 s2 p1 200
p2 100
Ejemplo de relación que si cumple la primera forma normal
S# P# QTY s1 p1 300 s1 p2 200 s1 p3 400 s2 p1 200 s2 p2 100 -
2ª Forma Normal
Descripción
- Una relación es segunda forma normal si y solo si:
- Es primera forma normal.
- Cualquier atributo (columna) no perteneciente a una clave (primaria o extranjera) tiene dependencia funcional total de la clave primaria, es decir, que a cada valor de dicho atributo solo le corresponde un valor de la clave primaria.
Ejemplo de relación que no cumple la segunda forma normal
S# P# QTY s1 p1 300 s1 p2 200 s1 p3 400 s2 p1 200 s2 p2 100
Como puede verse, p1 tiene dos valores distintos (300 y 200), por lo cual no cumple la dependencia funcional total. Lo mismo ocurriría con p2.
Ejemplo de relación que si cumple la segunda forma normal
S# P# QTY s1 p1 300 s1 p2 200 s1 p3 400 s2 p1 300 s2 p2 200 -
3ª Forma Normal
Descripción
- Una relación es tercera forma normal si y solo si:
- Es segunda forma normal.
- Los atributos (columna) no pertenecientes a una clave (primaria o extranjera) son mutuamente independientes funcionalmente.
Ejemplo de relación que no cumple la tercera forma normal
S# Status City s1 20 London s1 10 Paris s3 10 Paris s4 20 London s5 30 Atenas
Ejemplo de relación que si cumple la tercera forma normal
S# Status City s1 20 London s1 10 Paris s3 10 Granada s4 20 Madrid s5 30 Atenas -
4ª Forma Normal
Descripción
- Una relación es cuarta forma normal si y solo si:
- Es forma normal de BCNF.
- Para toda la dependencia multivalor todos los atributos (columna) distintos de A dependen funcionalmente de A, es decir, A es clave.
- Es decir, si la relación es BCNF y las únicas dependencias multivalor permitidas son las definidas sobre las claves candidatas, entonces se cumple.
-
5ª Forma Normal
Descripción
- Una relación es quinta forma normal si y solo si:
- Cada dependencia de JOIN que exista en dicha relación está implicada exclusivamente por claves candidatas.
-
Forma BCNF
Normalización de relaciones con más de una clave candidata (BCNF)
- Aun siendo formas 3 Normal pueden aparecer problemas en una relación si esta presenta más de una clave.
- Para resolver estos problemas recurrimos a la forma normal de Boyce y Codd (BCNF).
- Llamaremos determinante al atributo o conjunto de estos del cual depende funcionalmente algún otro atributo de la relación.
- Se dice que una relación está en forma normalizada de Boyce y Codd si y solo si cada determinante es una clave candidata.
- Toda forma BCNF es también 3ª forma normal, pero no a la inversa.
Ejemplo de relación que no es BCNF
s# sname p# qty s1 smith p1 300 s1 smith p2 200 s1 smith p3 400 s1 smith p4 200 s1 smith p5 100 s1 smith p6 100 s2 jones p1 300 s2 jones p2 400 s3 clark p2 200 s4 brown p2 200 s4 brown p4 300 s4 brown p5 400
- Esta relación no es BCNF porque tiene como determinantes: s#; sname; s#,p# y sname#p#.
- Y como claves tiene: s#,p# y sname,p#.
- Como ambos conjuntos no coinciden no se cumple la normalidad BCNF.
- Sin embargo, en el siguiente ejemplo, esa misma tabla dividida en las dos siguientes unidas mediante un JOIN si serían normales BCNF.
Ejemplo de relación que es BCNF
s# p# qty s1 p1 300 s1 p2 200 s1 p3 400 s1 p4 200 s1 p5 100 s1 p6 100 s2 p1 300 s2 p2 400 s3 p2 200 s4 p2 200 s4 p4 300 s4 p5 400 JOINs# sname s1 smith s2 jones s3 clark s4 brown
- De esta forma la primera tabla tendría como determinante s#,p# y como clave s#,p#.
- La segunda tabla tendría como determinantes s# y sname.
- Como clave tendría s#,p#, por lo cual esta tabla cumple la normalidad BCNF, al igual que ocurre con la primera.
-
-
Dependencias
-
Dependencias funcionales
Descripción
- En una relación un atributo X es funcionalmente dependiente de otro Y si y solo si para cada valor de Y hay un único valor de X.
- Por ejemplo: La persona es funcionalmente dependiente del DNI.
DNI Persona 1000001 Pepe López 1000002 Juan Martín 1000003 Marisa Puertas - Esta dependencia funcional no tiene porque darse solo entre atributos (columnas) aislados, sino que también puede darse entre grupos de atributos.
-
Dependencias funcionales totales
Descripción
- Se dice que un atributo/grupo de atributos Y tienen dependencia funcional total del grupo de atributos X si y solo si depende funcionalmente de X pero no depende funcionalmente de ningún subconjunto de atributos de X distinto del total.
- Por ejemplo: Status y city dependen funcionalmente de s#,p# pero como también dependen funcionalmente de s# no tienen dependencia funcional total de s#,p#.
S# Status City P# QTY s1 20 London p1 300 s1 20 London p2 200 s1 20 London p3 400 s1 20 London p4 200 s1 20 London p5 100 s1 20 London p6 100 s2 10 Paris p1 300 s2 10 Paris p2 400 s3 10 Paris p2 200 s4 20 London p2 200 s4 20 London p4 300 s4 20 London p5 400 -
Dependencias multivalor
Descripción
- También pueden aparecer dependencias multivalor, caso aplicable exclusivamente a relaciones con al menos tres atributos.
- Se dice que en una relación con atributos A, B y C (estos atributos también pueden ser compuestos) existe dependencia multivalor entre los atributos A y B cuando tomada cualquier pareja de valores A,C de la relación el conjunto de valores de B que acompañan a esa pareja en cualquier tupla (columna) de la relación solo depende funcionalmente del valor de A y no depende funcionalmente del valor de C.
- Esta dependencia se representa: A -> B|C
- Ejemplo de dependencia multivalor:
Asignatura Profesor Lección Física López Mecánica Física López Óptica Física Martín Mecánica Física Martín Óptica Física Moral Mecánica Física Moral Óptica Matemáticas Antón Álgebra Matemáticas Antón Geometría - Asignatura --> profesor|lección
Asignatura -/-> profesor|lección
-
Dependencias de JOIN
Descripción
- En ocasiones, no nos basta con realizar la descomposición de una relación y unirla mediante un JOIN para recomponerla, sino que es necesario descomponerla en tres o mas relaciones.
- Existe entonces la llamada independencia de JOIN, en la cual sean X, Y, ... Z un subconjunto del conjunto de atributos de una relación R.
- Se dice que la relación satisface la dependencia de JOIN si y solo si la relación R queda recompuesta a su estado original efectuando el JOIN de las relaciones obtenidas proyectando R en X, Y... Z respectivamente.
- Por ejemplo: descomponemos la relación SPJ en tres realciones:
SPJs# p# j# s1 p1 j2 s1 p2 j1 s2 p1 j1 s1 p1 j1
SP PJ JS s# p# s1 p1 s1 p2 s2 p1 p# j# p1 j2 p2 j1 p1 j1 j# s# j2 s1 j1 s1 j1 s2 - Si hacemos un JOIN sobre p# entre la tabla SP y la PJ obtenemos la siguiente tabla:
s# p# j# s1 p1 j2 s1 p1 j1 s1 p2 j1 s2 p1 j2 s2 p1 j1 - Si con esta tabla realizamos un JOIN con JS sobre j#,s# volveremos a la tabla original:
SPJs# p# j# s1 p1 j2 s1 p2 j1 s2 p1 j1
-
lunes, 5 de diciembre de 2011
Normalizacion III "APLICACIONES"
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario