Capítulo 4: Dependencias Funcionales - Parte 1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 76

Capítulo 4

Dependencias Funcionales – Parte 1


Diseño de BD Relacionales
• Meta: aprender a hacer diseños de calidad de
esquemas de BD relacionales.
• ¿Por qué preocuparse por tener diseño de calidad?
Diseño de BD Relacionales
• Meta: aprender a hacer diseños de calidad de
esquemas de BD relacionales.
• ¿Por qué preocuparse por tener diseño de calidad?
– Evitar problemas de redundancia de información.
– Evitar problemas de comprensibilidad.
– Evitar problemas de incompletitud.
• Restricciones de integridad incompletas.
• Relaciones entre atributos no contempladas por esquemas de BD.
– Evitar problemas de ineficiencia.
• Chequeo ineficiente de restricciones de integridad.
• Consultas ineficientes por tener un esquema inadecuado de BD.
Diseño de BD Relacionales
• ¿De qué manera que ya conocemos podemos
lograr esta meta?
Diseño de BD Relacionales
• ¿De qué manera que ya conocemos podemos
lograr esta meta?
– Hacer buen diseño de esquema-ER.
– Mapear esquema-ER a esquema relacional.
– Dificultades:
• Corregir esquemas-ER con problemas de calidad.
• Decisiones de diseño:
– Considerar alternativas suficientes de diseño
– Elegir entre las alternativas la mejor basándose en criterios de
calidad.
Diseño de BD Relacionales
• Problema ¿Cómo evitar tener que decidir entre
alternativas de diseño o tener que corregir diseños?
• Solución:
– Identificar K el conjunto de todos los atributos (atómicos)
del problema actual.
– Luego a partir de K y para el problema actual definir un
conjunto de restricciones de integridad I,
• que servirán de guía para hacer un buen diseño.
• A estas restricciones se las llama dependencias funcionales.
– Se aplica un algoritmo llamado de normalización que:
• Calcula un esquema de BD relacional a partir de K y de I.
Diseño de BD Relacionales
Atributos Problema Actual y Restricciones Integridad
Atributos atómicos Dependencias funcionales

Algoritmo de Normalización

Esquema de BD Relacional de Calidad


Diseño de BD Relacionales
Prerequisitos para ver tema de normalización:
• Para poder usar un algoritmo de normalización es
necesario:
o Poder definir un conjunto de dependencias funcionales
adecuado para el problema actual.
• Para poder comprender los algoritmos de
normalización es necesario:
o Comprender algunas propiedades importantes que
pueden cumplir las dependencias funcionales.
o Comprender algunas propiedades importantes que
pueden cumplir los esquemas relacionales de BD.
Diseño de BD Relacionales

• El propósito de este capítulo es:


