Capítulo 4: Dependencias Funcionales - Parte 1
Capítulo 4: Dependencias Funcionales - Parte 1
Capítulo 4: Dependencias Funcionales - Parte 1
Algoritmo de Normalización
R yR
o La dependencia funcional
se cumple en R si y solo si para todas las relaciones legales r(R), cada
vez que dos tuplas t1 y t2 de r coinciden en los atributos , también
coinciden en los atributos . Formalmente:
t1[] = t2 [] t1[ ] = t2 [ ]
Dependencias Funcionales
o Tengo la dependencia:
nombreBib calle, num
Luego la dirección de la biblioteca se repite para cada socio de ella..
Dependencias Funcionales
• Mensaje principal: Siempre que tengo un esquema con
redundancia de información,
– hay una DF con atributos a la derecha que caracterizan la
información redundante y con atributos a la izquierda que no
determinan todos los atributos del esquema.
• Consequencias:
– Las DF ayudan a identificar redundancia de información.
– Se puede usar una DF para descomponer el esquema con
redundancia de información,
– lo veremos al estudiar algoritmos de normalización.
Dependencias Funcionales
La noción de DF es una generalización de la noción de
superclave.
K es superclave para el esquema relacional R si y solo si
KR
K es una clave candidata para R si y solo si
o K R, y
o Para ningún K: R
Observación: DF permiten expresar restricciones que no
pueden ser expresadas usando superclaves.
Dependencias Funcionales
• ¿Si tengo un modelo E/R será que a partir del
mismo puedo obtener DFs?
– Sí. Los modelos E/R permiten obtener DFs a partir de
claves primarias de conjuntos de entidades y de
conjuntos de relaciones varios a uno o uno a varios.
– Ejercicio del práctico.
Dependencias Funcionales
• Ejercicio: El esquema universal de un club es el siguiente:
– (socioNro,socioNombre,Activo,desde,tipoSocio,
instalacionNro,instalacionNombre,tipoInstala-
cion,jugadorNro,jugadorNombre,lesion,tipoLe-
sion,cantidadLesion,rendimientoMensual,canti-
dadPartidosJugados)
– Activo (si el socio tiene la cuota al día será activo, caso contrario será
noActivo), desde (fecha desde donde el socio pertenece al club),
tipoSocio (i.e. vitalicio, platea, preferencial, popular)
– El club dispone de diferentes instalaciones; p.ej. piscina, gimnasio,
cancha de paddle, cancha de fútbol 5, estadio. Los socios vitalicios
tienen acceso a todas las instalaciones, los platea tienen acceso al
gimnasio y a la piscina, mientras que se les realiza un descuento en las
demás instalaciones.
Dependencias Funcionales
— lesión (nombre de la lesión), tipoLesión (grave, media, leve),
cantidadLesión (cantidad de lesiones que tuvo un jugador),
rendimientoMensual (el rendimiento del jugador se mide del 1 al 10),
cantidadPartidosJugados (número de partidos acumulados durante un
año por parte del jugador).
— Los jugadores tienen acceso a todas las instalaciones. Así información
del socio es tenida en cuenta para administrar los ingresos a las
distintas instalaciones del club. Información de lesiones es tenida en
cuenta por el técnico a la hora de evaluar la titularidad de los
jugadores.
• Construir las DF del problema.
Dependencias funcionales triviales
Una DF es trivial si es satisfecha por todas las
relaciones de un esquema.
o Ejemplo: En SmaBibliotecas
nombreBib, calle nombreBib
calle calle
Después veremos que las DF triviales juegan su papel
en los algoritmos de normalización.
Ejercicio: probar la siguiente
o Proposición: es trivial si y solo si .
Dependencias Funcionales
• Ejercicio: dada la relación r(A, B, C) con tabla:
A B C
a1 b1 c1
a2 a1 c1
a1 b2 c2
Listar DF no triviales que se cumplen para esta
relación y también algunas DF que no se cumplen.
o Asumir que entradas con nombres distintos tienen
distintos valores.
• No confundir las DF que se cumplen en una tabla con
las DF de un problema del mundo real para el cual la
tabla es legal.
o El problema suele cumplir menos DF que la tabla.
Algo de notación
• Notación: Para conjuntos de DF vamos a
usar las letras mayúscula: F, G, F’, F”, G’, G”,
etc.
• Notación: Para DF individuales usaremos
las letras minúscula: f, f’, f”, g, g’, g”, etc.
Encontrando las DF del Problema Actual
2. Que no falten DF en F.
– O sea, toda DF del problema al menos debe ser IL por DFs
de F.
– ¿Por qué no queremos DFs del problema sin contemplar?
Encontrando las DF del Problema Actual
2. Que no falten DF en F.
– O sea, toda DF del problema al menos debe ser IL por DFs
de F.
– ¿Por qué no queremos DFs del problema sin contemplar?
– Porque la BD puede en algún momento contradecir DFs no
contempladas.
• Más adelante veremos una forma mejor de definir
cuándo un conjunto de DF es adecuado.
Encontrando las DF del Problema Actual
β ∈ {φ | F ⊨ α φ } o mejor contestar:
β {A ∈ R | F ⊨ α A }
• Llegamos así a un conjunto conocido como cierre de un conjunto
de atributos.
• Sea R esquema relacional, sea α R y sea F conjunto de DFs. El
cierre de α bajo F (denotado por α+F) se define :
α+F = {A ∈ R : F ⊨ α A} .
Cierre de un conjunto de atributos
• Algoritmo para computar α+F (la clausura de bajo F)
result := ;
while (changes to result) do
for each in F do
begin
if result then result := result
end
– Luego de cada asignación a la variable result se cumple
result ⊆ + .
– Por lo tanto cuando el algoritmo termina se cumple
result ⊆ + .
– La prueba de que en este momento + ⊆ result escapa al
alcance de la materia.
Cierre de un conjunto de atributos
Pregunta B: chequear si F ⊨ f .
¿Usando cierre de conjunto de atributos de qué otra manera
se puede chequear la condición anterior?
Cierre de un conjunto de atributos
Pregunta A: se reduce a poder chequear para f ∊ G si
o G – {f} ⊨ f.
Pregunta B: chequear si F ⊨ f .
Si f = α β, la pregunta B se reduce a chequear β C α+F
Cierre de un conjunto de atributos
Computando la clausura de F
F + = U R { S | S + }
• Esta fórmula es útil al momento de calcular la clausura de F y
suele ser mucho mejor que aplicar el algoritmo de cálculo de
clausura de F anterior.
• Ayuda para aplicar la fórmula anterior:
– Notar que si superclave de R: S S + } = S S R}
– Para saber todas las superclaves de R basta con saber las claves
candidatas de R.
– Además si superclave de R y β, entonces β superclave de R.
– Luego solo hay que hacer cuentas para los casos de no superclave de
R.
Cierre de un conjunto de atributos
• Ejercicio:
– Sea R = (A,B,C,D) y F= {A BC, C CA, DC }
– Calcular F +
– ¿Cuáles son las claves candidatas de R?
Cierre de un conjunto de atributos
• Ejercicio:
– Sea R = (A,B,C,D) y F= {A BC, C CA, DC }
– Calcular F +
– ¿Cuáles son las claves candidatas de R?
• D
• Usar eso para resolver la mitad de los casos
– ¿Cómo se puede continuar?
Cierre de un conjunto de atributos
• Ejercicio:
– Sea R = (A,B,C,D) y F= {A BC, C CA, DC }
– Calcular F +
– ¿Cuáles son las claves candidatas de R?
• D
• Usar eso para resolver la mitad de los casos
– ¿Cómo se puede continuar?
• Luego considerar los conjuntos que no contienen D.