Professional Documents
Culture Documents
H H H H H H H H
Primera forma normal Problemas en el diseo lgico relacional Dependencias funcionales Descomposicin Forma normal de Boyce-Codd Tercera forma normal Otras formas normales y dependencias multivaluadas Proceso global de diseo de bases de datos
Bases de datos
Aseveraciones
n Una aseveracin es un predicado que expresa una condicin
para todo X, P(X) se consigue de manera indirecta con no existe X tal que no P(X)
Bases de datos
Ejemplo de aseveracin
n La suma de todos los prstamos de cada sucursal debe ser
menor que la suma de todos los saldos de cuentas de esa sucursal. create assertion restriccion-suma check (not exists (select * from sucursal where (select sum(cantidad) from prestamo where prestamo.-nombre-sucursal = sucursal.nombre-sucursal) >= (select sum(saldo) from cuenta where cuenta.nombre-sucursal = sucursal. nombre-sucursal)))
Bases de datos
Disparadores
n Un disparador es una sentencia que se ejecuta
automticamente por el sistema como efecto lateral de una modificacin de la base de datos.
n Para especificar un disparador debemos:
H Especificar las condiciones par a su ejecucin. H Especificar las acciones a realizar cuando se ejecuta.
n Los disparadores se introdujeron en el estndar SQL en
SQL:1999, pero eran soportados antes por la mayora de los gestores de bases de datos mediante sintaxis no estndar.
Bases de datos
Ejemplo de disparador
n Supongamos que en vez de permitir saldos de cuenta negativos,
Bases de datos
Bases de datos
determinados atributos
H P.e. create trigger descubierto after update of saldo on cuenta
n Se pueden referenciar los valores anteriores y posteriores a una
actualizacin
n Los disparadores se pueden activar antes de un evento, con lo que
pueden servir como restricciones adicionales. P.e. convertir blancos a nulos: create trigger ponernulos before update on r referencing new row as nrow for each row when nrow.numero-telefono= set nrow.numero-telefono= null
Bases de datos 7
se puede ejecutar una sola accin para todas las filas afectadas por una transaccin
H Utilizar for each statement en vez de for each row H Utilizar referencing old table o referencing new table para referirse a tablas temporales (llamadas tablas de transicin) que contengan las filas afectadas H Puede ser ms eficiente cuando tratamos sentencias SQL que afectan a muchas filas
Bases de datos
Seguridad
n Seguridad proteccin frente a intentos maliciosos de robar o
modificar datos.
H Nivel de sistema de bases de datos
4
Mecanismos de autentificacin y autorizacin permiten a determinados usuarios acceder slo a los datos requeridos Los superusuarios del sistema operativo pueden hacer cualquier cosa en las bases de datos! Se necesita una buena seguridad a nivel de sistema operativo. Escuchas (lecturas no autorizadas de mensajes) Suplantaciones (pretender ser un usuario autorizado o enviar mensajes supuestamente de usuarios autorizados)
Bases de datos
Seguridad (Cont.)
H Nivel fsico
4 4
El acceso fsico a los servidores permite que los intrusos destruyan datos; se necesita seguridad fsica tradicional Las mquinas deben protegerse tambin contra lquidos, fuego, etc. Nos debemos asegurar de que los usuarios no den acceso a intrusos Uso adecuado de password
H Nivel humano
4 4
Bases de datos
10
Autorizacin
Formas de autorizacin sobre partes de la base de datos:
n Autorizacin de lectura se permite leer, pero no modificar los
datos.
n Autorizacin de insercin se permite introducir nuevos datos,
borrar datos.
n Autorizacin de eliminacin se permite eliminar datos.
Bases de datos
11
Autorizacin (Cont.)
Formas de autorizacin para modificar el esquema de la base de datos:
n Autorizacin de ndexado se permite crear y eliminar ndices. n Autorizacin de recursos se permite crear nuevas relaciones. n Autorizacin de alteracin se permite aadir o eliminar atributos
de una relacin.
n Autorizacin de borrado se permite borrar relaciones.
Bases de datos
12
Autorizacin y vistas
n Los usuarios pueden obtener autorizaciones sobre vistas, sin
simplificar el uso del sistema como para aumentar la seguridad permitiendo a los usuarios que slo accedan a los datos que necesitan para su trabajo
n Se puede utilizar una combinacin de seguridad a nivel
relacional y seguridad a nivel de vista para limitar los accesos de los usuarios a los datos que necesitan.
Bases de datos
13
Ejemplo de vista
n Supongamos que un cajero necesita conocer los nombres de los
clientes de cada sucursal, pero no est autorizado para ver informacin especfica sobre los crditos.
H Aproximacin: Denegar el acceso directo a la relacin prestamo, pero permitir el acceso a la vista cliente-prestamo, que est formada solamente por los nombres de los clientes y las sucursales en las que tienen un prstamo. H La vista cliente-prestamo en SQL se define as:
create view cliente-prestamo as select nombre-sucursal, nombre-cliente from prestatario, prestamo where prestatario.numero.prestamo = prestamo.numeroprestamo
Bases de datos
14
una consulta de las relaciones de la base de datos, obtendremos una consulta sobre prestatario y prestamo.
n Las autorizaciones se deben comprobar sobre la consulta del
cajero antes de que el procesador de consultas reemplace una vista por la definicin de la vista.
Bases de datos
15
autorizacin de lectura sobre prestatario y prestamo, slo obtiene autorizacin de lectura sobre cliente-prestamo
Bases de datos
16
Concesin de privilegios
n El paso de autorizacin de un usuario a otro se puede
sobre prestamo.
n Una flecha Ui Uj indica que el usuario Ui ha concedido
U1
U4
DBA
U2
U5
Bases de datos
U3
17
H Se debe revocar la concesin de U4 dado que U1 ya no tiene autorizacin H No se debe revocar la autorizacin de U5 dado que U5 tiene otro camino de
autorizacin desde DBA a travs de U2 n Se deben prevenir ciclos de concesiones sin camino desde la raz:
H DBA concede autorizacin a U7 H U7 concede autorizacin a U8 H U8 concede autorizacin a U7 H DBA revoca la autorizacin a U7 H Se debe revocar la concesin de U7 a U8 y de U8 a U7 dado que no queda
ningn camino desde DBA a U7 o a U8.
Bases de datos
18
Roles
n Los roles permiten especificar slo una vez privilegios comunes a
varios usuarios. n Los privilegios se conceden o revocan a los roles igual que para usuarios individuales n Los roles se pueden asignar a usuarios o a otros roles n SQL:1999 soporta roles
create role cajero create role gestor grant select on sucursal to cajero grant update (saldo) on cuentas to cajero grant all privileges on cuentas to gestor grant cajero to gestor grant cajero to alicia, juan grant gestorr to ana
Bases de datos 19
NORMALIZACIN
Bases de datos
20
unidades indivisibles
H Ejemplos de dominios no atmicos:
4 4
Nombres, atributos compuestos Nmeros de identificacin como 305010789 que se pueden dividir en partes
lugar a redundancia
H P.e. Conjunto de cuentas almacenado con cada cliente, y conjunto de propietarios almacenado con cada cuenta H Vamos a asumir que todas las relaciones estn en primera forma normal
Bases de datos 21
encontrar un buen conjunto de esquemas de relacin. Un mal diseo puede dar lugar a:
H Repeticin de informacin (redundancia) H Imposibilidad de representar cierta informacin.
n Objetivos de diseo:
H Evitar la redundancia H Asegurar que se representan las asociaciones entre atributos H Facilitar la comprobacin de las violaciones de restricciones de integridad en las actualizaciones de las bases de datos.
Bases de datos
22
Ejemplo
n Consideremos el siguiente esquema de relacin:
n Redundancia:
Descomposicin
n Descompongamos el esquema de relacin Esquema-prestamo
en: Esquema-sucursal = (nombre-sucursal, ciudad-sucursal, activos) Esquema-info-prestamo = (nombre-cliente, numero-cliente, nombre-sucursal, cantidad)
n Todos los atributos del esquema original (R) deben aparecer en
Bases de datos
24
n Descomposicin de R = (A, B)
R1 = (A)
A B r 1 2 1 A A(r) A
Bases de datos
R2 = (B)
B 1 2 B(r)
A (r)
B (r)
B 1 2 1 2
25
adecuado.
n En el caso de que la relacin R no sea buena, descomponerla
Bases de datos
26
Dependencias funcionales
n Restricciones sobre el conjunto de relaciones permitidas en un
conjunto relacin.
n Introducen como restriccin que el valor de un conjunto
concepto de clave.
Bases de datos
27
R y R n La dependencia funcional se da en R si y solo si para cualquier relacin legal r(R), cuando dos tuplas cualquiera t1 y t2 de r coinciden en los valores de los atributos , entonces tambin coinciden en lso valores de los atributos . Es decir, t1[] = t2 [] t1[ ] = t2 [ ] n Ejemplo: Consideremos r(A,B) con la siguiente instancia de r. 1 1 3 4 5 7
Bases de datos
28
H K R, y H Para ningn K, R
n Las dependencias funcionales nos permiten expresar restricciones
que no se pueden expresar mediante superclaves. Consideremos el esquema: Esquema-info-prestamo = (nombre-cliente, numero-prestamo, nombre-sucursal, cantidad). Debemos esperar que se cumplan las siguientes dependencias funcionales: numero-prestamo cantidad numero-prestamo nombre-sucursal pero debemos esperar que no se cumpla: numero-prestamo nombre-cliente
Bases de datos 29
H Comprobar las relaciones para ver si son legales bajo un conjunto dado de dependencias funcionales.
4
Si una relacin r es legal bajo un conjunto F de dependencias funcionales, decimos que r satisface F. Decimos que F se da en R si todas las relaciones legales sobre R satisfacen el conjunto de dependencias funcionales F.
satisfacer una dependencia funcional aun cuando la dependencia funcional no se d en todas las instancias legales.
H Por ejemplo, una instancia especfica de Esquema-prestamo puede, por tanto, satisfacer numero-prestamo nombre-cliente.
Bases de datos
30
H En general, es trivial si
Bases de datos
31
H consistentes (generan solo dependencias funcionales que se dan) y H completas (generan todas las dependencias funcionales que se dan)
Bases de datos 32
Ejemplo
n R = (A, B, C, G, H, I)
F={ AB AC CG H CG I B H}
n Algunos miembros de F+
H AH
4 Por transitividad de A B y B H
H AG I
4 por aumentacin de A C con G, que da AG CG
H CG HI
4 de CG H y CG I : la regla de la unin se puede inferir de
La definicin de dependencia funcional, o Por aumentacin de CG I para inferir CG CGI, aumentacin de CG H para inferir CGI HI, y entonces transitividad
Bases de datos 33
Procedimiento de clculo de F+
n Para calcular el cierre de un conjunto de dependencias
funcionales F: F+ = F repetir para cada dependencia funcional f en F+ aplicar las reglas de reflexividad y aumentacin a f aadir las dependencias funcionales resultantes a F+ para cada par de dependencias funcionales f1y f2 en F+ si f1 y f2 se pueden combinar por transitividad entonces aadir la dependencia funcional resultante a F+ hasta que F+ no cambie
Bases de datos
34
Bases de datos
35
(denotado por +) como el conjunto de atributos funcionalmente determinados por bajo F: est en F+ + resultado := ; mientras (cambie resultado) hacer para cada en F hacer begin si resultado entonces resultado := resultado end
Bases de datos
36
AC CG H CG I B H} n (AG)+
1. resultado = AG 2. resultado = ABCG 3. resultado = ABCGH 4. resultado = ABCGHI (A C y A B) (CG H y CG AGBC) (CG I y CG AGBCH)
1. AG es una superclave?
1. AG R? == (AG)+ R
H Para comprobar si es una superclave, calculamos +, y comprobamos si + contiene todos los atributos de R.
n Comprobar dependencias funcionales
H Para comprobar si una dependencia funcional se da (o, en otras palabras, est en F+), se comprueba si +. H Es decir, calculamos + utilizando el cierre de atributos, y entonces comprobamos si contiene . H Es una comprobacin simple y poco costosa, y muy til
n Clculo del cierre de F
Bases de datos
38
Cubricin cannica
n Un conjunto de dependencias funcionales puede tener
mnimo de dependnecias funcionales equivalente a F, que no tenga dependnecias o partes de dependencias redundantes
Bases de datos
39
Atributos superfluos
n Dado un conjunto F de dependencias funcionales y la
uno de los casos anteriores, dado que una dependencia funcional ms fuerte siemple implica una ms dbil
n Ejemplo: Dado F = {A C, AB C } H B es superfluo en AB C ya que {A C, AB C} implica A C (es decir, eI resultado de eliminar B de AB C). n Ejemplo: Dado F = {A C, AB CD} H C es superfluo en AB CD dado que AB C se puede inferir an despus de eliminar C
Bases de datos 40
1. calculamos ({} A)+ utilizando las dependencias de F 2. comprobamos si ({} A)+ contiene a A; si es as, A es superfluo
n Para comprobar si el atributo A es superfluo en
1. Calculamos + utilizando solo las dependencias de F = (F { }) { ( A)}, 2. comprobamos si + contiene a A; si es as, A es superfluo
Bases de datos
41
Cubrimiento cannico
n Un cubrimiento cannico de F es un conjunto de dependencias Fc tal que
H F implica todas las dependencias de Fc, y H Fc implica todas las dependencias de F, y H Ninguna dependencia funcional de Fc contiene un atributo superfluo, y H Cada parte izquierda de dependencia funcional de Fc es nica.
n Para calcular el cubrimiento cannico de F:
repetir Aplicar la regla de la unin para reemplazar cualquier dependencia de F 1 1 y 1 1 por 1 1 2 Encontrar una dependencia funcional con un atributo superfluo o bien en o en Si se encuentra algn atributo superfluo, borrarlo de hasta que F no cambie
n Nota: La regla de la unin puede hacerse aplicable despus de eliminar
Bases de datos
42
F = {A BC BC AB AB C} n Combinamos A BC y A B en A BC H El conjunto resultante es {A BC, B C, AB C} n A es superfluo en AB C H Comprobamos si el resultado de eliminar A de AB C puede implicarse a partir
de otras dependencias
4 S: de hecho, B C ya est en el conjunto
AB BC
43
Objetivos de la normalizacin
n Decidir cuando una determinada relacin R est en un estado
adecuado. n En el caso de que la relacin R no sea buena, descomponerla en un conjunto de relaciones {R1, R2, ..., R n} tales que
H Cada relacin est en estado adecuado H La descomposicin sea reversible por join
n Nuestra teora est basada en:
Bases de datos
44
Descomposicin
n
Descompongamos el esquema de relacin Esquema-prestamo en: Esquema-sucursal = (nombre-sucursal, ciudad-sucursal, activos) Esquema-info-prestamo = (nombre-cliente, numero-cliente, nombre-sucursal, cantidad)
Todos los atributos del esquema original (R) deben aparecer en la descomposicin (R1, R2): R = R1 R2 Descomposicin reversible por join Para todas las posibles relaciones r en el esquema R r = R1 (r) R2 (r) Una descomposicin de R en R1 y R2 es reversible por join si y slo si al menos una de las siguientes dependencias funcionales est en F+: H R1 R2 R1 H R1 R2 R2
Bases de datos
45
Las descomposiciones no reversibles por join dan lugar a alteraciones de la informacin. Ejemplo: Descomposicin de R = (A, B) R1 = (A) R2 = (B)
A B r 1 2 1
A A(r) A B 1 2 1 2
B 1 2 B(r)
A (r)
B (r)
Bases de datos
46
La descomposicin debera preservar las dependencias, es decir, (F1 F2 Fn)+ = F+ Si no perdemos dependencias, que son restricciones introducudas en la fase de diseo para modelar adecuadamente la aplicacin. No es deseable.
Bases de datos
47
Ejemplo
n R = (A, B, C)
F = {A B, B C)
H Se puede descomponer de dos maneras diferentes
Bases de datos
48
descomposicin de R en R1, R2, , Rn aplicamos la siguiente comprobacin simplificada (con el cierre de atributos realizado respecto a F)
H resultado = while (cambie resultado) do for each Ri en la descomposicin t = (resultado Ri)+ Ri resultado = resultado t H Si resultado contiene todos los atributos de , entonces se preserva la dependencia funcional .
n Debemos aplicar el test a todas las dependencias de F para
Bases de datos
Bases de datos
50
Ejemplo
n R = (A, B, C)
F = {A B B C} Clave = {A}
Bases de datos
51
Comprobacin de la FNBC
n Para comprobar si una dependencia no trivial cumple la FNBC 1. calcular + (el cierre de atributos de ), y 2. verificar que incluye todos los atributos de R, es decir, es una superclave de R. n Comprobacin simplificada: Para comprobar si un esquema de relacin R
est en FNBC, es suficiente comprobar las dependencias del conjunto F, en vez de comprobar todas las dependencias de F+. H Si ninguna de las dependencias de F viola la FNBC, entonces ninguna de las
dependencias de F+ violar la FNBC. n Pero, es incorrecto utilizar slo F cuando se comprueba una relacin de
(A,C,D) por eso podramos cometer el error de pensar que R2 est en FNBC.
4 De hecho, la dependencia A C de F+ indica que R 2 no est en FNBC. Bases de datos 52
Bases de datos
53
nombre-cliente, numero-prestamo, cantidad) F = {nombre-sucursal activos ciudad-sucursal numero-prestamo cantidad nombre-sucursal} Clave = {numero-prestamo, nombre-cliente} n Decomposicin
H R1 = (nombre-sucursal, ciudad-sucursal, activos) H R2 = (nombre-sucursal, nombre-cliente, numero-prestamo, cantidad) H R3 = (nombre-sucursal, numero-prestamo, cantidad) H R4 = (nombre-cliente, numero-prestamo)
n Descomposicin final
R1, R3, R4
Bases de datos 54
Bases de datos
55
JK L
Bases de datos
56
Forma Normal.
H Permite cierta redundancia (con los problemas consabidos) H Pero siempre existe una descomposicin a 3FN que es reversible por join y que preserva las dependencias:
Bases de datos
57
H Cada atributo A de est contenido en una clave candidata de R. (NOTA: cada atributo puede estar en una clave candidata diferente)
n Si una relacin est en FNBC entonces tambin est en 3FN
(dado que en FNBC se debe dar una de las dos primeras condiciones). n La tercera condicin es una relajacin mnima de la FNBC que asegura la preservacin de dependencias funcionales.
Bases de datos
58
3FN (Cont.)
n Ejemplo
Bases de datos
59
Comprobacin de la 3FN
n Optimizacin: Slo es necesario comprobar las dependencias
H Esta comprobacin es bastante ms costosa, dado que supone encontrar las claves candidatas H Se ha demostrado que comprobar la 3FN es NP-hard H Por suerte, descomponer a 3FN se puede hacer con una complejidad polinomial
Bases de datos
60
Bases de datos
61
H que cada esquema de relacin Ri est en 3FN H La descomposicin es reversible por join y preserva las dependencias
Bases de datos
62
Ejemplo
n Esquema de relacin: Esquema-info-banquero = (nombre-sucursal, nombre-cliente, nombre-banquero, numero-despacho) n Las dependencias funcionales para este esquema de relacin
son:
n La clave es:
Bases de datos
63
siguientes esquemas en nuestra descomposicin: Esquema-despacho-banquero = (nombre-banquero, nombre-oficina, numero-despacho) Esquema-banquero = (nombre-cliente, nombre-sucursal, nombre-banquero)
n Dado que Esquema-banquero contiene una clave
Bases de datos
64
3FN y
H La descomposicin es reversible por join H Se preservan las dependencias
n Siempre es posible descomponer una relacin en relaciones en
FNBC y
H La descomposicin es reversible por join H Puede que no se preserven las dependencias
Bases de datos
65
H R = (J, K, L) F = {JK L, L K}
J j1 j2 j3 null L l1 l1 l1 l2 K k1 k1 k1 k2
Un esquema que est en 3FN pero no en FNBC tiene problemas de n Repeticin de informacin (p.e., la asociacin l1, k1) n Necesidad de utilizar valores nulos (p.e., para representar la asociacin l2, k2 que no tiene valor para J).
Bases de datos 66
Objetivos de diseo
n El objetivo de un diseo de base de datos relacional es:
H o bien perder la preservacin de dependencias, H o bien la existencia de redundancia debida al uso de la 3FN (suele ser la
opcin preferible) n Sorprendentemente, SQL no proporciona un mecanismo directo de
especificar dependencias funcionales distintas de las superclaves. Se pueden especificar DFs como aseveraciones, pero son costosas de comprobar
n Aunque tengamos una descomposicin que preserve las dependencias,
utilizando SQL no podremos comprobar de manera eficiente una dependencia funcional cuya parte izquierda no sea una clave.
Bases de datos 67
se den en una relacin: Cuarta Forma Normal (4FN), Quinta Forma Normal (5FN),
n La 3FN es la forma ideal en lo referente a
Bases de datos
68
Dependencias multivaluadas
n Dado un esquema de relacin R y dados R y R.
La dependencia multivaluada se da en R si en cualquier relacin posible r(R), para todos los pares de tuplas t1 y t2 de r tales que t1[] = t2 [], existen en r las tuplas t3 y t4 tales que: t1[] = t2 [] = t3 [] = t4 [] t3[] = t1 [] t3[R ] = t2[R ] t4 [] = t2[] t4[R ] = t1[R ]
Bases de datos
69
t1 t2 t3 t4
a a1 ai a1 ai a1 ai a1 ai
Bases de datos
70
Dependencias multivaluadas
n Definicin alternativa: H Dado un esquema de relacin R con un conjunto de atributos particionado en tres subconjuntos no vacos
Y, Z, W
H Decimos que Y Z (Y multidefine a Z) si y slo si para todas las relaciones posibles r(R) si
< y1, z1, w1 > r y < y2, z2, w2 > r entonces < y1, z1, w2 > r y < y2, z2, w1 > r
Bases de datos 71
H R puede haber sido generado por el paso de un diagrama E-A a un conjunto de relaciones. H R puede ser una nica relacin que contiene todos los atributos de inters (se denomina relacin universal). H La normalizacin divide R en relaciones ms pequeas. H R puede ser el resultado de algn otro proceso de diseo de relaciones, el cual comprobamos/convertimos a forma normal.
Bases de datos
72
todas las entidades correctamente, las relaciones generadas a partir del diagrama E-A no deberan necesitar normalizacin adicional. n No obstante, en un diseo real (imperfecto) puede haber dependencias funcionales desde atributos que no sean clave de una entidad hacia otros atributos de la entidad. n P.e. La entidad empleado con atributos numero-despacho y localizacion-despacho, y una dependencia funcional numero-despacho localizacin-despacho
H En un buen diseo se debera haber creado una entidad despacho
n Es posible encontrar dependencias funcionales desde atributos de un
conjunto asociacin que no sean clave, pero no es frecuente --- la mayora de los conjuntos asociacin son binarios
Bases de datos
73
de datos. n Ejemplos de malos diseos de bases de datos que se deben evitar: En vez de beneficios(id-empresa, ao, cantidad), utilizar H beneficios-2000, beneficios-2001, beneficios-2002, etc., todos con el
esquema (id-empresa, beneficios).
4 Las relaciones anteriores estn en FNBC, pero hacer consultas que
afecten a varios aos es difcil y adems se necesita una tabla nueva para cada ao.
de datos.
Bases de datos
74
Bases de datos
75