1. Aprender cómo obtener inputs adecuados para usar los
algoritmos de normalización.
2. Aprender los conceptos necesarios para poder entender
los algoritmos de normalización.
3. Conocer un nuevo tipo de restricciones de integridad
llamadas dependencias funcionales.
• Normalización es el tema del siguiente capítulo.
Esquema Universal
• Situación: para aplicar un algoritmo de
normalización necesitamos conocer primero los
atributos del problema actual.
• Dado el problema actual, el esquema universal
consta de todos los atributos atómicos del mismo.
Esquema Universal
• Ejemplo: sistema de bibliotecas
– Se tiene un sistema de bibliotecas de una ciudad, el sistema está
formado por bibliotecas de las que se proveen su nombre, y su
domicilio formado por calle y número; las bibliotecas tienen libros de
los que se almacena su ISBN, su título y sus autores; las bibliotecas
llevan un número de inventario para distinguir entre las distintas
copias de libros; además las bibliotecas tienen socios para los que se
almacena nombre, DNI y posición (la misma puede ser egresado,
docente, estudiante, etc.); a los socios se les prestan ejemplares de
libros.
– ¿Cuál es el esquema universal para este problema?
Esquema Universal
• Ejemplo: sistema de bibliotecas
– Se tiene un sistema de bibliotecas de una ciudad, el sistema está
formado por bibliotecas de las que se proveen su nombre, y su
domicilio formado por calle y número; las bibliotecas tienen libros de
los que se almacena su ISBN, su título y sus autores; las bibliotecas
llevan un número de inventario para distinguir entre las distintas
copias de libros; además las bibliotecas tienen socios para los que se
almacena nombre, DNI y posición (la misma puede ser egresado,
docente, estudiante, etc.); a los socios se les prestan ejemplares de
libros.
– SmaBibliotecas = (nombre, DNI, posición, numInv,
nombreBib, calle, numero, ISBN, título, autores)
– ¿Cuál es el significado de una tupla de una relación para el esquema
universal?
Esquema Universal
• Ejemplo: sistema de bibliotecas
– Se tiene un sistema de bibliotecas de una ciudad, el sistema está
formado por bibliotecas de las que se proveen su nombre, y su
domicilio formado por calle y número; las bibliotecas tienen libros de
los que se almacena su ISBN, su título y sus autores; las bibliotecas
llevan un número de inventario para distinguir entre las distintas
copias de libros; además las bibliotecas tienen socios para los que se
almacena nombre, DNI y posición (la misma puede ser egresado,
docente, estudiante, etc.); a los socios se les prestan ejemplares de
libros.
– SmaBibliotecas = (nombre, DNI, posición, numInv,
nombreBib, calle, numero, ISBN, título, autores)
– Significado: Una tupla de información para una relación de ese
esquema para un sistema de bibliotecas consiste de: datos sobre una
persona (correspondientes a nombre, DNI, posición) datos sobre un
libro (correspondientes a numInv, ISBN, título, autores), datos sobre
una biblioteca (correspondientes a calle, número, nomBib), tal que esa
persona es socia de esa biblioteca, y se le ha prestado ese libro que es
de esa biblioteca.
Esquema Universal
• Problema: ¿Cómo obtener los atributos del
esquema universal?
• Solución: dado un enunciado en lenguaje natural del
problema actual, muchos de los atributos pueden
identificarse mirando los sustantivos.
– Recordar que los atributos necesitan ser atómicos,
• o sea que si un sustantivo S se desmenuza en otros sustantivos
para sus partes,
• y esas partes van a ser usadas al consultar y manipular los datos,
entonces S no debería ser un atributo.
– Esta regla tiene algunas excepciones,
• P. ej. los lenguajes de consulta permiten extraer partes o referirse
a partes de un atributo de un dominio particular.
Esquema Universal
• Ejercicio: Construir el esquema universal para el
siguiente problema:
– En un restaurante hay varias mesas. Cada mesa tiene un
número y una capacidad (cantidad de personas que
pueden estar en ella). Todo cliente tiene un número
telefónico, un nombre y DNI. Una asignación de menú
consiste de un menú y de un horario que viene dado por
una fecha y una hora. A su vez para que una asignación de
menú pueda existir debe estar vinculada con exactamente
una mesa (puede pasar que dos asignaciones de menú
diferentes tengan el mismo horario y menú). También
puede pasar que una mesa no tenga una asignación de
menú. Los clientes pueden tener o no reservadas
asignaciones de menú. Toda asignación de menú debe
haber sido reservada por a lo más un cliente.
Esquema Universal
• Meta: aprender a hacer diseños de calidad de
esquemas de BD relacionales.
• Ya que el esquema universal es un esquema de BD
relacional,
– ¿conviene usarlo como diseño de una BD relacional?
– Respuesta: no, porque el esquema universal usualmente
tiene problemas de calidad, como redundancia de
información.
Esquema Universal
• Sea el siguiente esquema universal:
– SmaAutomotor = (DNI, nombre, marca, modelo,
patente, numSeguro, compañíaSeguro, direcciónCS)
• Problemas de diseño:
– Redundancia de información: direcciónCS aparece repetido
para cada coche asegurado por esa compañía de seguros;
nombre aparece repetido por cada coche que tiene esa persona.
– Manejo de valores nulos: si una persona no tiene coche,
aparecen los demás campos en nulo; si una compañía de seguro
no tiene coches asegurados, aparecen los demás campos en
nulo.
• Antes de decidir si agregamos valores nulos, tenemos que hacer
consultas .
• P.ej. si a una persona le sacamos coche asegurado, hay que
consultar si tiene otros coches asegurados, sino hay que poner
nulos.
Esquema Universal
• Problema: ¿Cómo se pueden eliminar los problemas
citados?
• Solución: descomponer el esquema universal para
eliminar los problemas citados.
• Ejemplo:
– Persona = (DNI, nombre)
– Auto = (marca, modelo, patente)
– CompañíaAseguradora = (compañíaSeguro, direcciónCS)
– Seguro = (patente, compañíaSeguro, numSeguro)
– TieneAuto = (patente, DNI)
Problemas de usar esquema universal
• La teoría de normalización estudia cómo descom-
poner esquemas universales para eliminar los
problemas citados.
– Implicaciones de usar normalización:
• no hace falta ser bueno en modelado o diseño;
• pero hay que ser bueno encontrando dependencias
funcionales y el esquema universal.
Dependencias Funcionales
 Hay que definir las restricciones de integridad para el
