La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Paul Leger http://pleger.cl Formas Normales: Lineamientos formales para un buen diseño y la necesidad de por qué son necesarias las dependencia funcionales.

Presentaciones similares


Presentación del tema: "Paul Leger http://pleger.cl Formas Normales: Lineamientos formales para un buen diseño y la necesidad de por qué son necesarias las dependencia funcionales."— Transcripción de la presentación:

1 Paul Leger http://pleger.cl
Formas Normales: Lineamientos formales para un buen diseño y la necesidad de por qué son necesarias las dependencia funcionales Paul Leger

2 Formas Normales Codd creo las Formas Normales (FNs) para certificar formalmente el buen diseño de modelos relacionales En un inicio, Codd definió tres formas normales (1 FN, 2 FN y 3 FN). Luego con Boyce, definieron 3FN de Boyce-Codd o simplemente Boyce-Codd FN Hay varias otras formas normales, por ejemplo 4 y 5 FNs. Estás dos últimas no serán estudiadas en este curso

3 Formas Normales Definición: una forma normal establece un conjunto de restricciones que deben ser satisfechas por un modelo de base datos El objetivo de las formas normales intentan definir de una manera formal los lineamientos del buen diseño de una base de datos Si una tabla no cumple con las restricciones, esta tabla se debe descomponer para cumplir con la forma normal que se desea alcanzar

4 Aquí hay dos datos donde debería solamente uno
Formas Normales 1, 2 y 3 Como mencionamos antes, existen varias FNs (ej. 1 FN, 2 FN, etc), donde cada uno involucra un conjunto de restricciones que se deben cumplir Generalmente estas restricciones están expresadas en términos de dependencias funcionales Ejemplo de restricción: Para un atributo de una tupla, este atributo no puede contener más de un dato Nombre Apellido Eduardo/Carlos Pérez Aquí hay dos datos donde debería solamente uno

5 Relación entre Formas Normales
Hasta Boyce-Codd FN, si uno tiene un diseño en una base de datos en un “n FN”, entonces su esquema también satisfacen las anteriores FNs (es decir, n-1 FN) Boyce-Codd 3 FN NOTA: En este curso, nos concentramos en las primeras tres 2 FN 1 FN

6 Formas Normales Para cumplir con las restricciones de FNs, es necesario descomponer tablas en otras tablas/relaciones Sin embargo, la descomposiciones implican nuevos “joins” con las nuevas tablas descompuestas. Hay considerar que cada join consume una cantidad de tiempo considerable Dependiendo del problema, no siempre es necesario llegar a la mejor forma normal, pues la descomposición de tablas afecta al rendimiento ¿Por qué?

7 Beneficios de FNs Aunque cada FN busca un beneficio en particular, sin embargo, en general las FNs buscan: Conservar las DFs de la descripción ¿Por qué es importante? Evitar tuplas espurias (el por qué es obvio, ¿Cierto?)

8 Algunos Conceptos Amigo Arrienda Identifique en AMIGO: Superclaves,
Superclave es un conjunto de atributos que definen una relación ¿Un Ejemplo? {Rut_A, IDCasa, Deuda} Clave es una superclave, donde ningún atributo puede ser eliminado para seguir siendo superclave {Rut_A, IDCasa} Claves candidatas es el conjunto de claves {Rut_A, IDCasa} y {Codigo_unico_RUTA-IDCASA} Clave primaria (Primary Key) es un clave elegida arbitrariamente {Rut_A, IDCASA} Atributo primo es un atributo miembro de una clave candidata {Rut_A} Arrienda Rut_A IDCasa Deuda Impuestos Codigo_unico_RUTA-IDCASA Identifique en AMIGO: Superclaves, Claves candidata Primary Key Atributos primos en Amigo User Name LastName

9 Primera Formal Normal (1 FN)
Todo atributo debe ser atómico e indivisible. Es decir, no debe haber atributos multi-valuados y compuestos Supuesto: Un Dpto se puede ubicar en varias bodegas Dpto NombreID Jefe BodegaID Posible soluciones: 1- Descomponer en dos tablas (Dpto y bodega) 2- Ampliar la primary key con BodegaID 3- Si son siempre tres bodegas, definir tres atributos a Dpto: NombreID, Jefe, BodegaID1,BodegaID2, BodegaID3

10 Primera Formal Normal (1 FN)
Dpto NombreID Jefe BodegaID Bodega BodegaID 1 Se ubica n Solución Ideal: Debemos repetir el proceso para otras violaciones de 1 FN, y volver a descomponer hasta que todo el esquema cumpla 1 FN

11 Segunda Formal Normal (2 FN)
Dependencia Funcional Total es una DF (X->Y) si al restar un atributo A a X, X deja de definir a Y, es decir, (X – A) ≠> Y Explicación 1: 2 FN exige que cualquier clave candidata (entre ellas la primary key) debe ser una dependencia funcional total con respecto a todos los atributos de la relación Explicación 2: Todo atributo no primo depende completamente de una clave candidata Obviamente toda relación, donde todas claves primarias tienen un solo atributo, está en 2 FN ¿Por qué? Trabaja_en Rut DptoID horas Amigo User Name LastName ¿Está en 2FN? ¿Está en 2FN?

