Académique Documents
Professionnel Documents
Culture Documents
Qu puede salir mal cuando se hace un mal diseo de una base de datos relacional?
Esquema_prestamo= (nombre_sucursal, ciudad_sucursal, activo, nombre_cliente, numero_prestamo, importe) (Plaza Roja, Santiago, 50000, Santos, P-27, 4500)
Introducci Introduccin
Muchos Problemas
Repeticin de la Informacin por ejemplo, repetir ciudad_sucursal y activo para cada prstamo de cada sucursal Desaprovecha espacio, complica actualizacin Imposibilidad de Representar Informacin por ejemplo, no se puede representar el activo de una sucursal sino tiene concedido al menos un prstamo Valores nulos, complica actualizacin (Plaza Roja, Santiago, 50000, Santos, P-27, 4500) nombre_sucursal
Introducci Introduccin
ndice
Normalizacin Primera Forma Normal Dependencias Funcionales Segunda Forma Normal Tercera Forma Normal Forma Normal de Boyce-Codd Descomponer Relaciones Otras Formas Normales Diseo de Bases de Datos Relacionales
3 Introducci Introduccin 4
activo numero_prestamo
Definici Definicin
Normalizacin
Normalizaci Normalizacin de Bases de Datos Relacionales Bases de Datos Ingenier Ingeniera T Tcnica en Inform Informtica de Sistemas
La normalizacin es una tcnica, desarrollada inicialmente por E.F. Codd en 1972, para disear la estructura lgica de una base de datos en el modelo relacional
La normalizacin es un proceso en el cual se va comprobando el cumplimiento de una serie de reglas, o restricciones, por parte de un esquema de relacin; cada regla que se cumple aumenta el grado de normalizacin del esquema de relacin; si una regla no se cumple, el esquema de relacin se debe descomponer en varios esquemas de relacin que s la cumplan por separado
Normalizaci Normalizacin 6
Formas Normales
Un esquema de relacin est en una determinada forma normal si satisface un cierto conjunto de restricciones Universo de Relaciones 1FN 2FN 3FN FNBC 4FN 5FN Boyce y Cood, 1974 Fagin, 1977 Fagin, 1979
7
Cumplimiento Obligatorio
El modelo relacional slo requiere un conjunto de esquemas de relacin en primera forma normal Las restantes formas normales son opcionales
Cood, 1972 Para evitar anomalas de actualizacin, es recomendable llegar al menos hasta la tercera forma normal o, mejor an, hasta la forma normal de Boyce-Codd
Un esquema de relacin est en primera forma normal (1FN) si, y slo si, los dominios de todos los atributos de la relacin son atmicos
10
Dominios At Atmicos
Un dominio es atmico si se considera que los elementos del dominio son unidades indivisibles
En muchos dominios en los que las entidades tienen una estructura compleja, la imposicin de la representacin en primera forma normal representa una carga innecesaria para el programador de las aplicaciones, que tiene que escribir cdigo para convertir los datos a su forma atmica Los sistemas modernos de bases de datos soportan muchos tipos de valores no atmicos
Primera Forma Normal 11
Ejemplo Pedidos
Esquema_ordenes = (id_orden, fecha, id_cliente, nombre_cliente, provincia, numero_item, descripcion_item, cantidad, precio) 1FN Esquema_ordenes = (id_orden, fecha, id_cliente, nombre_cliente, provincia) Esquema_pedidos = (id_orden, numero_item, descripcion_item, cantidad, precio)
Dependencias Funcionales
Normalizaci Normalizacin de Bases de Datos Relacionales Bases de Datos Ingenier Ingeniera T Tcnica en Inform Informtica de Sistemas
13
Definici Definicin
Las dependencias funcionales son restricciones que se aplican sobre el conjunto de relaciones legales de un modelo relacional (una relacin es legal si satisface las restricciones impuestas)
Sem Semntica
La dependencia funcional es una nocin semntica
Desempean un papel fundamental en la diferenciacin entre buenos y malos diseos de bases de datos
Dependencias Funcionales 15 Dependencias Funcionales 16
Superclave
Sea R el esquema de una relacin; El subconjunto K de R es una superclave de R si ... en cualquier relacin legal r(R), para todos los pares de tuplas t1 y t2 de r tales que t1t2, t1[K]t2[K] Ningn par de tuplas puede tener los mismos valores para los atributos de la superclave
Una superclave es un conjunto de uno o ms atributos que, tomados colectivamente, permiten identificar de forma nica una entidad en un conjunto de entidades
Dependencias Funcionales 18
Dependencia Funcional
Considrese el esquema de una relacin R y sean R y R La dependencia funcional se cumple, para el esquema R, si en cualquier relacin legal r(R) para todos los pares de tuplas t1 y t2 de r tales que t1[]=t2[] se cumple que t1[]=t2[] depende funcionalmente de determina funcionalmente a K es una superclave de R si K R
Ejemplo
Esquema_prestamo= (nombre_sucursal, ciudad_sucursal, activo, nombre_cliente, numero_prestamo, importe) nombre_sucursal ciudad_sucursal nombre_sucursal activo numero_prestamo importe numero_prestamo nombre_sucursal nombre_cliente numero_prestamo nombre_sucursal nombre_cliente
Dependencias Funcionales 20
Ejemplo
AC CA AB D AA BB CC DD
Dependencias Funcionales
A a1 a1 a2 a2 a3 Dependencias triviales
B b1 b2 b2 b3 b3
C c1 c1 c2 c2 c2
D d1 d2 d2 d3 d4
es trivial si
22
Ejemplo
R = (A, B, C, G, H, I)
Dependencias Funcionales
23
Dependencias Funcionales
24
Cierre
Sea F un conjunto de dependencias funcionales; El cierre de F, denotado por F+, es el conjunto de todas las dependencias funcionales implicadas lgicamente por F
Axiomas de Armstrong
Las reglas de inferencia definidas por Armstrong proporcionan una tcnica sencilla para calcular el cierre, F+, de un conjunto de dependencias funcionales F (mediante su aplicacin repetida)
Dado F se puede calcular directamente F+ a partir de la definicin de dependencia funcional Si F es de gran tamao, este proceso podra ser prolongado y difcil
Dependencias Funcionales
Axiomas de Armstrong
Los axiomas de Armstrong son correctos porque no generan dependencias funcionales incorrectas Los axiomas de Armstrong son completos porque permiten generar todo el cierre de un conjunto de dependencias funcionales
Reglas Adicionales
Para simplificar el uso de los axiomas de Armstrong se les aaden una serie de reglas adicionales (demostrables mediante los propios axiomas de Armstrong) Regla de la Unin: Si y Regla de la Descomposicin: Si y Regla de la Pseudotransitividad: Si y para , , y conjuntos de atributos
Los axiomas de Armstrong son difciles de utilizar directamente para el clculo del cierre de un conjunto de dependencias funcionales
Dependencias Funcionales
27
Dependencias Funcionales
28
Ejemplo
R = (A, B, C, G, H, I) F = {A B, A C, CG H, CG I, B H} Algunos miembros de F+ A H: A B, B H y la regla de la transitividad CG HI: CG H, CG I y la regla de la unin AG I: A C, CG I y la regla de la pseudotransitividad
Algoritmo de C Clculo de F+
F+ = F Repetir Para cada f F+ Aplicar Reflexividad y Aumentatividad a f Aadir resultado a F+ Para cada f1, f2 F+ Si f1 y f2 se puede combinar por Transitividad Aadir resultado a F+ Hasta que F+ no cambie
Dependencias Funcionales
29
Dependencias Funcionales
30
Superclave
Para comprobar si un conjunto de atributos es una superclave hay que disear un algoritmo para el clculo del conjunto de atributos determinados funcionalmente por dicho conjunto de atributos
Cierre de Atributos
Sea un conjunto de atributos; El conjunto de atributos determinados funcionalmente por bajo un conjunto de dependencias funcionales F se denomina cierre de bajo F y se denota + F +
Hacerlo calculando el cierre y tomando todas las dependencias funcionales con el conjunto de atributos como trmino de la izquierda puede ser costoso si el cierre es de gran tamao
El conjunto de atributos determinados funcionalmente por un atributo no slo resulta til para comprobar si un atributo es una superclave
31 Dependencias Funcionales 32
Dependencias Funcionales
Algoritmo de C Clculo de +
Res = Repetir Para cada dependencia funcional F Si Res Entonces Res = Res U Hasta que Res no cambie
Ejemplo
R = (A, B, C, G, H, I) F = {A B, A C, CG H, CG I, B H}
(AG)+
Dependencias Funcionales
33
Dependencias Funcionales
34
Actualizaciones
Supngase que se tiene un conjunto de dependencias funcionales F de un esquema de relacin R Siempre que un usuario lleve a cabo una actualizacin de una relacin legal r, definida mediante ese esquema de relacin R, el sistema de bases de datos debe asegurarse de que la actualizacin no viole ninguna dependencia funcional (el sistema debe retroceder la actualizacin si viola alguna dependencia funcional del conjunto F) Se puede reducir el esfuerzo empleado en la verificacin de las violaciones comprobando un conjunto simplificado de dependencias funcionales que tenga el mismo cierre que F
35 Dependencias Funcionales 36
Dependencias Funcionales
Atributos Raros
Un atributo, de una dependencia funcional, es raro si se puede eliminar sin modificar el cierre del conjunto de dependencias funcionales Considrese un conjunto F de dependencias funcionales y la dependencia funcional de F El atributo A es raro en si A y F implica lgicamente a (F - { }) U {(-A) } El atributo A es raro en si A y (F - { }) U { (-A)} implica lgicamente a F AB C AC
Ejemplo
B es raro en AB C porque F = {AB C, A C} implica lgicamente a (F - { }) U {(-B) }={A C} U {A C}
AB CD AC
Dependencias Funcionales
37
Dependencias Funcionales
38
Ejemplo
R = (A, B, C) F = {A BC, B C, A B, AB C} Fc = {A BC, B C, A B, AB C} A BC y A B entonces Fc = {A BC, B C, AB C} A es raro en AB C entonces Fc = {A BC, B C} C es raro en A BC entonces Fc = {A B, B C}
Dependencias Funcionales
42
Un esquema de relacin est en segunda forma normal (2FN) si, y slo si, est en primera forma normal (1FN) y, adems cada atributo del esquema de relacin que no est en la clave primaria depende funcionalmente de la clave primaria completa y no slo de una parte de esta
Universo de Relaciones 1FN 2FN 3FN FNBC 4FN 5FN
44
Una dependencia funcional se denomina dependencia parcial si hay un subconjunto de tal que
Segunda Forma Normal 45 Segunda Forma Normal 46
Ejemplo Pedidos
Esquema_ordenes = (id_orden, fecha, id_cliente, nombre_cliente, provincia) Esquema_pedidos = (id_orden, numero_item, descripcion_item, cantidad, precio) 2FN Esquema_ordenes = (id_orden, fecha, id_cliente, nombre_cliente, provincia) Esquema_pedidos = (id_orden, numero_item, cantidad) Esquema_articulos = (numero_item, descripcion_item, precio)
Segunda Forma Normal 48
Un esquema de relacin est en tercera forma normal (3FN) si, y slo si, est en segunda forma normal (2FN) y, adems cada atributo del esquema de relacin que no est en la clave primaria slo depende funcionalmente de la clave primaria, y no de ningn otro atributo
Universo de Relaciones 1FN 2FN 3FN FNBC 4FN 5FN
50
Ejemplo Pedidos
Esquema_ordenes = (id_orden, fecha, id_cliente, nombre_cliente, provincia) Esquema_pedidos = (id_orden, numero_item, cantidad) Esquema_articulos = (numero_item, descripcion_item, precio) 3FN Esquema_ordenes = (id_orden, fecha, id_cliente) Esquema_clientes = (id_cliente, nombre_cliente, provincia) Esquema_pedidos = (id_orden, numero_item, cantidad) Esquema_articulos = (numero_item, descripcion_item, precio)
51 Tercera Forma Normal 52
Un esquema de relacin est en forma normal de Boyce-Codd (FNBC) si, y slo si, est en tercera forma normal (3FN) y, adems cada atributo del esquema de relacin que determine otros atributos est en una superclave
Universo de Relaciones 1FN 2FN 3FN FNBC 4FN 5FN
54
Referencia
La forma normal de Boyce-Codd, versin algo ms restrictiva de la tercera forma normal, es una de las formas normales ms deseables para un buen diseo de bases de datos
55
56
Ejemplo
Esquema_cliente = (nombre_cliente, calle_cliente, ciudad_cliente) nombre_cliente calle_cliente ciudad_cliente Esquema_sucursal = (nombre_sucursal, ciudad_sucursal, activo) nombre_sucursal ciudad_sucursal activo Esquema_info_prestamo = (nombre_sucursal, nombre_cliente, numero_prestamo, importe) numero_prestamo nombre_sucursal importe No es una superclave
SI
Para comprobar si un esquema de relacin R est en FNBC basta con comprobar nicamente las dependencias del conjunto de dependencias funcionales F (no es necesario verificar F+)
Forma Normal de BoyceBoyce-Codd 57
58
Descomponer Esquemas
Descomponer Relaciones
Normalizaci Normalizacin de Bases de Datos Relacionales Bases de Datos Ingenier Ingeniera T Tcnica en Inform Informtica de Sistemas
Cuando un esquema de relacin no cumple una determinada forma normal se debe descomponer en varios esquemas de relacin que s cumplan la forma normal Una descomposicin poco cuidadosa puede llevar a un mal diseo Propiedades deseables de la descomposicin: Reunin sin prdidas Conservacin de las dependencias
Descomponer Relaciones 60
Descomposici Descomposicin
Un conjunto de esquemas de relacin {R1, R2, , Rn} es una descomposicin de un esquema de relacin R si R = R1 U R2 U U Rn
{r1, r2, , rn} es la base de datos que resulta de descomponer R en {R1, R2, , Rn} {R1, R2, , Rn} es una descomposicin de R si para i = 1, 2, , n; cada Ri es un subconjunto de R cada atributo de R aparece en al menos un Ri Se cumple que: r r1 r2 rn
Descomponer Relaciones
61
Descomponer Relaciones
62
Ejemplo
Esquema_prestamo= (nombre_sucursal, ciudad_sucursal, activo, nombre_cliente, numero_prestamo, importe)
Esquema_sucursal= (nombre_sucursal, ciudad_sucursal, activo) Esquema_info_prestamo= (nombre_sucursal, nombre_cliente, numero_prestamo, importe) Descomponer Relaciones 63
Descomponer Relaciones
64
Ejemplo
Esquema_prestamo= (nombre_sucursal, ciudad_sucursal, activo, nombre_cliente, numero_prestamo, importe)
Esquema_sucursal= Sin (nombre_sucursal, ciudad_sucursal, activo) Esquema_info_prestamo=, (nombre_sucursal, nombre_cliente, numero_prestamo, importe) Descomponer Relaciones 65
Con Prdidas
Los atributos de la interseccin de la descomposicin forman una superclave de alguna de las relaciones resultantes de la descomposicin
Descomponer Relaciones 66
Restricci Restriccin
Sea F un conjunto de dependencias funcionales del esquema R y sea {R1, R2, , Rn} una descomposicin de R
Para comprobar de manera eficiente las actualizaciones, se deben disear esquemas de bases de datos relacionales que permitan la validacin de las actualizaciones sin que haga falta calcular las reuniones
El conjunto de restricciones F1, F2, , Fn es el conjunto de dependencias que pueden calcularse de forme eficiente (sin calcular reuniones)
67 Descomponer Relaciones 68
Descomponer Relaciones
Ejemplo DSP y CD
Esquema_prestamo= (nombre_sucursal, ciudad_sucursal, activo, nombre_cliente, numero_prestamo, importe) nombre_sucursal ciudad_sucursal activo numero_prestamo nombre_sucursal importe Esquema_sucursal= (nombre_sucursal, ciudad_sucursal, activo) Esquema_info_prestamo= (numero_prestamo, nombre_sucursal, nombre_cliente, importe) Esquema_prestamo=, (numero_prestamo, nombre_sucursal, importe) Esquema_prestatario= (nombre_cliente, numero_prestamo) 69 Descomponer Relaciones 70
Se llaman descomposiciones que conservan las dependencias a aquellas descomposiciones en las cuales F+ = F+
hecho = falso
Para comprobar si una relacin Ri de una descomposicin de R est en FNBC hay que comprobar que +, en cada subconjunto de atributos de Ri, no incluye ningn atributo de Ri- o incluye a todos los atributos de Ri
Descomponer Relaciones
Ejemplo FNBC
Esquema_prestamo= (nombre_sucursal, ciudad_sucursal, activo, nombre_cliente, numero_prestamo, importe) nombre_sucursal ciudad_sucursal activo numero_prestamo nombre_sucursal importe Clave candidata: (numero_prestamo, nombre_cliente) Esquema_sucursal= (nombre_sucursal, ciudad_sucursal, activo) Esquema_info_prestamo= (numero_prestamo, nombre_sucursal, nombre_cliente, importe) Esquema_prestamo=, (numero_prestamo, nombre_sucursal, importe) Esquema_prestatario= (nombre_cliente, numero_prestamo) Descomponer Relaciones 73
FNBC
Descomponer Relaciones
74
La Tercera Forma Normal, relajacin leve de la FNBC, garantiza que siempre existe una descomposicin que conserva las dependencias
Descomponer Relaciones
Descomponer Relaciones
Ejemplo 3FN
Esquema_info_asesor= (nombre_sucursal, nombre_cliente, nombre_asesor, numero_sucursal) nombre_asesor nombre_sucursal numero_sucursal nombre_cliente nombre_sucursal nombre_asesor
3FN
Esquema_asesor_sucursal= (nombre_asesor, nombre_sucursal, numero_sucursal) Esquema_asesor= (nombre_cliente, nombre_sucursal, nombre_asesor)
Descomponer Relaciones
77
Descomponer Relaciones
78
Descomponer Relaciones
Dependencias Multivaloradas
Sea R un esquema de relacin y sean R y R; La dependencia multivalorada se cumple en R si, en toda relacin legal r(R), para todo par de tuplas t1 y t2 de r tales que t1[]=t2[], existen unas tuplas t3 y t4 de r tales que t1[]=t2[]=t3[]=t4[] t3[]=t1[] t4[]=t2[] t3[R-]=t2[R-] t4[R-]=t1[R-]
No FNBC
clientes ricos buenos clientes! tienen varios domicilios nombre_cliente calle_cliente ciudad_cliente
Esquema_prestamo= (numero_prestamo, nombre_cliente, calle_cliente ,ciudad_cliente)
Si FNBC
pero aparece el problema de la repeticin de informacin
81
82
tuplas
A A
B C B C
Si , entonces
84
La mayor parte de las dependencias que violan formas normales surgen de un mal diseo del diagrama E-R las dependencias funcionales pueden ayudar a detectar un mal diseo E-R si las relaciones generadas no se hallan en la forma normal deseada, el problema se puede solucionar en el diagrama E-R
87 Dise Diseo de Bases de Datos Relaciones 88
Desnormalizaci Desnormalizacin
A veces, los diseadores de bases de datos escogen un esquema que tiene informacin redundante; es decir, que no est normalizada Se utiliza la redundancia para mejorar el rendimiento de aplicaciones concretas (especialmente crticas en tiempo); la penalizacin es el trabajo extra dedicado a mantener consistentes los datos redundantes
Vistas materializadas: vistas cuyo resultado se almacena en la base de datos que se actualiza cuando se actualizan las relaciones implicadas
Dise Diseo de Bases de Datos Relaciones 89 Dise Diseo de Bases de Datos Relaciones 90
Tablas Cruzadas
Esquema_beneficios= (id_empresa, ao, importe) id_empresa ao importe Esquema_beneficios_2004 = (id_empresa, Esquema_beneficios_2003 = (id_empresa, Esquema_beneficios_2002 = (id_empresa, Esquema_beneficios_2001 = (id_empresa, id_empresa importe importe) importe) importe) importe)
FNBC
Esquema_empresa_ao = (id_empresa, beneficios_2004, beneficios_2003, beneficios_2002, beneficios_2001) id_empresa beneficios_2004, beneficios_2003, beneficios_2002, beneficios_2001