conjunto de relaciones legales.
o Relaciones legales son las relaciones con las que la empresa quiere
poder trabajar.
o Son relaciones donde las tuplas tienen un cierto significado y cumplen
con ciertas propiedades obligatorias.
 Las dependencias funcionales (DF) requieren que para las
relaciones legales,
o el valor de un cierto conjunto de atributos determine unívocamente el
valor de otro conjunto de atributos.
Dependencias Funcionales
• Ejemplo: Dado el esquema relacional:
o SocioBib = (nombre, apellido, DNI, posición, nombreBib,
calle, num)
Tenemos las siguientes dependencias funcionales:
o calle, num  nombreBib
o DNI  nombre, apellido, posición
o nombreBib  calle, num
Dependencias Funcionales
 Formalización:
o Sea R un esquema relacional

R yR
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

• Ejercicio: Considerando el esquema universal


– SmaBibliotecas = (nombre, DNI, posición, numInv,
nombreBib, calle, numero, ISBN, título, autores)
– Con el significado asociado a tuplas de una relación del
esquema universal anteriormente.
– Obtener más dependencias funcionales.
Dependencias Funcionales
• ¿Por qué las DF tienen que ver con un diseño de BD de
calidad?
• Ejemplo:
o socioBib = (nombre, apellido, DNI, posición, nombreBib,
calle, num)
o Tengo la dependencia:
 DNI  nombre, apellido, posición
 Luego, la información del socio se repite para cada biblioteca a la que
pertenece.

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
KR
 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

• Meta: responder a las siguientes preguntas:


• Problema 1: ¿Qué significa tener un conjunto
adecuado de DFs para el problema actual?
• Problema 2: ¿Cómo encontrar un conjunto adecuado
de DF para el problema actual?
• Para tratar con estos problemas necesitamos
introducir el concepto de implicación lógica.
Implicación Lógica
• Ejemplo: Sea R = (A, B, C, G, H, I),
– F = { A B, A C, B  H }
– Resulta bastante obvio que también se cumplen:
A H y A  B, C.
• ¿Qué nos dice el ejemplo anterior?
Implicación Lógica
• Ejemplo: Sea R = (A, B, C, G, H, I),
– F = { A B, A C, B  H }
– Resulta bastante obvio que también se cumplen:
A H y A  B, C.
• ¿Qué nos dice el ejemplo anterior?
• Cuando tengo un conjunto F de DFs usualmente
– otras DF que no están en F se cumplen como
consecuencia de las DF de F.
– Por lo tanto no necesito incorporar esas otras DF.
Implicación Lógica
• Ahora formalizamos la noción que una DF sea
consecuencia de otras DF.
• Dado un esquema relacional R, una DF f con atributos
en R está implicada lógicamente (IL) por un conjunto
de DFs F con atributos en R si
– cada ejemplar de relación r(R) que satisface F también
satisface f.
• Notación:
– Usaremos F ⊨ f para decir que f está IL por F.
– Usaremos F ⊨ G para decir que ∀g ∊ G : F ⊨ g .
Implicación Lógica
• Antes usábamos intuición/sentido común para decir que
una DF está implicada lógicamente por un conjunto.
– Pero ahora que tenemos una definición podemos demostrarlo
matemáticamente.
• Ejercicio:
– Sea R = (A,B,C,G,H,I),
– F = { A B, A C, CG  H, CG  I, B  H }
– Probar que las siguientes dependencias son implicaciones
lógicas de F :
 A  B C H,
 A G B C H I.