12 ¿Por qué no está en segunda forma normal?
2 FN. Ejemplo 1 NombreID, BodegaID -> {Jefe, FechaCreación, Calle, Numero, Ciudad} BodegaID -> {Calle} BodegaID -> {Numero} BodegaID -> {Ciudad} Dpto NombreID Jefe FechaCreación BodegaID Calle Numero Ciudad ¿Por qué no está en segunda forma normal?

13 2 FN. Ejemplo 1 (continuación)
Dpto NombreID Jefe FechaCreación BodegaID BODEGA1 BodegaID Calle BODEGA2 BodegaID Numero BODEGA3 BodegaID Ciudad ¿Hay una solución mejor, cierto? Dpto NombreID Jefe FechaCreación BodegaID Bodega BodegaID Calle Numero Ciudad

14 2 FN. Ejemplo 2 Considere una modificación del nuestro clásico ejemplo del sistema de arriendo, específicamente en la tabla arrienda: En esta tabla, tenemos las siguientes dependencias funcionales (DFs): {Rut_A, IdCasa} -> {Deuda} {IdCasa} -> {Numero, Calle, Ciudad} ¿Rut_A y IdCasa pueden ser la primary key de Arrienda? ¿Por qué? ¿Hay una violación de alguna forma norma (1 FN ó 2 FN)? Si es así ¿Cuál es la solución?

15 No olvide: Si está 2 FN, significa que está 1 FN

16 Tercera Forma Normal (3 FN)
La 3 FN está relacionado con las dependencias funcionales transitivas, es decir, Si X -> Y ^ Y-> Z => X -> Z Un esquema está 3 FN, si está en 2 FN y no tiene dependencia transitiva en alguna tabla

17 3 FN. Ejemplo 1 Supuesto: Suponga ahora que un Dpto solo se puede ubicar en una bodega Dpto NombreID Jefe FechaCreación BodegaID Calle Numero Ciudad NombreID-> {Jefe, FechaCreación, BodegaID} BodegaID -> {Calle, Numero, Ciudad} Aquí hay una DF transitiva a través de BodegaID, por lo tanto, no está o viola la 3 FN, sin embargo, si está en 2 FN ¿Por qué?

18 3 FN. Ejemplo 1 (continuación)
Solución: BODEGA BodegaID Calle Numero Ciudad Dpto NombreID Jefe FechaCreación BodegaID Observación: Una violación a la tercera forma normal puede indicar que 2 conceptos están mezclados

19 3 FN. Ejemplo 2 ¿Qué forma normal viola esta tabla? ¿Por qué?
Supuesto. Un humano cuida solamente a un perro y cada perro tiene un único rut. Rut -> {Nombre_h, Apellido_h, Rut-perro} Rut-perro -> {Nombre-perro} ¿Qué forma normal viola esta tabla? ¿Por qué? Solución:

20 Si está 3 FN, significa que está 2 FN

21 Resumen (1/2) Comúnmente, la violación de una forma normal se refleja a través de una especifica dependencia funcional. Por ejemplo, Sea R = {a,b,c,d,e} y sus DFs = { a -> {b,c,e} c -> {d} } En R, la DF c -> {d} viola la 3 FN, por lo tanto, la descomposición para solucionar está violación es crear una relación nueva con esta dependencia funcional, es decir, R1 = {a,b,c,e} y R2 = {c,d} Al realizar el join entre R1 y R2, volvemos a generar nuestra tabla inicial: R

22 Solución (normalización)
Resumen (2/2) Forma Normal Condición Solución (normalización) 1 FN Una relación no debería tener ningún atributo no atómico Formar relaciones nuevas para cada conjunto de atributos no atómicos 2 FN Para las relaciones en las que las claves candidatas contienen más de un atributos, ningún atributo no primo debería depender funcionalmente de una parte de una clave candidata Descomponer y crear una nueva relación por cada atributo dependiente que viola 2 FN. Asegurarse que puede reunir (join) con la tabla original 3 FN Una relación no debería tener un atributo no primo determinado funcionalmente por otro atributo no primo. En otras palabras, no debería existir DF transitiva por parte de un atributo no primo Crear una nueva relación con el conjunto de atributos no primos que determina las otras dependencias

23 Ejercicio (1/2) Identifique las claves candidatas ¿Está en 2 FN?
Si la respuesta anterior es no, ¿Cuál DF viola 2 FN? ¿df1, df2, df3 o df4?

24 Ejercicio (2/2) ¿Está en 3 FN? ¿No? ¿cuál DF viola está FN?

25 Ejercicio: Solución Final
La tabla LOTES recibió tres modificaciones para cumplir hasta la tercera forma normal

26 ¿Tiene una solución que no pierda ninguna dependencia funcional?
Forma FN BC Esta FN tiene la restricción que un atributo no primo defina un atributo primo. En la siguiente imagen hay una violación al forma normal de Boyce-Codd (FN BC) ¿Tiene una solución que no pierda ninguna dependencia funcional? NO SIEMPRE ES POSIBLE TENER FNBC. EN ESTE CASO, ES MEJOR QUEDARSE CON 3FN Pregunta para meditar: ¿Qué pasaría si la relación solamente fuera R(B,C) con las mismas dependencias? ¿Qué pasaría con C?

27 Formas Normales Lectura Capitulo 12.2 – 12.5


Descargar ppt "Paul Leger http://pleger.cl Formas Normales: Lineamientos formales para un buen diseño y la necesidad de por qué son necesarias las dependencia funcionales."

Presentaciones similares


Anuncios Google