Capitulo 6 (Normalización y Dependencias Funcionales) PDF
Capitulo 6 (Normalización y Dependencias Funcionales) PDF
Capitulo 6 (Normalización y Dependencias Funcionales) PDF
Agenda
Por qu Normalizamos? Mejorando el Modelo Relacional Pautas Informales para Diseo de Calidad en Esquemas de Tablas o Relaciones Normalizacin 1 FN 2 FN 3 FN FNBC
Por qu Normalizamos?
1.
2.
3. 4.
Transformar datos complejos en estructuras de datos pequeas, simples, estables y de fcil mantenimiento. Disminucin de problemas de lgica sobre los datos (sum, average, count, union, etc). Facilidad de entendimiento al simplificar las estructuras. Optimizacin del uso de espacio de almacenamiento, al eliminar la redundancia innecesaria.
Mejorando el MR
Cul agrupacin de atributos es mejor? Cmo puedo mejorar mi modelo relacional? Hay 2 niveles de mejoramiento del MR:
Lgico o Conceptual Implementacin o Almacenamiento
Tupla 1
Tupla 2
Mejorando el MR
2 enfoques para diseo de BD:
Tabla3 Tabla1 Tabla3
Tabla1
Tabla2 Ascendente Relaciones entre atributos individuales para generar nuevas tablas Descendente Anlisis de agrupaciones de atributos en tablas y lograr descomponer en mas tablas o relaciones
Tabla2
2.
Hay que disear tablas o relaciones sin anomalas de actualizacin Si se ocupa redundancia mejor usar vistas para reunir atributos de entidades o relaciones
4.
Ejemplo de Tabla
AUTOR Date, C. Date, C. Date, C. Codd,E. Gardarin Gardarin Valduriez Kim,W. Lochovsky NACIONALIDAD Norteamericana Norteamericana Norteamericana Norteamericana Francesa Francesa Francesa Norteamericana Canadiense COD_LIBRO 98987 97777 98987 7890 12345 67890 67890 11223 11223 TITULO Database SQL Stan Guide for Relational Basi Dati Comp BD Comp BD BD OO BD OO EDITORIAL Addison Addison, W. Addison, W. Addison,W. Paraninfo Eyrolles Eyrolles ACM ACM AO 1990 1986 1988 1990 1986 1984 1984 1989 1989
1. La tabla almacena datos de libros y autores 2. Existe alta redundancia 3. Anomalas de modificacin 4. Anomalas de insercin 5. Anomalas de borrado
Normalizacin
Basada en CP y CC as como las DF Codd 1972 dice que normalizar es poner en prueba un esquema de relacin o tabla para verificar su estado normal
N O R M A L I Z A C I O N
Tabla1.1
Tabla1
Tabla1.2
1 FN 2 FN 3 FN FNBC 4 FN 5 FN
Dependencias de Reunin
Qu logra la Normalizacin?
Minimizar redundancias (ahorra espacio de almacenamiento) Minimizar anomalas de insercin, eliminacin y actualizacin Penaliza las consultas al disminuir la eficiencia (mayor nmero relaciones o tablas)
Normalizacin 1 FN
Qu es la 1 FN?
Prohbe atributos multivaluados y compuestos o su combinacin Cada dominio de atributo debe solo poseer valores atmicos e indivisibles La 1 FN elimina los grupos repetidos (VALORES repetitivos)
EJEMPLO
Normalizacin 1 FN
PEDIDO
ID_ORDEN FECHA ID_CLIENTE NOMBRE_CLIENTE PROVINCIA NUM_ITEM DESC_ITEM CANT PRECIO
ERNESTO CRUZ ERNESTO CRUZ ERNESTO CRUZ LUIS ANGEL SEGURA CARLOS SOLANO CARLOS SOLANO
PION X10 CADENA SHIMANO PASADOR 9V LLANTAS 2.10 LARSEN CADENA SHIMANO FIBRAS COOL STOP
2 3 1 4 2 6
1. 2. 3.
Cul es para usted la PK ? Hay atributos multivaluados o compuestos ? Se evidencian grupos repetitivos para {NUM_ITEM, DESC_ITEM, CANT, PRECIO}
Normalizacin 1 FN
PEDIDO
ID_ORDEN FECHA ID_CLIENTE NOMBRE_CLIENTE PROVINCIA NUM_ITEM DESC_ITEM CANT PRECIO
ERNESTO CRUZ ERNESTO CRUZ ERNESTO CRUZ LUIS ANGEL SEGURA CARLOS SOLANO CARLOS SOLANO
PION X10 CADENA SHIMANO PASADOR 9V LLANTAS 2.10 LARSEN CADENA SHIMANO FIBRAS COOL STOP
2 3 1 4 2 6
Normalizacin 1 FN
Solucin:
1. Crear una tabla o relacin para eliminar los grupos repetidos ORDEN
ID_ORDEN FECHA ID_CLIENTE NOMBRE_CLIENTE PROVINCIA
2. Crear una tabla o relacin para los campos repetitivos + PK de la tabla origen ITEM_ORDEN
ID_ORDEN NUM_ITEM DESC_ITEM CANT PRECIO
PION X10 CADENA SHIMANO PASADOR 9V LLANTAS 2.10 LARSEN CADENA SHIMANO FIBRAS COOL STOP
2 3 1 4 2 6
Normalizacin 1 FN
Problemas de Actualizacin:
ORDEN
ID_ORDEN FECHA ID_CLIENTE NOMBRE_CLIENTE PROVINCIA
2301
01/10/2012
101
ERNESTO CRUZ
ALAJUELA
1. Insercin de un cliente implica a fuerza ingresar una orden. 2. Eliminar una orden podra eliminar datos del cliente nicos.
2302
2303
05/10/2012
10/10/2012
107
110
HEREDIA
SAN JOSE
ITEM_ORDEN
ID_ORDEN NUM_ITEM DESC_ITEM CANT PRECIO
2301
2301 2301 2302 2303 2303
3786
4011 9132 5794 4011 3141
PION X10
CADENA SHIMANO PASADOR 9V LLANTAS 2.10 LARSEN CADENA SHIMANO FIBRAS COOL STOP
2
3 1 4 2 6
$90
$60 $55 $80 $40 $60
3. Para cada tem se repite su nombre, de necesitarse cambiar el nombre se debe hacer muchas actualizaciones.
Solucin = 2 FN
Normalizacin 2 FN
Qu es la 2 FN?
Una tabla est 2 FN si est en 1 FN. Todas las dependencias parciales deben eliminarse. O sea todo atributo que NO forma parte de ninguna llave (NO primos), DEBE ser determinado por la llave primaria COMPLETA. La Dependencia Funcional esta relacionada con la semntica o significado del dato en la relacin. Una tabla con un nico atributo como llave primaria est en 2 FN. Dicho de otra manera, cuando hay relaciones o tablas con llaves primarias compuestas (mltiples atributos) se debe revisar la 2 FN.
EJEMPLO
Normalizacin 2 FN
ORDEN
ID_ORDEN FECHA ID_CLIENTE NOMBRE_CLIENTE PROVINCIA
1. ORDEN est en 2 FN porque slo tiene un atributo para PK. Aun as, vemos semntica confusa con ID_CLIENTE, solucin, la 3 FN.
ITEM_ORDEN
ID_ORDEN NUM_ITEM DESC_ITEM CANT PRECIO
PION X10 CADENA SHIMANO PASADOR 9V LLANTAS 2.10 LARSEN CADENA SHIMANO FIBRAS COOL STOP
2 3 1 4 2 6
2. Analizando la tabla ITEM_ORDEN, vemos una llave primaria compuesta (ID_ORDEN + NUM_ITEM) y vemos que CANT es dependiente slo de ID_ORDEN, y DESC_ITEM y PRECIO son determinados por NUM_ITEM solamente.
Cul es la Solucin?
Normalizacin 2 FN
ITEM_ORDEN
ID_ORDEN NUM_ITEM DESC_ITEM CANT PRECIO
PION X10 CADENA SHIMANO PASADOR 9V LLANTAS 2.10 LARSEN CADENA SHIMANO FIBRAS COOL STOP
2 3 1 4 2 6
1. Determinar cuales columnas que no son llave o son NO PRIMOS no dependen de la llave primaria completa. 2. Eliminar esas columnas de la tabla base y crear una segunda tabla o relacin con esas columnas y la(s) columna(s) de la PK de la cual dependen.
ITEM_ORDEN
ID_ORDEN NUM_ITEM CANT
ITEM
NUM_ITEM DESC_ITEM PRECIO
2 3 1 4 2 6
PION X10 CADENA SHIMANO PASADOR 9V LLANTAS 2.10 LARSEN FIBRAS COOL STOP
Normalizacin 3 FN
Qu es la 3 FN?
Una tabla esta 3 FN si esta en 2 FN. Todos los atributos NO PRIMOS son determinados completamente por la llave primaria, y no por ningn otro atributo NO PRIMO (regla de transitividad).
EJEMPLO
Normalizacin 3 FN
ORDEN
ID_ORDEN FECHA ID_CLIENTE NOMBRE_CLIENTE PROVINCIA
1.
Vemos que en la tabla o relacin ORDEN aunque todos los valores de columnas son determinados por la nica PK. El campo NOMBRE_CLIENTE y PROVINCIA son adems determinados a travs del camp ID_CLIENTE (dependencia transitiva) ya que ID_CLIENTE es NO PRIMO y determinante a la vez.
Cul es la Solucin?
Normalizacin 3 FN
ORDEN
ID_ORDEN FECHA ID_CLIENTE NOMBRE_CLIENTE PROVINCIA
ORDEN
ID_ORDEN FECHA ID_CLIENTE
Tomaremos las columnas NO PRIMAS o no llaves y las moveremos a otra tabla o relacin, as tambin llevaremos la columna llave (determinante transitivo) de la cual son dependientes.
CLIENTE
ID_CLIENTE NOMBRE_CLIENTE PROVINCIA
Normalizacin FNBC
Qu es la FNBC?
Es una extensin de la 3 FN. Vista como la 3 FN ms estricta. Toda tabla en FNBC est en 3 FN pero toda tabla en 3 FN no necesariamente est en FNBC. Una tabla o relacin esta en FNBC si presenta las siguientes caractersticas:
La relacin o tabla tiene varias llaves candidatas. 2. Estas llaves candidatas son compuestas (con 2 o ms atributos que las componen). 3. Esas claves candidatas se solapan (o sea, tienen al menos un atributo en comn).
1.
Si una tabla no tiene las tres condiciones anteriores, su estado es el de 3 FN y no es necesaria la evaluacin de FNBC.
EJEMPLO
Normalizacin FNBC
MATRICULA
NOMBRE_ALUMNO NUM_EXPEDIENTE COD_ASIGNATURA CALIFICACION
90 85 70 95
90 85 70 95
El atributo clave que se solapa es COD_ASIGNATURA. Se debe sacar este atributo solapado a otra tabla junto con los atributos NO PRIMOS determinados.
Calificacin Calificacin
Normalizacin FNBC
MATRICULA
NOMBRE_ALUMNO NUM_EXPEDIENTE COD_ASIGNATURA CALIFICACION
90 85 70 95
ALUMNO
NOMBRE_ALUMNO NUM_EXPEDIENTE
NOTA
COD_ASIGNATURA CALIFICACION
90 85 70 95