– Ayuda: usar definiciones de DF y de IL.
Encontrando las DF del Problema Actual

• Problema 1: ¿Qué significa tener un conjunto


adecuado de DFs para el problema actual?
• Solución: un conjunto de DF F adecuado deberá
cumplir:
1. Que no haya DF demás en F.
– Queremos que en F no haya DFs que son IL por algunas
DF que están en F.
– ¿Por qué es malo tener DFs de más?
Encontrando las DF del Problema Actual

• Problema 1: ¿Qué significa tener un conjunto


adecuado de DFs para el problema actual?
• Solución: un conjunto de DF F adecuado deberá
cumplir:
1. Que no haya DF demás en F.
– Queremos que en F no haya DFs que son IL por algunas
DF que están en F.
– ¿Por qué es malo tener DFs de más?
– Se incurre en costos chequeo de restricciones de
integridad que son innecesarios.
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

• Problema 2: ¿Cómo encontrar un conjunto adecuado


de DF para el problema actual?
• Para poder encontrar un conjunto adecuado de DFs
necesitamos poder responder ciertos tipos de
preguntas con frecuencia.
– Veremos dos tipos de preguntas muy comunes.
Encontrando las DF del Problema Actual

• Pregunta A: dada un conjunto de DFs G para el problema


actual, y f ∊ G, ¿Será que f está de más en G?
– En el caso de la respuesta ser sí: sacar f de G.
– El problema A se reduce a chequear si G – {f} ⊨ f.
• Si el chequeo tiene éxito, entonces sabemos que f ya esta dicho
implícitamente en las otras DF de G.
• Ejemplo: Si tenemos un conjunto de DF G para el problema
actual, tendremos que sacarle todas las DF que están demás;
– las vamos sacando de a una
Encontrando las DF del Problema Actual
• Pregunta B: ¿Será que una DF f no está contemplada dentro de un
conjunto F de DFs?
– En caso de la respuesta ser sí: agregar f a F.
– El problema B se reduce a chequear si F ⊨ f .
• Utilidad: cuando tenemos una DF f que no sabemos si conviene
agregar o no al conjunto de DF actual.
– Si el chequeo tiene éxito, entonces sabemos que f es novedoso;
– o sea, nos dice algo diferente que no tenemos en el conjunto de DF
actual.
• Ejemplo: Podemos comenzar con un conjunto de DF vacío e irlo
aumentando una DF por vez y hacer el chequeo anterior cada vez
hasta que lleguemos a capturar las DF del problema actual.
Encontrando las DF del Problema Actual

• Situación actual: Hasta aquí no dimos ningún


algoritmo para hacer los chequeos de las preguntas
A y B.
• Meta: encontrar algoritmos para hacer los chequeos
de las preguntas A y B automáticamente.
– Veremos dos enfoques para poder hacer los chequeos
indicados mediante algoritmos automáticos.
Clausura de un conjunto de DFs

 Dado un conjunto F de DFs, suele haber DFs que no


están en F y que son IL por F.
o La clausura de F considera todas estas DFs.
o Ejemplo: Sea F = {A  B, B  C}, tenemos F ⊨ A  C .

 El conjunto de DFs IL por F es la clausura de F.


Formalmente:
F+ = {f | F ⊨ f }
Denotamos la clausura de F con F +.
Clausura de un conjunto de DFs

 ¿Por qué es importante el concepto de clausura de


un conjunto de DF?
o Se usa para definir propiedades de las descomposiciones
del esquema universal,
 que son metas a alcanzar por los algoritmos de
normalización.
o Existen algoritmos automáticos para chequear condiciones
de las preguntas A y B.
o Al intentar superar la ineficiencia de estos algoritmos,
 se descubrieron otros conceptos fundamentales en el área
de DF y de normalización.
Clausura de un conjunto de DFs

 Pregunta A: dada un conjunto de DFs G para el problema


actual, y f ∊ G, ¿Será que f está de más en G?
 Pregunta A: se reduce a poder chequear para f ∊ G si
o G – {f} ⊨ f.
 ¿Y si lo expresamos en términos de clausura de conjunto de
DFs, qué hay que chequear?
Clausura de un conjunto de DFs

 Pregunta A: dada un conjunto de DFs G para el problema


actual, y f ∊ G, ¿Será que f está de más en G?
 Pregunta A: se reduce a poder chequear para f ∊ G si
o G – {f} ⊨ f.
 La pregunta A se reduce a poder chequear para f ∊ G si
o f ∊ (G - {f}) +
 Pregunta B: ver si una DF f no está contemplada dentro de un
conjunto F de DFs.
 Pregunta B: chequear si F ⊨ f .
 ¿Y si lo expresamos en términos de clausura de conjunto de
DFs, qué hay que chequear?
Clausura de un conjunto de DFs

 Pregunta A: dada un conjunto de DFs G para el problema


actual, y f ∊ G, ¿Será que f está de más en G?
 Pregunta A: se reduce a poder chequear para f ∊ G si
o G – {f} ⊨ f.
 La pregunta A se reduce a poder chequear para f ∊ G si
o f ∊ (G - {f}) +
 Pregunta B: ver si una DF f no está contemplada dentro de un
conjunto F de DFs.
 Pregunta B: chequear si F ⊨ f .
 La pregunta B se reduce a chequear f ∊ F+
Cómputo de clausura de un conjunto de DF

 Problema: dado un conjunto F de DF,


o ¿Cómo calcular F+?

 Solución: A partir de F aplicar sistemáticamente un


conjunto finito de reglas,
o e ir agregando los resultados de estas reglas,
o hasta que no se pueda agregar ninguna DF nueva.
o Un invariante que se tiene que cumplir:
 Cada vez que aplico una regla me da una IL de DFs que ya tenía.
Cómputo de clausura de un conjunto de DF

 Las reglas consideradas se llaman axiomas de


Armstrong:
o if   , then    (reflexividad)
o if   , then      (aumentatividad)
o if   , and   , then    (transitividad)
Cómputo de clausura de un conjunto de DF
 Para computar F+ se puede usar el siguiente algoritmo:
 F+ = F
repeat
for each DF f in F+
apply reflexivity and augmentation rules on f
add the resulting DFs to F+
for each pair of DFs f1 and f2 in F+
if f1 and f2 can be combined using transitivity
then add the resulting DF to F+
until F+ does not change any further
 Para entender por qué el algoritmo anterior es correcto hace
falta introducir el concepto de deducción.
o Además el concepto de deducción tiene otras utilidades como
veremos.
Deducción
• Ejercicio: queremos deducir AC  D a partir de las
DF {A  B; CB  D} usando las reglas de
Armstromg.
 Bosquejar una deducción.
Deducción
• Generalizando: Dado un esquema relacional R una DF f
con atributos en R se deduce de un conjunto de DFs F
con atributos en R si existe una lista de DFs f1,…, fn tales
que fn = f y para todo 1 ≤ i ≤ n:
1. fi ∊ F ó
2. fi se obtiene por aplicar la regla de reflexividad ó
3. fi se obtiene por aplicar aumentatividad ó transitivi-
dad a pasos anteriores en la lista.
• Notación: Usaremos F⊢ f para decir que f se deduce de F.
Deducción
• Ejemplo: {A  B; CB  D} ⊢ AC  D .
Teorema de Completitud
• Dado un conjunto de DFs F para un problema del mundo real,
los axiomas de Armstrong son:
o Correctos: generan solo DF IL por F.
o Completos: generan todas las DF IL por F.
• Teorema: Si f es una DF con atributos en R y F es un conjunto
de DFs con atributos en R, entonces: F ⊨ f ⇔ F⊢ f
• Consecuencia: Si F es un conjunto de DFs con atributos en R,
entonces: F+ = {f |F ⊢ f } .
• O sea, podemos encontrar todo F+ aplicando los axiomas de
Armstrong.
Reglas de inferencia adicionales
 Podemos simplificar más las derivaciones a partir de F,
usando las siguientes reglas adicionales:
o If    holds and    holds, then     holds
(union)
o If     holds, then    holds and    holds
(decomposición)
o If    holds and     holds, then     holds
(pseudotransitividad)
Las reglas anteriores se pueden inferir a partir de los axiomas
de Armstrong.
Deducción
• Ejercicio:
– Sea R = (A,B,C,G,H,I),
– F = { A B, A C, CG  H, CG  I, B  H }
– Probar que las siguientes dependencias se
deducen de F: (se pueden usar reglas adicionales
a axiomas de Armstrong)
 A  B C H,
 A G B C H I.
Deducción
• Pregunta B: chequear si F ⊨ f .
• La pregunta B se reduce a chequear si F ⊢ f .
o Si no se tiene éxito con la deducción, buscar un contraejemplo, es
decir, una tabla legal donde se cumple F, pero no f.
• Pregunta A: se reduce a poder chequear para f ∊ G si G – {f} ⊨ f.
• La pregunta A se reduce a poder chequear para f ∊ G si G - {f} ⊢ f .
o Si no se tiene éxito con la deducción, buscar un contraejemplo, es
decir, una tabla legal donde se cumple G - {f}, pero no f.
• Evaluación:
o Con deducción no tenemos algoritmos automáticos para los chequeos
de los problemas A y B.
o A veces hay deducciones, pero las mismas no son fáciles de hallar.
Cierre de un conjunto de atributos
• Problema: F+ es demasiado grande y por eso resulta
demasiado costoso calcular F+ para ver si agregar o
no un nuevo axioma a F (problema B).
• Ahora veremos que para los fines de ver si agregar o
no un axioma a F (problema B) no es necesario
calcular todo F+.
• para responder si F ⊨ α  β, bastaría con calcular
{α  φ | F ⊨ α  φ } y chequear
α  β ∈ {α  φ | F ⊨ α  φ }
Cierre de un conjunto de atributos
• Por lo tanto: para responder si F ⊨ α  β, bastaría contestar
α  β ∈ {α  φ | F ⊨ α  φ } o mejor contestar:

β ∈ {φ | 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

• Ejercicio: Dados R = (A, B, C, G, H, I),


F = { A B, A C, CG  H, CG  I, B  H
Calcular A+F y (AG)+F
Cierre de un conjunto de atributos
Proposición: F ⊨ α  α+F
Prueba: sale aplicando unión finitas veces .
Proposición: F ⊨ α  β si y solo si β C α+F
(⟸) Sea β C α+F
F ⊨ α  α+ F por proposición anterior
F ⊨ α  β ⋃(α+F – β) por β C α+F
F⊨ αβ por descomposición.
(⟹) dice que α+F es máximo en ({β ⊆ R : F ⊨ α  β} ,⊆) .
Sea B ∈ β
F⊨αβ
F ⊨ α  B ⋃ (β – {B})
F⊨ αB por descomposición
B ∈ α+F por definición de α+F
Cierre de un conjunto de atributos
Hay varios usos para el cierre de un conjunto de
atributos. Aquí van algunos, pero hay muchos más.
 ¿Cómo chequear que  superclave de R?
Cierre de un conjunto de atributos
Hay varios usos para el cierre de un conjunto de
atributos. Aquí van algunos, pero hay muchos más.
 ¿Cómo chequear que  superclave de R?
o Para chequear si  es superclave, computar +, y chequear si +
contiene todos los atributos de R.
 ¿Cómo chequear si una DF    se cumple?
Cierre de un conjunto de atributos
Hay varios usos para el cierre de un conjunto de
atributos. Aquí van algunos, pero hay muchos más.
 ¿Cómo chequear que  superclave de R?
o Para chequear si  es superclave, computar +, y chequear si +
contiene todos los atributos de R.
 ¿Cómo chequear si una DF    se cumple?
+
o Para chequear si und DF    se cumple (i.e. si está en F ), chequear
si   +.
o Esta es una prueba barata, simple y muy útil.
Cierre de un conjunto de atributos
• Ejercicio: Dados R = (A, B, C, G, H, I),
F = { A B, A C, CG  H, CG  I, B  H }.
1. Probar que de F no se deduce A  I
2. Probar que AG es clave candidata.
Cierre de un conjunto de atributos
 Pregunta A: se reduce a poder chequear para f ∊ G si
o G – {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.

 Si f = α  β, la pregunta A se reduce a chequear:


 β C α+G - {αβ}

 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.

 Si f = α  β, la pregunta A se reduce a chequear:


 β C α+G - {αβ}

 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, DC }
– 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, DC }
– 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, DC }
– 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.

También podría gustarte