Está en la página 1de 41

DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios 1.

Nota:
• A, B, C, D, E, G, H , I son considerados atributos atómicos.
• W, X, Y , Z son considerados conjuntos de atributos atómicos.

Ejercicio 1. Sea R(A,B,C,D,E) con F = { A → B, B → D, C → E, E → B }.


¿ Cuáles de las siguientes relaciones de R satisfacen F ?.
a. b. c. d.
A B C D E A B C D E A B C D E A B C D E
a1 b1 c1 d1 e1 a1 b1 c1 d1 e1 a1 b1 c1 d1 e1 a1 b1 c1 d1 e1
a2 b2 c2 d1 e1 a2 b2 c2 d1 e2 a2 b1 c1 d2 e1 a1 b1 c2 d1 e1

Ejercicio 2. Sean las siguientes definiciones alternativas de dependencia funcional. Indicar cuales
son correctas y cuales no.

X → Y se cumple en R si y solo si:

a. ∀r de R se cumple: ∀t,u ∈ r, si t[X] = u[X], entonces t[Y] = u[Y].


b. ∀r de R se cumple: (¬∃) t, u ∈ r tal que t[X] = u[X] y t[Y] ≠ u[Y].
c. ∀r de R, ∀ t, u ∈ r, t[XY] = u[XY].
d. ∀r de R, no se repiten los valores de X en r.
e. ∀r de R, cada valor de X tiene un único valor asociado de Y.
f. ∀r de R, hay una correspondencia biunívoca entre valores de X y de Y.
g. ∀r de R, si t y u difieren en Y, deben diferir en X (∀t,u ∈ r).
h. ∀r de R, si t y u coinciden en Y, deben coincidir en X.

Ejercicio 3. Indicar cuales de las siguientes derivaciones para dependencias funcionales son válidas
demostrando o usando un contraejemplo.

a. { X →Y, Z → Y } ╞ XZ → Y. e. { XY → Z, Z → X } ╞ Z → Y.
b. { XZ → Y } ╞ X → Y. f. { X → Y, Y → Z } ╞ X → YZ.
c. { XZ → Y, X → Z } ╞ X → Y. g. { X → Y, W → Z, W ⊆ Y } ╞ X → Z.
d. { Z → W , X →Y } ╞ XZ →YW. h. { XY →Z, Y →W } ╞ XW →Z

Ejercicio 4. Sea R(A,B,C,D,E,G,H,I) y F = {AB → CH, CD → B, B → GAE, H → DI }. Calcular:


a. A+ c. (CD) + e. (BE) + g. (ABH) +
+ + +
b. B d. (BEI) f. (HA)

Ejercicio 5. Sea F = { AB → C, C → D, B → C, C → E, HB → D }. Decir cuales de las siguientes


dependencias funcionales están en F+:

a. B → D c. C → DE e. HA → CD g. A → D
b. E → D d. A → C f. CD → E

Ejercicio 6. Sea R(A B C D E G) y F = { AB → D, CD → G, E → A, A → C, BG → C, D → A }


a. Hallar las clausuras de los siguientes conjuntos de atributos
1
1. (AD) 3. (BC) 5. (B)
2. (D) 4. (EB) 6. (EBC)
b. ¿ Alguno de los conjuntos anteriores es superclave ?.
c. ¿ Alguno es clave ?.
d. Hallar todas las claves de R según F.

Ejercicio 7. Sea R(A, B, C, D, E, G, H) y el conjunto de dependencias funcionales


F = { AB → CDE, C → A, D → E, H → E, HE → G }
Hallar todas las claves. Justificar la respuesta.

Ejercicio 8. Sea R(A,B,C,D,E,G,H,I) y el conjunto de dependencias funcionales


F = { A → B, B → C, E → I, EGC → B, G → H , B → A }.
Dar todas las claves de R según F.

Ejercicio 9. Sea R(A,B,C,D,E) y F = { AB → C, C → DE, E → C }.


Decir cuáles de los conjuntos de dependencia funcionales son equivalentes a F. En caso de no serlo
dar relaciones de R que ejemplifiquen este hecho.
a. F1 = { AB → CDE, E → CD, C → D }.
b. F2 = { AB → D, D → C, C → DE, E → C }.
c. F3 = { AB → CDE, C → D, C → E, E → C, E → D }.
d. F4 = { A → C, B → C, C → DE, E → C }.

Ejercicio 10. Hallar recubrimientos minimales de los siguientes conjuntos.


a. {A → Β , B → C , C → D , D → E , E → A , A → C , C → Ε , E → Β , B → D , D → Α}.
b. {A → Β, AE → D, B → C, DH → C, C → D, CG → B, D → A, BF → Α}.

Ejercicio 11.
Un club esta organizando un campeonato de tenis individual. A cada persona que se inscribe se le
pide el nombre, la edad, el DNI y la fecha de vencimiento de la ficha médica. El torneo se juega en
un determinado conjunto de pistas de las que se conoce la dirección de cada una, un código que las
identifica, y si tienen iluminación o no. A partir de estos datos, se organizan los partidos del
campeonato con los siguientes criterios.
• A cada partido se le asigna un código que lo identifica dentro del torneo, una hora, una pista,
dos inscriptos diferentes (local y visitante), una etapa (eliminatorias, octavos, cuartos,
semifinales y final) y un ganador.
• No se pueden jugar dos partidos a la misma hora en la misma pista.
• En cada etapa, cada jugador juega un solo partido.
a. Indicar las dependencias funcionales que se cumplen en esta realidad.

2
DISEÑO DE BASES DE DATOS SOLUCION DEPENDENCIAS
FUNCIONALES

Ejercicio 1. Se tiene R(A,B,C,D,E) con F = { A → B, B → D, C → E, E → B }.

3
a. No satisface F. Viola E → B , ya que si la primer tupla se denomina t , y la
A B C D E segunda u , se tendrá que:
a1 b1 c1 d1 e1 t[E] = u[E] = e1 , pero t[B] ≠u[B]
a2 b2 c2 d1 e1 con lo que no se cumple la definición de dependencia funcional.

b. Satisface F, trivialmente, ya que para todo par de tuplas u, t en esta


A B C D E instancia de R y para toda dependencia funcional Att1 → Att2 en F, se
a1 b1 c1 d1 e1 cumple que: t[Att1] = u[Att1] con lo que la definición de dependencia
a2 b2 c2 d1 e2 funcional será valida en todos los casos planteables.

c. No satisface F. Viola B → D , ya que como se hizo en el caso b. si la


A B C D E primer tupla se denomina t , y la segunda u , se tendrá que:
a1 b1 c1 d1 e1 t[B] = u[B] = e1 , pero t[D] ≠ u[D]
a2 b1 c1 d2 e1 con lo que no se cumple la definición de dependencia funcional.

d. Satisface F, ya que para todo par de tuplas u, t en esta instancia de R y


A B C D E para toda dependencia funcional Att1 → Att2 en F, se cumple que:
a1 b1 c1 d1 e1 t[Att1] = u[Att1] → t[Att2] = u[Att2]
a1 b1 c2 d1 e1 es verdadero para toda combinación de Att1 y Att2 elegidas.

Se tendrán: (como antes, t es la primer tupla, u la segunda)


A → B: t[A] = u[A] = a1 y t[B] = u[B] = b1
B → D: t[B] = u[B] = b1 y t[D] = u[D] = d1
C → E: t[C] = u[C] , por lo que se cumple trivialmente
E → B: t[E] = u[E] = e1 y t[B] = u[B] = b1

Ejercicio 2.
DEFINICIÓN DE DEPENDENCIA FUNCIONAL:
Sea R(A1,...,An) un esquema relación, y X e Y subconjuntos de {A1,...,An}.
Decimos que X → Y, (que se lee X determina funcionalmente Y) si para toda instancia r del esquema de
relación R, no es posible que r tenga dos tuplas que coincidan en los atributos de X y no lo hagan en los
de Y.
a. Es correcta, corresponde directamente a la definición.
b. Idem a., pero usando "existe". (se establecen equivalencias lógicas)
Se tiene que ∀r de R:
∀t,u ∈ r, si t[X] = u[X] → t[Y] = u[Y] ≈
∀t,u ∈ r, si t[X] = u[X] o t[Y] = u[Y] ≈
(¬∃) t, u ∈ r tal que t[X] = u[X] y t[Y] = u[Y]. X Y Z
c. No es correcta, ya que obligaría a que los valores de X y Y fueran siempre x1 y1 z1 los
mismos, lo cual es más restrictivo que una fd. x 2 y1 z 2

No se viola X → Y, aun cuando [XY] es distinto para ambas tuplas


d. No es correcta, puede darse lo siguiente en R(X,Y,Z): X Y Z
x1 y1 z1
Se repiten valores de X y no se viola X → Y.
x1 y1 z2
e. Es correcta. Debe probarse que ∀r de R, cada valor de X tiene un único valor asociado de Y.
Asumiendo una instancia genérica r de R, se demostrara que la definición a. implica la definición e., y
recíprocamente.
Demostración:
a. ⇒ e.
En este caso es trivial, ya que por la definición a. , se tendrá que
∀r de R , ∀t,u ∈ r, si t[X] = u[X], entonces t[Y] = u[Y]
con lo que dadas dos tuplas con un mismo valor de X, solo el mismo valor de Y podrá
corresponderles a ambas.
e. ⇒ a.
Dadas dos tuplas cualesquiera de una instancia, pueden suceder dos cosas:
• t[X] = u[X]: En este caso, se cumple que existe un único valor de Y asociado a X por lo que tb
valdrá que t[Y] = u[Y]
• t[X] ≠ u[X] : En este caso, se cumple trivialmente que: t[X] = u[X] → t[Y] = u[Y]
Por lo tanto, se cumple que e. ⇔ a., con lo que esta definición de dependencia funcional es
equivalente a la seleccionada al principio, y por lo tanto correcta.

f. No es correcta, puede darse lo siguiente en


R(X,Y,Z): X Y Z
No hay una correspondencia biunívoca y no se viola X x1 y1 z1
→ Y. x2 y1 z1

g. Es correcta, es equivalente a a. pero sin usar implicación. (como en el caso b.) se aplican
equivalencias lógicas)
La definición general es de la forma: ∀t, u ∈ r, si t[X] = u[X] → t[Y] = u[Y] la cual se vio es
equivalente a: ∀t, u ∈ r, si t[X] ≠ u[X] o t[Y] = u[Y]
Al analizar esta ultima, se nota que cualquier par de tuplas, si difieren en Y, necesariamente, para obtener una condición
verdadera, deberá ser diferentes en X, ya que de no serlo, el valor de verdad de la expresión no se mantiene.
h. No es correcta, el mismo contraejemplo que en el caso f. es aplicable aquí también.

Ejercicio 3. Aplicando las reglas de Armstrong se tendrá que:

a. { X → Y, Z → Y } ╞ XZ → Y
Se cumple
X → Y ╞ ZX → YZ Aumento
ZX → YZ ╞ ZX → Y Descomposición

b. { XZ → Y } ╞ X → Y X Y Z
No se cumple. Ver este contraejemplo: R(X,Y,Z) x1 y1 z1
Esta relación satisface XZ → Y, pero no x1 y2 z2
satisface X → Y.
c. { XZ → Y, X → Z }╞ X → Y
Se cumple
X→X Reflexiva (X ⊇ X)
{ X → Z , X → X }╞ X → XZ Unión
{ X → XZ , XZ →Y }╞ X → Y Transitiva

d. { Z → W , X → Y }╞ XZ → YW.
Se cumple
X → Y ╞ XZ → YZ Aumento
Z → W╞ ZY → WY Aumento
{ XZ → YZ , YZ → WY } ╞ XZ → YW. Transitiva

e. { XY → Z, Z → X } ╞ Z → Y

No se cumple. Ver el siguiente contraejemplo: X Y Z


R(X,Y,Z) x1 y1 z1
Esta relación satisface XY → Z y Z→ X, pero x1 y2 z1
no satisface Z → Y.
f. { X → Y, Y → Z } ╞ X → YZ
Se cumple
{ X → Y, Y → Z } ╞ X → Z Transitiva
{ X → Z , X → Y } ╞ X → YZ Unión

5
g. { X → Y, W → Z, W ⊆ Y } ╞ X → Z
Se cumple
Y→W Reflexiva (Y ⊇ W)
{ X → Y ,Y → W, W → Z }╞ X → Z Transitiva dos veces

h. { XY → Z, Y → W } ╞ XW → Z
No se cumple. Ver el siguiente contraejemplo: w1 x1 y1 z1
R(W,X,Y,Z)Esta relación satisface XY → Z y Y w1 x1 y2 z2
→ W pero no satisface XW → Z.

W X Y Z
Ejercicio 4.
Sea R(A,B,C,D,E,G,H,I) y F = { AB → CH, CD → B, B → GAE, H → DI }.
En cada uno de los casos siguientes se determinaran las clausuras de cada conjunto de atributos a
través de los axiomas de Armstrong.
La idea al aplicar la clausura es tratar de obtener los demás atributos de la relación, por lo que siempre
trataran de inferirse estos a través de aplicaciones de las reglas anteriores.

a. (A)+ = { A }
Considero el conjunto de partida{ A }
{A}╞ A→ A Reflexiva (A ⊆ A)
Partiendo de A, no es posible inferir otros atributos distintos de la relación R.
En este caso se observa claramente que no es posible "escaparse" del nodo A, por lo que la
clausura estará compuesta solo por A.

b. (B)+ = { B, G, A, E, C, H, D, I }
Considero el conjunto de partida{ B }
{B}╞ B→ B Reflexiva (B ⊆ B)
{ B } ╞ B → GAE dependencia funcional en F
el conjunto de trabajo pasa a:
{ B,G,A,E } ╞ AB → CH dependencia funcional en F
el conjunto de trabajo pasa a:
{ B,G,A,E,C,H } ╞ H → DI dependencia funcional en F
el conjunto de trabajo pasa a:
{ B,G,A,E,C,H,D,I }

Se finaliza el proceso debido a que el resultado es el esquema de la relación.


Para los demás casos, el mecanismo formal para deducir la clausura, es utilizar las reglas de
Armstrong, pero como ayuda puede utilizarse el grafo antes planteado.
Planteamos a continuación los resultados de las clausuras.

c. (CD) + = { C, D, B, G, A, E, H, I }
d. (BEI) + = { B, E, I, G, A, C, H, D }
e. (BE) + = { B, E, G, A, C, H, D, I }
f. (HA) + = { H, A, D, I }
g. (ABH) + = { A, B, H, C, D, I, B , E }

Ejercicio 5.
Sea F = { AB → C, C → D, B → C, C → E, HB → D }.
Se van a calcular los X+F correspondientes a cada dependencia funcional X → Y ∈ F, utilizando las
mismas técnicas que en Ej. anterior. Se concluirá que esta dependencia funcional
X → Y ∈ F+ en caso de que Y ∈ X+.

a. (B) + = { B, C, D, E }, D ∈ B+ ⇒ (B → D) ∈ F+.

6
b. (E) + = { E }, D ∉ E+ ⇒ (E → D) ∉ F+.
c. (C) + = { C, D, E }, D,E ∈ C+ ⇒ (C → DE) ∈ F+.
d. (A) + = { A }, C ∉ A+ ⇒ (A → C) ∉ F+.
e. (HA) + = { H, A }, C,D ∉ (HA) + ⇒ (HA → CD) ∉ F+.
f. (CD) + = { C, D, E }, E ∈ (CD) + ⇒ (CD → E) ∈ F+.
g. (A) + = { A }, D ∉ A+ ⇒ (A → D) ∉ F+.

Ejercicio 6. Sea R(A B C D E G) y F = { AB → D, CD → G, E → A, A → C, BG → C, D → A }.


a. Se aplican las mismas técnicas obtenidas de los ejercicios anteriores.
1. (AD) + = { A , D, C, G } 4. (EB) + = { E, B, A, C, D, G }
2. (D) + = { D, A, C, G } 5. (B) + = { B }
+
3. (BC) = { B, C } 6. (EBC) + = { E, B, C, A, D, G }
b. Los conjuntos (EB) y (EBC) son superclave, ya que su clausura contiene a todos los atributos de la
relación.
c. El conjunto que podría ser clave es (EB), pero primero hay que verificar que no contiene una clave.
(E) + = { E, A, C } no es clave. (B) + = { B } no es clave. (EB) es clave
d. B y E no quedan determinados por ningún otro conjunto de atributos, porque nunca aparecen en la
parte derecha de ninguna fd por lo que estarán contenidos en todas las claves. Pero (BE) es clave
(por c.), por lo tanto no habrá otra clave, porque si la hubiera debería contener a (BE) y entonces
sería superclave. La única clave es (BE)

Ejercicio . Se aclara que el siguiente conjunto de propiedades puede resultar muy útil a la hora de
determinar las claves de un esquema de relación, así como también al obtener recubrimientos
minimales y clausuras.
a. Si existe X t.q. X no aparece en ninguna dependencia funcional, entonces X está en toda
clave.
Por absurdo, supongo que Z clave tq. X ⊄ Z.
Si Z es clave, entonces se cumple Z → X.
Si Z →X entonces, o bien X ⊆ Z (que contradice la hipótesis), o bien Z → X es una fd no trivial, lo
cual contradice que X no aparece en ninguna fd.
ABSURDO, X pertenece a toda clave.
b. Si existe X t.q. X no está a la derecha de ninguna dependencia funcional, X está en toda clave.
Por absurdo, supongo que Z clave tq. X ⊄ Z.
Si Z es clave, entonces se cumple Z → X.
Si Z → X entonces, o bien X ⊆ Z (que contradice la hipótesis), o bien Z → X es una fd
no trivial, lo cual contradice que X no aparece a la derecha de ninguna fd.
ABSURDO, X pertenece a toda clave.
ACLARACION INTERESANTE: juntando las partes a. y b. , pudo haberse demostrado en primera
instancia la parte b. para luego afirmar que si X no aparece en ninguna dependencia funcional,
entonces obviamente no aparece a la derecha de ninguna dependencia funcional, por lo que por la
parte b. , estará en toda clave.
c. Si existe X t.q. X no está a la derecha de ninguna dependencia funcional, X es clave y es
única.
No se cumple. Contraejemplo: R(A,B,C) y F = { A →B }
En este caso A está en las hipótesis y no es clave (y aun menos única).
d. Si existe X t.q. X no está a la derecha de ninguna dependencia funcional y X es superclave, X
es clave y es única.
Por b. X esta en toda clave. O sea, toda clave contiene a X. Como X es superclave, X determina
funcionalmente al resto de los atributos.
ES CLAVE.
Notar que es minimal porque no hay clave que no contenga a TODA X.
Es única, porque si hubiera otra clave, debería contener a X; y como X ya es clave la otra sería
superclave.

7
e. Si existe X t.q. X aparece a la izquierda de alguna dependencia funcional y es superclave, hay una
sola clave y es X.
No se cumple. Contraejemplo: R(A,B,C), con F = { AC → B, A → BC }.
(AC) es superclave y aparece a la izq. de (AC → B), sin embargo no es clave ya que A lo es.

Ejercicio 7. Sea R(A,B,C,D,E,G,H) y el conjunto de dependencias funcionales


F = { AB → CDE, C → A, D → E, H → E, HE → G }
Aplicando proposiciones. del Ej. anterior, se sabe que:
(BH) está en todas las claves, ya que no aparecen del lado derecho de ninguna dependencia funcional.
Verifico si es superclave: (BH) + = { B, H, E, G } no es superclave.
Considero los conjuntos de tres atributos que contienen a (BH):
(BHA) + = { B, H, A, E, G, C, D } ⇒ (BHA) es clave.
(BHC) + = { B, H, C, E, G, A, D } ⇒ (BHC) es clave.
(BHD) + = { B, H, D, E, G }
Debido a que E y G están en (BH) + , y (BH) debe estar en toda clave, se deduce que G y E nunca
estarán en alguna clave, ya que estos pueden deducirse siempre. Por esto, en realidad resulta
innecesario hacer:
(BHE) + = { B, H, E, G } (BHG) + = { B, H, G, E }
¿ Existirán más claves ? Si existen contienen a (BH) y no a A ni a C, porque sino serían superclaves.
Entonces considero X = R - {AC} y verifico si es superclave.
X+ = (BDEGH) + = { B, D, E, G, H }, no es superclave, por lo que ningún subconjunto de X lo será, por lo
que no hay superclaves que no contengan A ni C, por lo que no hay claves que no contengan ni A ni C.
Por lo que no hay mas claves.
Las únicas claves son (BHA) y (BHC).
Ejercicio 8. R(A,B,C,D,E,G,H,I). F = { A →B, B →C, E →I, EGC →B, G →H, B →A }
D no está en ninguna fd, entonces está en toda clave. H I no están nunca a la izquierda en fds,
entonces no sirven para determinar a ningún atributo, entonces no están en ninguna clave. E y G no
están a la derecha de ninguna dependencia, entonces están en toda clave.
Pruebo con (E,G,D), (EGD)+ = { E, D, G, I, H }, no es superclave, entonces no es clave.
Pruebo con claves de cuatro atributos:
(EGDA) + = { D, A, B, C, E, G, I, H } es clave
(EGDB) + = { D, B, C, E, G, I, H, A } es clave
(EGDC) + = { D, C, B, E, I, H, A, G } es clave
No hay mas, pues si no serían superclaves. LAS CLAVES SON: (EGDA), (EGDB), (EGDC).
Ejercicio 9. F = { AB →C, C →DE, E →C }
a. F1 = { AB →CDE, E →CD, C →D } No son equivalentes. A B C D E
Sea la siguiente relación: R(A,B,C,D,E) a1 b1 c1 d1 e1
Satisface F1 pero no F. (C →E) ∉ F1+ a1 b2 c1 d1 e2
b. F2 = { AB →D, D →C, C →DE, E →C } No son equivalentes. A B C D E
Sea la siguiente relación: R(A,B,C,D,E) a1 b1 c1 d1 e1
Satisface F pero no F2. (D →C) ∉ F+ a1 b2 c2 d1 e2
c. F3 = { AB →CDE, C →D, C →E, E →C, E →D }
Son equivalentes. Para eso verificaremos que cada fd de un conjunto está en la clausura del otro.
F ⊆ F3+: F3 ⊆ F+ :
(AB) +F3 = { A, B, C, D, E } ⇒ (AB →C) ∈ F3+. (AB) +F = { A, B, C, D, E } ⇒ (AB →CDE) ∈ F+.
(C) F3 = { C, D, E } ⇒ (C →DE) ∈ F3 .
+ +
(C) +F = { C, D, E } ⇒ {C →D,C →E} ∈ F+.
(E) +F3 = { E, C, D } ⇒ (E →C} ∈ F3+. (E → C) ∈ F.
(E)+F = { E, C, D } ⇒ (E →D) ∈ F+.

8
d. F4 = { A →C, B →C, C →DE, E →C } A B C D E
No son equivalentes. Sea la siguiente relación: R(A,B,C,D,E) a1 b1 c1 d1 e1
Satisface F pero no F4. (A →C, B →C) ∉ F+ a1 b2 c2 d1 e2

9
Ejercicio 10.
c. {A → Β , B → C , C → D , D → E , E → A , A → C , C → Ε , E → Β , B → D, D → Α}.

NOTA: solución sin algoritmo.


Buscamos un cubrimiento minimal de este conjunto. Si observamos las dependencias que este
contiene, veremos que el subconjunto: F1 = { A → Β , B → C , C → D , D → E , E → A }
forma un ciclo en las dependencias. Por lo tanto, todas estas son esenciales en el cubrimiento.
El otro subconjunto: F2 = {A → C , C → Ε , E → Β , B → D, D → Α}
forma otro ciclo en las dependencias, pero con respecto al anterior, esta desfasado. Es
análogo a representar todos los atributos en un grafo, y considerar las dependencias cono
aristas dirigidas desde el atributo a la izquierda, hacia el atributo a la derecha.
Podemos probar que ambos conjuntos son equivalentes: F1 ⊆ F2+:
Debido a los ciclos presentes en las dependencias, podemos afirmar que:
A+F2 = B+F2 = C+F2 = D+F2 = E+F2 = { A, B, C, D, E } , por lo que
A → Β ∈ F2 + . B → C ∈ F2+. C → D ∈ F2+. D → E ∈ F2+. E → A ∈ F2+.
F2 ⊆ F1+:
Como antes, también se cumple: A+F1 = B+F1 = C+F1 = D+F1 = E+F1 = { A, B, C, D, E } , por
lo que
A → Β ∈ F1 + . B → C ∈ F1+. C → D ∈ F1+. D → E ∈ F1+. E → A ∈ F1+.
Por lo que F2+ = F1+
a su vez, estos dos últimos conjuntos son minimales, ya que se cumplen las condiciones en la
definición. Es más sencillo constatarlo gráficamente, ya que remover una dependencia es
análogo a remover una arista del grafo. Lo que sucederá, es que no se podrá cerrar el circuito,
con lo que el conjunto ya no será equivalente .

Por lo tanto, los siguientes conjuntos son cubrimientos minimales del conj. original
F1 = { A → Β , B → C , C → D , D → E , E → A }
F2 = {A → C , C → Ε , E → Β , B → D, D → Α}

d. {A → Β, AE → D, B → C, DH → C, C → D, CG → B, D → A, BF → Α}.
El siguiente es el minimal del conjunto anterior: F = { A → Β, B → C, C → D, D → A}

10
Diseño de bases de datos. Normalización. Curso 2000/2001

Ejercicio 1. Sea el esquema relación R(A, B, C, D, E, G, H) con A, B, C, D, E, G, y H atributos atómicos y el


conjunto de dependencias funcionales:
F = { CDG→EB, AB→C, A→D, ABC→E, B→E, CDE→A }
a. Hallar todas las claves. Justificar la respuesta.
b. Hallar un cubrimiento minimal de F en R. Mostrar los pasos seguidos.
c. Dada la descomposición τ = (R1, R2) siendo: R1 (A, B, C, E) y R2 (C, D, E, G, H)
Decir si (Justificar adecuadamente todas las respuestas):
1. ¿Es descomposición con join sin pérdida?
2. ¿Preserva dependencias?
3. ¿En que forma normal se encuentra R1 y R2 ?
d. Utilizando F, llevar R a 3NF con join sin pérdida y preservación de dependencias.
e. Llevar la descomposición de la parte d. a FNBC con join sin pérdida. Indicar si se pierden dependencias
funcionales y cuales.

Ejercicio 2. R(A,B,C,D,E,H,G) , F = { AB → CED, C → Α, D → Ε, EH → G}


a. Claves de R según F.
b. Hallar un cubrimiento minimal de F en R. Mostrar los pasos seguidos.
c. Sea la descomposición:
R(A,B,C,D,E,H,G) F = { AB → CED, C → Α, D → Ε, EH → G}
R1(A,B,D,E) FR1 = { AB → D, D → E }
R2(A,B,C,H,G) FR2 = { AB → C, C → A }
1. ¿ Es una descomposición con join sin pérdida ?
2. ¿ Preserva las dependencias ?
3. ¿ En qué forma normal se encuentran R1 y R2 ?
d. Llevar R a 3NF con join sin pérdida y preservación de dependencias.
e. Llevar la descomposición de la parte d. a BCNF con join sin pérdida. Indicar si se pierden dependencias
funcionales y cuales.

Ejercicio 3. Enunciado de campeonato de tenis individual.

b. Teniendo en cuenta las dependencias encontradas, indicar en que forma normal se encuentra el
esquema que contiene todos los atributos. Si no se encuentra en una forma normal "aceptable",
normalícela hasta que así lo considere. Justifique las respuestas.

Ejercicio 4. Se quiere modelar una base de datos de información histórico-política e histórico-administrativa de


las calles de una ciudad, así como información sobre los hospitales y zonas deportivas sobre las mismas.
La información histórico-política de interés se refiera al año en que fue inaugurada la calle así como el nombre
del intendente en ejercicio.
La información histórico-administrativa que se desea mantener es la identificación del plano de construcción de
la calle en cuestión, así como la empresa constructora que estuvo a cargo del diseño de dicho plano. El plano
de construcción de la calle consiste del diseño de la misma y el identificador del plano es una referencia que se
utiliza a fin de ubicarlo en el archivo de planos que mantiene la intendencia. Desde ahora al plano de
construcción lo llamaremos simplemente plano de la calle.
Se sabe que una calle tiene tanto un número de calle como un nombre y que cada uno identifica a la calle. El
número de calle determina en forma única tanto el nombre de la calle como el identificador del plano de la calle
y la empresa constructora. A su vez el número de la calle y la identificación del plano de la calle y la empresa
constructora son únicos dado el nombre de la calle.
El nombre de la calle fue elegido durante el ejercicio de un intendente, es decir que el nombre del intendente
queda determinado por el nombre de la calle.
Dado el nombre y el número de la calle y el nombre del intendente queda determinado el año de inauguración
de la calle.
Se sabe que una identificación del plano de una calle puede describir a distintas calles, pero un plano es
diseñado por una única empresa constructora.

11
Las mismas empresas que se encargaron de diseñar los planos de las calles, construyeron hospitales y zonas
deportivas. En la construcción de un hospital ó de una zona deportiva designa un único ingeniero responsable.
A su vez dichos ingenieros trabajan en una única empresa constructora.

a. Identifiquen las dependencias funcionales.


b. Hallar todas las claves.
c. Obtenga un cubrimiento minimal de F.
d. Obtenga esquema en FN3.
e. Obtenga esquema en FNBC.

12
Diseño de bases de datos. Soluciones Normalización.

Ejercicio 1. Sea el esquema relación R(A, B, C, D, E, G, H) con A, B, C, D, E, G, y H atributos


atómicos y el conjunto de dependencias funcionales:
F = { CDG→EB, AB→C, A→D, ABC→E, B→E, CDE→A }
f. Hallar todas las claves. Justificar la respuesta.
g. Hallar un cubrimiento minimal de F en R. Mostrar los pasos seguidos.
h. Dada la descomposición τ = (R1, R2) siendo: R1 (A, B, C, E) y R2 (C, D, E, G, H)
Decir si (Justificar adecuadamente todas las respuestas):
4. ¿Es descomposición con join sin pérdida?
5. ¿Preserva dependencias?
6. ¿En que forma normal se encuentra R1 y R2 ?
i. Utilizando F, llevar R a 3NF con join sin pérdida y preservación de dependencias.
j. Llevar la descomposición de la parte d. a BCNF con join sin pérdida. Indicar si se pierden
dependencias funcionales y cuales.
Solución.
a. Claves de R según F: G y H pertenecen a toda clave, ya que no están a la derecha de
ninguna dependencia funcional. (GH)+ = {G, H} ⇒ (GH) no es clave.
Busco entonces claves con 3 atributos:
(GHA)+ = {G, H, A, D} ⇒ (GHA) no es clave; (GHB)+ = { G, H, B, E} ⇒ (GHB) no es clave
Busco claves con 4 atributos:
(GHAB)+ = {G, H, A, B, D, E, C} ⇒ (GHAB) es clave ;
(GHAC)+ = {G, H, A, C, D, E, B} ⇒ (GHAC) es clave ;
(GHAD)+ = {G, H, A, D} ⇒ (GHAD) no es clave ; (GHAE)+ = {G, H, A, E} ⇒ (GHAE) no es clave
;
(GHBC)+ = {G, H, B, C} ⇒ (GHBC) no es clave ; (GHBD)+ = {G, H, B, D, E} ⇒ (GHBD) no es
clave;
(GHBE)+ = {G, H, B, E} ⇒ (GHBE) no es clave;
(GHCD)+ = {G, H, C, D, E, B, A} ⇒ (GHCD) es clave ;
(GHCE)+ = {G, H, C, E} ⇒ (GHCE) no es clave ; (GHDE)+ = {G, H, D, E} ⇒ (GHDE) no es
clave;
Busco claves con 5 atributos:
(GHADE)+ = {G, H, A, D. E} ⇒ (GHADE) no es clave;
(GHBCE)+ = {G, H, B, C, E) ⇒ (GHBCE) no es clave
(GHBDE)+ = {G, H, B, D, E} ⇒ (GHBDE) no es clave
Las claves son (GHAB), (GHAC) v (GHCD)

b. Hallar un cubrimiento minimal de F en R. Mostrar los pasos seguidos.


1. Llevar todas las dependencias funcionales a la forma X → Att, donde Att es un solo
atributo.
F1 = { CDG → E, CDG → B, AB → C, A → D, ABC → E, B → E, CDE → A}
2. Eliminar atributos redundantes a la izquierda.
(B)+F2 = {B, E} ⇒ A y C son redundantes ⇒ F2 = ( F1 − { ABC → E } ) ∪ { B →E }
F2 = { CDG → E, CDG → B, AB → C, A → D, B → E, CDE → A }
13
(Como es un conjunto (unión), no colocamos dos veces a B → E)
Realizando el mismo procedimiento, se comprueba que la anterior es la única dependencia
que contiene atributos redundantes a la izquierda.

3. Eliminación de dependencias redundantes


F' = F2 − { CDG → E };
(CDG)+F, = {C,D,G,B,E} ⇒ CDG → B es una dependencia redundante en F2 ⇒ F3 = F'
F' = F3 − { CDG → B }; (CDG)+F, = {C,D,G} ⇒ CDG → B no es redundante en F3
F' = F3 − { AB → C }; (AB)+F, = {A,B,D,E} ⇒ AB → C no es redundante en F3
F' = F3 − { A → D }; (A)+F, = {A} ⇒ A → D no es una dependencia redundante en F3
F' = F3 − { B → E }; (B)+F, = {B} ⇒ B → E no es una dependencia redundante en F3
F' = F3 − { CDE → A }; (CDE)+F, = {C,D,E} ⇒ CDE → A no es una dependencia redundante
en F3
Se deduce entonces que el conjunto minimal es:
Fminimal = F3 = { CDG → B, AB → C, A → D, B → E, CDE → A }

c. τ = (R1, R2 ) siendo : R1(A,B,C,E) y R2 (C,D,E,G,H)


Tendremos:
R(A,B,C,D,E,G,H) F = { CDG →EB, AB →C, A →D, ABC →E, B →E, CDE →A }
R1(A,B,C,E) R2(C,D,E,G,H)
1. ¿ La descomposición tiene join sin pérdida?
R1 ∩ R2 = (CE), R1 − R2 = (AB) y R2 − R1 = (DGH)
CE → AB ∉ F+ y CE → DGH ∉ F+
Por la propiedad DPSP1 la descomposición no tiene join sin pérdida.
2. ¿ Preserva dependencias? πR1(F) = { AB → C, B → E}, πR2(F) = { CDG → E} ;
K = { AB → C, B → E } ∪ { CDG → E }
Estudiamos si Fminimal ≅ K; (CDG)+K = { C,D,G,E} ⇒ CDG → B no se satisface en K ⇒ Los
conjuntos no son equivalentes, por lo que se puede afirmar que no se preservan las dfs.
3. ¿ En que forma normal se encuentra R1 y R2 ?
R1(A,B,C,E) FR1 = { AB → CE }, Claves: (ABC) ⇒ R1 esta en BCNF
R2(C,D,E,G,H) FR2 = { CDG → E }, Claves: (CDGH) ⇒ CDG → E , E depende
parcialmente de
la clave CDGH, y E no es primo, por lo que esta viola
2NF.
El esquema esta en 1NF.
d. Utilizando F, llevar R a 3NF con join sin pérdida y preservación de dependencias.
R(A,B,C,D,E,G,H), Fminimal = { CDG → B, AB → C, A → D, B → E, CDE → A }
Claves de R: (GHAB), (GHAC) ,(GHCD)
Aplicando directamente el algoritmo, obtenemos:
ρ3NF = { (CDGB), (ABC), (AD), (BE), (CDEA) } ∪ { (GHAC) }
No se agrega H como subesquema separado, ya que al agregar el esquema que contiene una
clave de R, H queda incluido en él, por lo que no será necesario tenerlo aparte.
Debido a que (AD) está incluido en (CDEA), eliminamos (AD).
ρ3NF = { (CDGB), (ABC), (BE), (CDEA) } ∪ { (GHAC) }
14
e. Llevar la descomposición de la parte d. a BCNF con join sin pérdida. Indicar si se
pierden dependencias funcionales y cuales.
R(A,B,C,D,E,G,H)Fminimal = { CDG → B, AB → C, A → D, B → E, CDE → A }
Se tiene la siguiente descomposición en 3NF:
R1(CDGB) FR1 = { CDG → B } | R2(ABC) FR2 = { AB → C }
R3(BE) FR3 = { B → E } | R4(CDEA) FR4 = { CDE → A , A → D }
R5(GHAC) FR5 = { }
Si observamos, no se pierden dependencias, y tiene JSP gracias al algoritmo de la parte
anterior. Además, cada subesquema esta en BCNF, salvo R4(CDEA) , en el cual CDE es clave,
pero A → D viola BCNF, ya que A no es superclave.
Por tal motivo, como esa dependencia es la causante de problemas, descomponemos
utilizando el algoritmo para llevar a BCNF, usando la dependencia A → D. Obtenemos así:
R4(CDEA) FR4 = { CDE → A , A → D } , A → D viola BCNF
R41(AD) FR41 = { A → D } Claves: (A) ⇒ R41 esta en BCNF
R42(CEA) FR42 = { } Claves: (CEA) ⇒ R42 esta en BCNF

Los esquemas obtenidos están en BCNF, pero la dependencia CDE → A se perdió.

Ejercicio. R(A,B,C,D,E,H,G) , según F = { AB → CED, C → Α, D → Ε, EH → G}

f. Claves de R según F.
B y H pertenecen a toda clave, ya que no están a la derecha de ninguna dependencia
funcional.
Analizamos la clausura de este conjunto de atributos, a fin de determinar que se obtiene a
partir de ellos, y no debe incluirse el las claves de R. (Podrían utilizarse técnicas gráficas como
las del Practico 6, pero evitaremos estas por ahora.)
(BH)+ = { B, H } ⇒ (BH) no es clave.
Busco entonces claves con 3 atributos:
(BHA)+ = { B,H,A,C,E,D,G } ⇒ (BHA) es clave
(BHC)+ = { B,H,C,A,E,D,G } ⇒ (BHC) es clave
(BHD)+ = { B,H,D,E,G } ⇒ (BHD) no es clave
+
(BHE) = { B,H,E,G } ⇒ (BHE) no es clave
(BHG)+ = { B,H,G } ⇒ (BHG) no es clave
Busco claves con 4 atributos:
(BHDE)+ = { B,H,D,E,G } ⇒ (BHDE) no es clave
(BHDG)+ = { B,H,D,G,E } ⇒ (BHDG) no es clave
(BHEG)+ = { B,H,E,G } ⇒ (BHEG) no es clave
Busco claves con 5 atributos:
(BHDEG)+ = { B,H,D,E,G } debido a que (BHDE)+ = { B,H,D,E,G } ⇒ (BHDE) no es clave
Se deduce entonces que las claves son (BHA) y (BHC)

g. Hallar un cubrimiento minimal de F en R. Mostrar los pasos seguidos.


1. Primer paso, llevar todas las dependencias funcionales a la forma X → Att, donde Att es un
solo atributo.
F1 = { AB → C, AB → E, AB → D, C → A, D → E, EH → G }
2. Segundo paso, eliminar atributos redundantes a la izquierda.
(A)+ = {A}⇒ B no es redundante en AB → C, AB → E y AB → D
(B) + = {B}⇒ A no es redundante en AB → C, AB → E y AB → D
(E) + = {E}⇒ H no es redundante en EH → G
(H) + = {H}⇒ E no es redundante en EH → G
15
F 2 = F1
3. Tercer paso, eliminación de dependencias redundantes
F' = F2 − { AB → C }; (AB)+F, = {A,B,E,D} ⇒ AB → C no es una dependencia redundante en
F2
F' = F2 − { AB → E }; (AB)+F, = {A,B,C,E,D} ⇒ AB → E es una dependencia redundante en
F2
F3 = F'
F' = F3 − { AB → D }; (AB)+F, = {A,B,C} ⇒ AB → D no es una dependencia redundante en F3
F' = F3 − { C → A }; (C)+F, = {C} ⇒ C → A no es una dependencia redundante en F3
F' = F3 − { D → E }; (D)+F, = {D} ⇒ D → E no es una dependencia redundante en F3
F' = F3 − { EH → G }; (EH)+F, = {E,H} ⇒ EH → G no es una dependencia redundante en F3
Se concluye entonces que
Fminimal = F3 = { AB → C, AB → D, C → A, D → E, EH → G }

h. Sea la descomposición:
R(A,B,C,D,E,H,G)F = { AB → CED, C → Α, D → Ε, EH → G}
R1(A,B,D,E) FR1 = { AB → D, D → E }
R2(A,B,C,H,G) FR2 = { AB → C, C → A }

4. ¿ Es una descomposición con join sin pérdida ?


R1 ∩ R2 = (AB), R1 − R2 = (DE) y R2 − R1 = (CHG)
AB → DE ∈ F+ ⇒ Por la propiedad LJ1 la descomposición es con join sin pérdida.

5. ¿ Preserva las dependencias ?


πR1(F) = FR1 = { AB → D, D → E }, πR2(F) = FR2 = { AB → C, C → A }
K = { AB → D, D → E } ∪ { AB → C, C → A }
considero la dependencia EH → G; (EH)+K = { E,H }
por lo que al no estar G en el resultado de la clausura, no se conservan las dependencias.
6. ¿ En qué forma normal se encuentran R1 y R2 ?
R1(A,B,D,E), (AB) única clave.
D → E es una dependencia transitiva ⇒ viola 3NF ⇒ R1 está en 2NF
R2(A,B,C,H,G), { (ABHG) ,(CBHG) } son claves
AB → C , donde (AB) no es superclave viola BCNF. No hay dependencias transitivas ni
parciales (todos los atributos son primos) ⇒ R2 está en 3NF

i. Llevar R a 3NF con join sin pérdida y preservación de dependencias.


Utilizando el algoritmo visto en teórico, y partiendo del conjunto minimal planteado, llegamos a:
1. Fminimal = F3 = { AB → C, AB → D, C → A, D → E, EH → G }
2. Se juntan en un único esquema relación todas las dependencias de la forma X → Ai, para
formar
R(X,A1,A2,...,An)
Obtenemos: { R1(A,B,C,D) , R2(C,A) , R3(D,E) , R4(E,H,G) }
3. Se colocan todos los atributos que no se colocaron antes, en un único esquema de
relación.
No se da en este caso. Podemos simplificar la descomposición, quitando los subesquemas
incluidos dentro de otros.
Obtenemos: { R1(A,B,C,D) , R2(D,E) , R3(E,H,G) }
4. Si ninguno de los subesquemas contiene una clave de R, se agrega un esquema relación
mas que contenga los atributos que forman una clave de R.
Se agrega un esquema con la clave de R, R5(B,H,A)
Se obtiene entonces:
R(A,B,C,D,E,H,G) F = { AB → CED, C → Α, D → Ε, EH → G}
16
R1(A,B,C,D) FR1 = { AB → CD, C → Α }
R2(D,E) FR2 = { D → Ε }
R3(E,G,H) FR3 = { EH → G}
R4(A,B,H) FR4 = { }
ρ3NF = { (ABCD), (DE), (EGH), (BHA) }

j. Llevar la descomposición de la parte d. a BCNF con join sin pérdida. Indicar si se pierden
dependencias funcionales y cuales.
En la descomposición anterior sólo R1(A,B,C,D) está en 3NF, los demás están en BCNF.
R1 está en 3NF y no en BCNF, ya que la dependencia C → A viola BCNF (C no es
superclave).
Por lo tanto descomponemos está en dos:
R1(A,B,C,D) FR1 = { AB → CD, C → Α }, Claves: (AB, BC) , C → A viola BCNF

R11(B,C,D) FR11 = { } , Clave: (BCD)


R12(C,A) FR12 = { C → A } , Clave: (C)
ρBCNF = { (BCD), (CA), (DE), (EGH), (BHA) }

Aclaramos que: La nueva descomposición tiene join sin pérdida, ya que la anterior
descomposición a 3NF tenía jsp. Sin embargo, si se pierden dependencias, ya que antes de
aplicar el algoritmo se disponía de:
R1(A,B,C,D) F1 = { AB → C, AB → D, C → A } R2(D,E) F3 = { D → E }
R3(E,H,G) F4 = { EH → G } R4(B,H,A) F5 = { }
Donde claramente la unión de las proyecciones de las dependencias funcionales, es el
conjunto minimal de partida (Fminimal), por lo que las dependencias se preservan. Sin embargo,
al particionar R1, se obtiene R11(B,C,D) FR11 = { } con lo que las dependencias { AB → C, AB
→ D } se pierden. (se comprueba a simple vista, al unir las proyecciones de las dependencias
en BCNF, y tratar de deducir AB → C de dicho conjunto).

Ejercicio 3.

Un club esta organizando un campeonato de tenis individual. A cada persona que se inscribe se le
pide el nombre, la edad, la DNI y la fecha de vencimiento de la ficha médica. El torneo se juega en
un determinado conjunto de pistas de las que se conoce la dirección de cada una, un código que
las identifica, y si tienen iluminación o no. A partir de estos datos, se organizan los partidos del
campeonato con los siguientes criterios:
• A cada partido se le asigna un código que lo identifica dentro del torneo, una hora, una pista,
dos inscritos diferentes (local y visitante), una etapa (eliminatorias, octavos, cuartos,
semifinales y final) y un ganador.
• No se pueden jugar dos partidos a la misma hora en la misma pista.
• En cada etapa, cada jugador juega un solo partido.

a. De la realidad planteada, se identifican las siguientes dependencias funcionales

"A cada persona que se inscribe se le pide el nombre, la edad, la DNI y la fecha de vencimiento
de la ficha médica." ⇒ DNI → nombre, edad, fechavencimiento
"El torneo se juega en un determinado conjunto de pistas de las que se conoce la dirección de
cada una, un código que las identifica, y si tienen iluminación o no"
⇒ códigopista → dirección, con_iluminación

17
"A cada partido se le asigna un código que lo identifica dentro del torneo, una hora, una pista,
dos inscritos diferentes (local y visitante), una etapa (eliminatorias, octavos, cuartos,
semifinales y final) y un ganador."
⇒ códigopartido → hora , códigopista , DNIlocal , DNIvisitante , etapa , DNIganador
"No se pueden jugar dos partidos a la misma hora en la misma pista."
⇒ hora , códigopista → códigopartido
"En cada etapa , cada jugador juega un solo partido."
⇒ DNIlocal , etapa → códigopartido, ⇒ DNIvisitante , etapa → códigopartido
Además debe tenerse en cuenta, que los jugadores locales y visitantes, son en realidad DNIs,
son los mismos atributos, con distinto nombre, por lo que pueden deducirse las siguientes
dependencias:
DNIlocal → DNI, DNI → DNIlocal, DNIvisitante → DNI, DNI → DNIvisitante ,
DNIganador → DNI, DNI → DNIganador

b. Teniendo en cuenta las dependencias encontradas, indicar en que forma normal se


encuentra el esquema que contiene todos los atributos. Si no se encuentra en una forma
normal "aceptable", normalícela hasta que así lo considere. Justifique las respuestas.

Renombrando el conjunto de atributos, tendremos:


Nombre Atrib Nombre Atrib Nombre Atrib Nombre Atrib Nombre Atrib
DNI C Edad E códigopista CC códigopartido CP DNIlocal CL
nombre N fechavencimiento FV dirección D hora H DNIvisitante CV
con_iluminac CI DNIganador CG etapa E

Obtenemos el esquema relación R sobre F con: R(C, N, E, FV, CC, D, CI, CP, H, CG, CL, CV, E)
según F = { C → N, E, FV ; CC → D, CI ; CP → H, CC, CL, CV, E, CG ; H, CC → CP; CL, E →
CP ; CV, E → CP; CG, E → CP; CL → C; CV → C; CG → C; C → CL; C → CV; C →
CG }

En vez de realizar el proceso acostumbrado de normalización, realizaremos antes un análisis de


las dependencias, a fin de determinar si no resulta más sencillo comenzar a normalizar
directamente, en forma intuitiva, pero justificando correctamente los resultados. Obtendremos una
descomposición en 3NF con join sin pérdida y sin pérdida de dependencias.
Inicialmente se pueden formar los siguientes esquemas (incluyendo la proyección de las
dependencias):

INSCRITOS (C, N, E, FV) FINSCRITOS { C → N, E, FV } Claves: (C)


PISTAS (CC, D, CI) FPISTAS { CC → D, CI } Claves: (CC)
PARTIDOS (CP, H, CC, CL, CV, E, CG ): Claves: { (CP) , (CC,H) , (CL,E), (CV,E) , (CG,E)}
FPARTIDOS { CP → H, CC, CL, CV, E, CG ; CC, H → CP ;CL, E → CP ; CV, E → CP ; CG, E → CP
}
DNI (C,CL,CG,CV) : Claves: { (C), (CC), (CV), (CG) }
FDNI { CL → C, CV → C, CG → C, C → CL, C → CV, C → CG }

Hay que tener presente que los atributos CL, CV y CG son DNIs de inscritos, motivo por el cual se
creó la relación PISTAS.

18
INSCRITOS está en BCNF, ya que la única dependencia que se cumple sobre esta tiene a la
izquierda una clave. La misma situación se da con PISTAS. En partidos, (CP) es una clave, por lo
que (CC,H), (CL,E), (CV,E) y (CG,E) también son claves porque determinan a (CP). De esta forma,
Partidos también está en BCNF.
DNI también esta en BCNF, ya que todos los atributos de la tabla son claves por si solos, motivo
por el cual todas las dependencia de FDNI tienen a la izquierda atributos que son superclaves.
Por lo tanto, la descomposición propuesta están en BCNF y por lo tanto en 3NF y como todas las
dependencias caen en un determinado subesquema, la unión de todas estas será el conjunto
original de dependencias , por lo que se preservan las dependencias funcionales.

Queda por verificar si cumple la propiedad de join sin pérdida. En este caso particular, se puede
observar que los joins posibles con sentido son entre INSCRITOS y CEDULAS ,entre PISTAS y
PARTIDOS y entre DNI y PARTIDOS. De esta forma se puede aplicar la propiedad DSPS1:

PISTAS ∩ PARTIDOS = { C } PISTAS – PARTIDOS = { DC,I}


Como se verifica que C → DC,I entonces este join es sin pérdida.
DNI ∩ PARTIDOS = { CL,CG,CV } DNI – PARTIDOS = { C }
Como se verifica que CL,CG,CV → C , entonces este join es sin pérdida.
INSCRITOS ∩ DNI = { C } DNI – INSCRITOS = { CL,CG,CV }
Como se verifica que C → CL,CG,CV entonces este join es sin pérdida.
Se deduce entonces que el esquema obtenido está en BCNF, preservando las dependencias
originales, asegurando además el join sin perdida.

Ejercicio 4.
Se quiere modelar una base de datos de información histórico-política e histórico-administrativa de las
calles de una ciudad, así como información sobre los hospitales y zonas deportivas sobre las mismas.
La información histórico-política de interés se refiera al año en que fue inaugurada la calle así como el
nombre del intendente en ejercicio.
La información histórico-administrativa que se desea mantener es la identificación del plano de
construcción de la calle en cuestión, así como la empresa constructora que estuvo a cargo del diseño
de dicho plano. El plano de construcción de la calle consiste del diseño de la misma y el identificador
del plano es una referencia que se utiliza a fin de ubicarlo en el archivo de planos que mantiene la
intendencia. Desde ahora al plano de construcción lo llamaremos simplemente plano de la calle.
Se sabe que una calle tiene tanto un número de calle como un nombre y que cada uno identifica a la
calle. El número de calle determina en forma única tanto el nombre de la calle como el identificador
del plano de la calle y la empresa constructora. A su vez el número de la calle y la identificación del
plano de la calle y la empresa constructora son únicos dado el nombre de la calle.
El nombre de la calle fue elegido durante el ejercicio de un intendente, es decir que el nombre del
intendente queda determinado por el nombre de la calle.
Dado el nombre y el número de la calle y el nombre del intendente queda determinado el año de
inauguración de la calle.
Se sabe que una identificación del plano de una calle puede describir a distintas calles, pero un plano
es diseñado por una única empresa constructora.
Las mismas empresas que se encargaron de diseñar los planos de las calles, construyeron hospitales
y zonas deportivas. En la construcción de un hospital ó de una zona deportiva designa un único
ingeniero responsable. A su vez dichos ingenieros trabajan en una única empresa constructora.

Atributo Descripción Atributo Descripción f. Tenemos


NC Nombre calle EC Empresa constructora
NRO Número calle HO Hospital
IP Identificación plano ZD Zona deportiva
NI Nombre intendente ING Ingeniero

19
Por lo tanto, el esquema relación universal será de la forma:
R(NRO,NC,ID,EC,NI,AI,IP,ING,HO,ZD)

Se identifican las siguientes dependencias funcionales:

"Se sabe que una calle tiene tanto un número de calle como un nombre y que cada uno identifica
a la calle."
"El número de calle determina en forma única tanto el nombre de la calle como el identificador del
plano de la calle y la empresa constructora. "
"A su vez el número de la calle y la identificación del plano de la calle y la empresa constructora
son únicos dado el nombre de la calle."
"El nombre de la calle fue elegido durante el ejercicio de un intendente, es decir que el nombre del
intendente queda determinado por el nombre de la calle."
NRO → NC,IP,EC; NC → NRO,IP,EC,NI
"Dado el nombre y el número de la calle y el nombre del intendente queda determinado el año de
inauguración de la calle." NC,NRO,NI → AI
"Se sabe que una identificación del plano de una calle puede describir a distintas calles, pero un
plano es diseñado por una única empresa constructora."; IP → EC
"En la construcción de un hospital ó de una zona deportiva de fútbol designa un único ingeniero
responsable."; HO → EC,ING; ZD → EC,ING
"A su vez dichos ingenieros trabajan en una única empresa constructora."; ING → EC

g. Hallar todas las claves.


HO y ZD solo aparecen a la izquierda de las dependencias en F, por lo tanto ambos estarán
presentes en todas las claves de R.
(HO,ZD)+ = {HO,ZD,EC,ING}
Buscamos claves de 3 atributos:
(HO,ZD,NC)+ = {HO,ZD,NC,NRO,IP,EC,NI,AI,ING} = R
(HO,ZD,NRO)+ = {HO,ZD,NRO,NC,IP,EC,NI,AI,ING} = R
(HO,ZD,IP)+ = {HO,ZD,EC,ING,IP}
(HO,ZD,NI)+ = {HO,ZD,EC,ING,NI}
(HO,ZD,AI)+ = {HO,ZD,EC,ING,AI}
Con tres atributos, (HO,ZD,NC) y (HO,ZD,NRO) son clave de R
Buscamos claves con cuatro atributos.
Considero (R − {NRO,NC})
(R − {NRO,NC})+ = { HO,ZD,ING,AI,EC,NI,IP }
Por lo tanto se ve clausurando todos los atributos de la relación salvo NRO y NC, estos no se
obtienen en el resultado. Esto indica que en cualquier candidato a clave debe tenerse al menos
HO, ZD y NRO o HO, ZD y NC
Sin embargo, con estos tres, caemos en alguna de las dos claves anteriores. Por lo tanto, las
únicas claves son: K = { (HO,ZD,NC) , (HO,ZD,NRO) }

h. Se aplica el algoritmo de teórico para llegar a un cubrimiento minimal de F.


1. Primer paso, obtener dependencias con un solo atributo a la derecha
F1 = { NRO → NC; NRO → ID; NRO → EC; NC → NRO
NC → IP; NC → EC; NC → NI; NC,NRO,NI → AI; IP → EC; ING → EC
HO → EC; HO → ING; ZD → EC ; ZD → ING }

2. Segundo paso, eliminar atributos redundantes a la izquierda en las dependencias


La única dependencia donde pueden existir problemas es: NC,NRO,NI → AI
F2 = ( F1 − { NC,NRO,NI → AI } ) ∪ { NC → AI }
NC+F2 = { NC,NRO,NI,NC,AI } ⇒ NRO,NI son redundantes.
20
(observar que también pudo haberse retirado NC y NI, y aun con estos obtener AI. Esto
indica que el conjunto minimal no será único)
Obtenemos
F2 = { NRO → NC; NRO → IP; NRO → EC; NC → NRO
NC → IP; NC → EC; NC → NI; NC → AI; IP → EC
ING → EC; HO → EC; HO → ING; ZD → EC; ZD → ING
3. Tercer paso, eliminación de dependencias redundantes.
Antes de empezar a testear cada una de las dependencias, analizamos la situación antes.
NC → NI ; NC → AI
Estas son las únicas dependencias en donde NI y AI aparecen, y aparecen a la derecha. Por
lo tanto estas dos no pueden ser nunca eliminadas.
F' = F2 − { NRO → NC }; (NRO)+F, = {NRO,IP,EC} ⇒ NRO → NC no es redundante en F2
F' = F2 − { NRO → IP }; (NRO)+F, = {NRO,IP,EC,NC} ⇒ NRO → IP es redundante en F2
F3 = F'
F' = F3 − { NRO → EC }, (NRO)+F, = {NRO,NC,EC} ⇒ NRO → EC es redundante en F3
F4 = F'
F' = F4 − { NC → NRO }; (NC)+F, = {NC,IP,EC,NI,AI} ⇒ NC → NRO no es redundante en F4
F' = F4 − { NC → IP }; (NC)+F, = {NRO,NC,NI,EC,AI} ⇒ NC → IP no es redundante en F4
F' = F4 − { NC → EC }; (NC)+F, = {NRO,NC,IP,NI,AI,EC} ⇒ NC → EC es redundante en F4
F5 = F'
F' = F5 − { IP → EC }; (IP)+F, = {IP} ⇒ IP → EC no es una dependencia redundante en F5
F' = F5 − { ING → EC }; (ING)+F, = {ING} ⇒ ING → EC no es una dependencia redundante
en F5
F' = F5 − { HO → EC }; (HO)+F, = {HO,ING,EC} ⇒ HO → EC es redundante en F5 , la
quitamos
F6 = F'
F' = F6 − { HO → ING }; (HO)+F, = {HO} ⇒ HO → ING no es una dependencia redundante en
F6
F' = F5 − { ZD → EC }; (ZD)+F, = {ZD,ING,EC} ⇒ ZD → ING es redundante en F6 , la
quitamos
F7 = F' ; F' = F7 − { ZD → ING }; (HO)+F, = {ZD} ⇒ ZD → ING no es redundante en F7
Por lo tanto, el conjunto minimal obtenido es:
Fminimal = { NRO → NC, NC → NRO, NC → IP, NC → NI, NC → AI, IP → EC, ING → EC,
HO → ING, ZD → ING }

i. Llevamos a 3NF
Aplicamos el algoritmo para obtener una descomposición de R en 3NF
Tenemos:
Fminimal = { NRO → NC, NC → NRO, NC → IP, NC → NI, NC → AI, IP → EC, ING → EC,
HO → ING, ZD → ING }
Obtenemos al principio:
{ R1 (NRO, NC), R2 (NC, NRO), R3 (NC, IP), R4 (NC, NI), R5 (NC, AI), R6 (IP, EC), R7 (ING, EC),
R8 (HO, ING), R9 (ZD, ING) }
Simplificamos
{ R1 (NRO, NC). R3 (NC, IP, NI, AI), R6 (IP, EC), R7 (ING, EC), R8 (HO, ING), R9 (ZD, ING) }
Agregamos un esquema asociado a una de las claves de R
R10 (NC,ZD,HO)
Proyectamos las dependencias de Fminimal en el esquema obtenido:
R1 (NRO, NC) F = { NRO → NC, NC → NRO } claves: { (NRO) ,(NC) }
R3 (NC, IP, NI, AI) F = { NC → ID, NC → NI, NC → NI } clave: { (NC) }
R6 (IP, EC) F = { IP → EC } clave: { (IP) }

21
R7 (ING, EC) F = { ING → EC } clave: { (ING) }
R8 (HO, ING) F = { HO → ING } clave: { (HO) }
R9 (ZD, ING) F = { ZD → ING } clave: { (ZD) }
R10 (NC,ZD, HO) F = { } clave: { (NC,ZD,HO) }
No se pierde ninguna dependencia funcional, ya que la unión de las proyecciones es igual al
conjunto minimal, con lo que serán inmediatamante son equivalentes.
R1 (NRO, NC) R3 (NC, IP, NI, AI) R6 (IP, EC) R7 (ING, EC)
R8 (HO, ING) R9 (ZD, ING) R10 (NC,ZD, HO)

j. Llevamos a BCNF con join sin pérdida.


Para cada subesquema de la descomposición anterior, todas las dependencias de estos tienen a
la izquierda solo superclaves, por lo que estos estarán en BCNF, con lo que la descomposición
obtenida esta en BCNF

22
DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios 1.

Nota:
• A, B, C, D, E, G, H , I son considerados atributos atómicos.
• W, X, Y , Z son considerados conjuntos de atributos atómicos.

Ejercicio 1. Sea R(A,B,C,D,E) con F = { A → B, B → D, C → E, E → B }.


¿ Cuáles de las siguientes relaciones de R satisfacen F ?.
a. b. c.
A B C D E A B C D E A B C D E
a1 b1 c1 d1 e1 a1 b1 c1 d1 e1 a1 b1 c1 d1 e1
a2 b2 c2 d1 e1 a2 b2 c2 d1 e2 a1 b1 c2 d1 e1

Ejercicio 2. Indicar cuales de las siguientes derivaciones para dependencias funcionales son válidas
demostrando o usando un contraejemplo.

i. { X →Y, Z → Y } ╞ XZ → Y. m. { XY → Z, Z → X } ╞ Z → Y.
j.{ XZ → Y } ╞ X → Y. n. { X → Y, Y → Z } ╞ X → YZ.
k. { XZ → Y, X → Z } ╞ X → Y. o. { X → Y, W → Z, W ⊆ Y } ╞ X → Z.
l. { Z → W , X →Y } ╞ XZ →YW. p. { XY →Z, Y →W } ╞ XW →Z

Ejercicio 3. Sea R(A,B,C,D,E,G,H,I) y F = {AB → CH, CD → B, B → GAE, H → DI }. Calcular:


h. A+ j.(CD) + l. (BE) + n. (ABH) +
+ + +
i. B k. (BEI) m. (HA)

Ejercicio 4. Sea F = { AB → C, C → D, B → C, C → E, HB → D }. Decir cuales de las siguientes


dependencias funcionales están en F+:

h. B → D j.C → DE l. HA → CD n. A → D
i. E → D k. A → C m. CD → E

Ejercicio 5. Sea R(A B C D E G) y F = { AB → D, CD → G, E → A, A → C, BG → C, D → A }


e. Hallar las clausuras de los siguientes conjuntos de atributos
7. (AD) 9. (BC) 11. (B)
8. (D) 10. (EB) 12. (EBC)
f.¿ Alguno de los conjuntos anteriores es superclave ?.
g. ¿ Alguno es clave ?.
h. Hallar todas las claves de R según F.

Ejercicio 6. Sea R(A, B, C, D, E, G, H) y el conjunto de dependencias funcionales


F = { AB → CDE, C → A, D → E, H → E, HE → G }
Hallar todas las claves. Justificar la respuesta.

Ejercicio 7. Sea R(A,B,C,D,E,G,H,I) y el conjunto de dependencias funcionales


F = { A → B, B → C, E → I, EGC → B, G → H , B → A }.
Dar todas las claves de R según F.

23
Ejercicio 8. Sea R(A,B,C,D,E) y F = { AB → C, C → DE, E → C }.
Decir cuáles de los conjuntos de dependencia funcionales son equivalentes a F. En caso de no serlo
dar relaciones de R que ejemplifiquen este hecho.
e. F1 = { AB → CDE, E → CD, C → D }.
f.F2 = { AB → D, D → C, C → DE, E → C }.
g. F3 = { AB → CDE, C → D, C → E, E → C, E → D }.
h. F4 = { A → C, B → C, C → DE, E → C }.

Ejercicio 9. Hallar recubrimientos minimales de los siguientes conjuntos.


e. {A → Β , B → C , C → D , D → E , E → A , A → C , C → Ε , E → Β , B → D , D → Α}.
f.{A → Β, AE → D, B → C, DH → C, C → D, CG → B, D → A, BF → Α}.

Normalización.

Ejercicio 10. Sea el esquema relación R(A, B, C, D, E, G, H) con A, B, C, D, E, G, y H atributos atómicos y


el conjunto de dependencias funcionales:
F = { CDG→EB, AB→C, A→D, ABC→E, B→E, CDE→A }
k. Hallar todas las claves. Justificar la respuesta.
l. Hallar un recubrimiento minimal de F en R. Mostrar los pasos seguidos.
m. Dada la descomposición τ = (R1, R2) siendo: R1 (A, B, C, E) y R2 (C, D, E, G, H)
Decir si (Justificar adecuadamente todas las respuestas):
7. ¿Es descomposición con join sin pérdida?
8. ¿Preserva dependencias?
9. ¿En que forma normal se encuentra R1 y R2 ?
n. Utilizando F, llevar R a 3NF con join sin pérdida y preservación de dependencias.
o. Llevar la descomposición de la parte d. a FNBC con join sin pérdida. Indicar si se pierden dependencias
funcionales y cuales.

Ejercicio 11. R(A,B,C,D,E,H,G) , F = { AB → CED, C → Α, D → Ε, EH → G}


k. Claves de R según F.
l. Hallar un recubrimiento minimal de F en R. Mostrar los pasos seguidos.
m. Sea la descomposición:
R(A,B,C,D,E,H,G) F = { AB → CED, C → Α, D → Ε, EH → G}
R1(A,B,D,E) FR1 = { AB → D, D → E }
R2(A,B,C,H,G) FR2 = { AB → C, C → A }
7. ¿Es una descomposición con join sin pérdida ?
8. ¿Preserva las dependencias ?
9. ¿En qué forma normal se encuentran R1 y R2 ?
n. Llevar R a 3NF con join sin pérdida y preservación de dependencias.
o. Llevar la descomposición de la parte d. a BCNF con join sin pérdida. Indicar si se pierden dependencias
funcionales y cuales.

Ejercicio 12. Un club esta organizando un campeonato de tenis individual. A cada persona que se inscribe se le
pide el nombre, la edad, el DNI y la fecha de vencimiento de la ficha médica. El torneo se juega en un
determinado conjunto de pistas de las que se conoce la dirección de cada una, un código que las identifica, y si
tienen iluminación o no. A partir de estos datos, se organizan los partidos del campeonato con los siguientes
criterios.
• A cada partido se le asigna un código que lo identifica dentro del torneo, una hora, una pista, dos
inscriptos diferentes (local y visitante), una etapa (eliminatorias, octavos, cuartos, semifinales y final) y
un ganador.
• No se pueden jugar dos partidos a la misma hora en la misma pista.
• En cada etapa, cada jugador juega un solo partido.
k. Indicar las dependencias funcionales que se cumplen en esta realidad.

24
l. Teniendo en cuenta las dependencias encontradas, indicar en que forma normal se encuentra el esquema
que contiene todos los atributos. Si no se encuentra en una forma normal "aceptable", normalícela hasta
que así lo considere. Justifique las respuestas.

Ejercicio 13. Se quiere modelar una base de datos de información histórico-política e histórico-administrativa de
las calles de una ciudad, así como información sobre los hospitales y zonas deportivas sobre las mismas.
La información histórico-política de interés se refiera al año en que fue inaugurada la calle así como el nombre
del intendente en ejercicio.
La información histórico-administrativa que se desea mantener es la identificación del plano de construcción de
la calle en cuestión, así como la empresa constructora que estuvo a cargo del diseño de dicho plano. El plano
de construcción de la calle consiste del diseño de la misma y el identificador del plano es una referencia que se
utiliza a fin de ubicarlo en el archivo de planos que mantiene la intendencia. Desde ahora al plano de
construcción lo llamaremos simplemente plano de la calle.
Se sabe que una calle tiene tanto un número de calle como un nombre y que cada uno identifica a la calle. El
número de calle determina en forma única tanto el nombre de la calle como el identificador del plano de la calle
y la empresa constructora. A su vez el número de la calle y la identificación del plano de la calle y la empresa
constructora son únicos dado el nombre de la calle.
El nombre de la calle fue elegido durante el ejercicio de un intendente, es decir que el nombre del intendente
queda determinado por el nombre de la calle.
Dado el nombre y el número de la calle y el nombre del intendente queda determinado el año de inauguración
de la calle.
Se sabe que una identificación del plano de una calle puede describir a distintas calles, pero un plano es
diseñado por una única empresa constructora.
Las mismas empresas que se encargaron de diseñar los planos de las calles, construyeron hospitales y zonas
deportivas. En la construcción de un hospital ó de una zona deportiva designa un único ingeniero responsable.
A su vez dichos ingenieros trabajan en una única empresa constructora.

m. Identifiquen las dependencias funcionales.


n. Hallar todas las claves.
o. Obtenga un cubrimiento minimal de F.
p. Obtenga esquema en FN3.
q. Obtenga esquema en FNBC.

25
DISEÑO DE BASES DE DATOS DEPENDENCIAS FUNCIONALES

Ejercicio 1. Se tiene R(A,B,C,D,E) con F = { A → B, B → D, C → E, E → B }.

26
a. No satisface F. Viola E → B , ya que si la primer tupla se denomina t , y la
A B C D E segunda u , se tendrá que:
a1 b1 c1 d1 e1 t[E] = u[E] = e1 , pero t[B] ≠u[B]
a2 b2 c2 d1 e1 con lo que no se cumple la definición de dependencia funcional.

b.
A B C D E Satisface F, trivialmente, ya que para todo par de tuplas u, t en esta
a1 b1 c1 d1 e1 instancia de R y para toda dependencia funcional Att1 → Att2 en F, se
a2 b2 c2 d1 e2 cumple que: t[Att1] = u[Att1] con lo que la definición de dependencia
funcional será valida en todos los casos.

c. Satisface F, ya que para todo par de tuplas u, t en esta instancia de R y


A B C D E para toda dependencia funcional Att1 → Att2 en F, se cumple que:
a1 b1 c1 d1 e1 t[Att1] = u[Att1] → t[Att2] = u[Att2]
a1 b1 c2 d1 e1 es verdadero para toda combinación de Att1 y Att2 elegidas.

Se tendrán: (como antes, t es la primer tupla, u la segunda)


A → B: t[A] = u[A] = a1 y t[B] = u[B] = b1
B → D: t[B] = u[B] = b1 y t[D] = u[D] = d1
C → E: t[C] = u[C] , por lo que se cumple trivialmente
E → B: t[E] = u[E] = e1 y t[B] = u[B] = b1

Ejercicio 2. Aplicando las reglas de Armstrong se tendrá que:

i. { X → Y, Z → Y } ╞ XZ → Y
Se cumple
X → Y ╞ ZX → YZ Aumento
ZX → YZ ╞ ZX → Y Descomposición

j. { XZ → Y } ╞ X → Y X Y Z
No se cumple. Ver este contraejemplo: R(X,Y,Z) x1 y1 z1
Esta relación satisface XZ → Y, pero no x1 y2 z2
satisface X → Y.
k. { XZ → Y, X → Z }╞ X → Y
Se cumple
X→X Reflexiva (X ⊇ X)
{ X → Z , X → X }╞ X → XZ Unión
{ X → XZ , XZ →Y }╞ X → Y Transitiva

l. { Z → W , X → Y }╞ XZ → YW.
Se cumple
X → Y ╞ XZ → YZ Aumento
Z → W╞ ZY → WY Aumento
{ XZ → YZ , YZ → WY } ╞ XZ → YW. Transitiva

m. { XY → Z, Z → X } ╞ Z → Y

No se cumple. Ver el siguiente contraejemplo: X Y Z


R(X,Y,Z) x1 y1 z1
Esta relación satisface XY → Z y Z→ X, pero x1 y2 z1
no satisface Z → Y.
n. { X → Y, Y → Z } ╞ X → YZ
Se cumple
{ X → Y, Y → Z } ╞ X → Z Transitiva
{ X → Z , X → Y } ╞ X → YZ Unión

o. { X → Y, W → Z, W ⊆ Y } ╞ X → Z
Se cumple
Y→W Reflexiva (Y ⊇ W)
{ X → Y ,Y → W, W → Z }╞ X → Z Transitiva dos veces

p. { XY → Z, Y → W } ╞ XW → Z
No se cumple. Ver el siguiente contraejemplo: w1 x1 y1 z1
R(W,X,Y,Z)Esta relación satisface XY → Z y Y w1 x1 y2 z2
→ W pero no satisface XW → Z.

W X Y Z
Ejercicio 3.
Sea R(A,B,C,D,E,G,H,I) y F = { AB → CH, CD → B, B → GAE, H → DI }.
En cada uno de los casos siguientes se determinaran las clausuras de cada conjunto de atributos a
través de los axiomas de Armstrong. La idea al aplicar la clausura es tratar de obtener los demás
atributos de la relación, por lo que siempre trataran de inferirse estos a través de aplicaciones de las
reglas anteriores.

h. (A)+ = { A }
Considero el conjunto de partida{ A }
{A}╞ A→ A Reflexiva (A ⊆ A)
Partiendo de A, no es posible inferir otros atributos distintos de la relación R.
En este caso, considerando el grafo de dependencias funcionales, se observa claramente que no
es posible "escaparse" del nodo A, por lo que la clausura estará compuesta solo por A.

i. (B)+ = { B, G, A, E, C, H, D, I }
Considero el conjunto de partida { B }
{B}╞ B→ B Reflexiva (B ⊆ B)
{ B } ╞ B → GAE dependencia funcional en F
el conjunto de trabajo pasa a:
{ B,G,A,E } ╞ AB → CH dependencia funcional en F
el conjunto de trabajo pasa a:
{ B,G,A,E,C,H } ╞ H → DI dependencia funcional en F
el conjunto de trabajo pasa a:
{ B,G,A,E,C,H,D,I }

Se finaliza el proceso debido a que el resultado es el esquema de la relación. Para los demás
casos, el mecanismo formal para deducir la clausura, es utilizar las reglas de Armstrong, pero como
ayuda puede utilizarse el grafo de dependencias funcionales. Planteamos a continuación los
resultados de las clausuras.

j. (CD) + = { C, D, B, G, A, E, H, I }
k. (BEI) + = { B, E, I, G, A, C, H, D }
l. (BE) + = { B, E, G, A, C, H, D, I }
m. (HA) + = { H, A, D, I }
n. (ABH) + = { A, B, H, C, D, I, B , E }

Ejercicio 4. Sea F = { AB → C, C → D, B → C, C → E, HB → D }.
Se van a calcular los X+F correspondientes a cada dependencia funcional X → Y ∈ F, utilizando las
mismas técnicas que en Ej. anterior. Se concluirá que esta dependencia funcional
X → Y ∈ F+ en caso de que Y ∈ X+.

h. (B) + = { B, C, D, E }, D ∈ B+ ⇒ (B → D) ∈ F+.

28
i. (E) + = { E }, D ∉ E+ ⇒ (E → D) ∉ F+.
j. (C) + = { C, D, E }, D,E ∈ C+ ⇒ (C → DE) ∈ F+.
k. (A) + = { A }, C ∉ A+ ⇒ (A → C) ∉ F+.
l. (HA) + = { H, A }, C,D ∉ (HA) + ⇒ (HA → CD) ∉ F+.
m. (CD) + = { C, D, E }, E ∈ (CD) + ⇒ (CD → E) ∈ F+.
n. (A) + = { A }, D ∉ A+ ⇒ (A → D) ∉ F+.

29
Ejercicio 5. Sea R(A B C D E G) y F = { AB → D, CD → G, E → A, A → C, BG → C, D → A }.
a. Se aplican las mismas técnicas obtenidas de los ejercicios anteriores.
7. (AD) + = { A , D, C, G } 10. (EB) + = { E, B, A, C, D, G }
+
8. (D) = { D, A, C, G } 11. (B) + = { B }
9. (BC) + = { B, C } 12. (EBC) + = { E, B, C, A, D, G }
e. Los conjuntos (EB) y (EBC) son superclave, ya que su clausura contiene a todos los atributos de la
relación.
f. El conjunto que podría ser clave es (EB), pero primero hay que verificar que no contiene una clave.
(E) + = { E, A, C } no es clave. (B) + = { B } no es clave. (EB) es clave
g. B y E no quedan determinados por ningún otro conjunto de atributos, porque nunca aparecen en la
parte derecha de ninguna df por lo que estarán contenidos en todas las claves. Pero (BE) es clave
(por c.), por lo tanto no habrá otra clave, porque si la hubiera debería contener a (BE) y entonces
sería superclave. La única clave es (BE)

Ejercicio 6. Las siguientes propiedades pueden resultar útiles a la hora de determinar las claves de un
esquema de relación, así como también al obtener recubrimientos minimales y clausuras.
f. Si existe X t.q. X no aparece en ninguna dependencia funcional, entonces X está en toda clave.
Por absurdo, supongo que Z clave tq. X ⊄ Z.
Si Z es clave, entonces se cumple Z → X.
Si Z →X entonces, o bien X ⊆ Z (que contradice la hipótesis), o bien Z → X es una df no trivial, lo
cual contradice que X no aparece en ninguna df.
ABSURDO, X pertenece a toda clave.
g. Si existe X t.q. X no está a la derecha de ninguna dependencia funcional, X está en toda clave.
Por absurdo, supongo que Z clave tq. X ⊄ Z.
Si Z es clave, entonces se cumple Z → X.
Si Z → X entonces, o bien X ⊆ Z (que contradice la hipótesis), o bien Z → X es una df
no trivial, lo cual contradice que X no aparece a la derecha de ninguna df.
ABSURDO, X pertenece a toda clave.
ACLARACION INTERESANTE: juntando las partes a. y b. , pudo haberse demostrado en primera
instancia la parte b. para luego afirmar que si X no aparece en ninguna dependencia funcional,
entonces obviamente no aparece a la derecha de ninguna dependencia funcional, por lo que por la
parte b. , estará en toda clave.

Ejercicio 6. Sea R(A,B,C,D,E,G,H) y el conjunto de dependencias funcionales


F = { AB → CDE, C → A, D → E, H → E, HE → G }
Aplicando proposiciones anteriores, se sabe que:
(BH) está en todas las claves, ya que no aparecen del lado derecho de ninguna dependencia funcional.
Verifico si es superclave: (BH) + = { B, H, E, G } Æ BH no es superclave.
Considero los conjuntos de tres atributos que contienen a (BH):
(BHA) + = { B, H, A, E, G, C, D } ⇒ (BHA) es clave.
(BHC) + = { B, H, C, E, G, A, D } ⇒ (BHC) es clave.
(BHD) + = { B, H, D, E, G }
Debido a que E y G están en (BH) +, y (BH) debe estar en toda clave, se deduce que G y E nunca
estarán en alguna clave, ya que estos pueden deducirse siempre. Por esto, en realidad resulta
innecesario hacer:
(BHE) + = { B, H, E, G } (BHG) + = { B, H, G, E }
¿Existirán más claves? Si existen contienen a (BH) y no a A ni a C, porque sino serían superclaves.
Entonces considero X = R - {AC} y verifico si es superclave.
X+ = (BDEGH) + = { B, D, E, G, H }, no es superclave, por lo que ningún subconjunto de X lo será, por lo
que no hay superclaves que no contengan A ni C, por lo que no hay claves que no contengan ni A ni C.
Por lo que no hay mas claves.
Las únicas claves son (BHA) y (BHC).
Ejercicio 7. R(A,B,C,D,E,G,H,I). F = { A →B, B →C, E →I, EGC →B, G →H, B →A }

30
D no está en ninguna df, entonces está en toda clave. H I no están nunca a la izquierda en df’s,
entonces no sirven para determinar a ningún atributo, entonces no están en ninguna clave. E y G no
están a la derecha de ninguna dependencia, entonces están en toda clave.
Pruebo con (E,G,D), (EGD)+ = { E, D, G, I, H }, no es superclave, entonces no es clave.
Pruebo con claves de cuatro atributos:
(EGDA) + = { D, A, B, C, E, G, I, H } es clave
(EGDB) + = { D, B, C, E, G, I, H, A } es clave
(EGDC) + = { D, C, B, E, I, H, A, G } es clave
No hay mas, pues si no serían superclaves. LAS CLAVES SON: (EGDA), (EGDB), (EGDC).
Ejercicio 8. F = { AB →C, C →DE, E →C }
e. F1 = { AB →CDE, E →CD, C →D } No son equivalentes. A B C D E
Sea la siguiente relación: R(A,B,C,D,E) a1 b1 c1 d1 e1
Satisface F1 pero no F. (C →E) ∉ F1+ a1 b2 c1 d1 e2
f. F2 = { AB →D, D →C, C →DE, E →C } No son equivalentes. A B C D E
Sea la siguiente relación: R(A,B,C,D,E) a1 b1 c1 d1 e1
Satisface F pero no F2. (D →C) ∉ F+ a1 b2 c2 d1 e2
g. F3 = { AB →CDE, C →D, C →E, E →C, E →D }
Son equivalentes. Para eso verificaremos que cada df de un conjunto está en la clausura del otro.
F ⊆ F3+: F3 ⊆ F+ :
(AB) +F3 = { A, B, C, D, E } ⇒ (AB →C) ∈ F3+. (AB) +F = { A, B, C, D, E } ⇒ (AB →CDE) ∈ F+.
(C) +F3 = { C, D, E } ⇒ (C →DE) ∈ F3+. (C) +F = { C, D, E } ⇒ {C →D,C →E} ∈ F+.
(E) F3 = { E, C, D } ⇒ (E →C} ∈ F3 .
+ +
(E → C) ∈ F.
(E)+F = { E, C, D } ⇒ (E →D) ∈ F+.

h. F4 = { A →C, B →C, C →DE, E →C } A B C D E


No son equivalentes. Sea la siguiente relación: R(A,B,C,D,E) a1 b1 c1 d1 e1
Satisface F pero no F4. (A →C, B →C) ∉ F+ a1 b2 c2 d1 e2

31
Ejercicio 9.
g. {A → Β , B → C , C → D , D → E , E → A , A → C , C → Ε , E → Β , B → D, D → Α}.

NOTA: solución sin algoritmo, consideren el grafo de dependencias.


Buscamos un cubrimiento minimal de este conjunto. Si observamos las dependencias que este
contiene, veremos que el subconjunto: F1 = { A → Β , B → C , C → D , D → E , E → A }
forma un ciclo en las dependencias. Por lo tanto, todas estas son esenciales en el cubrimiento.
El otro subconjunto: F2 = {A → C , C → Ε , E → Β , B → D, D → Α}
forma otro ciclo en las dependencias, pero con respecto al anterior, esta desfasado. Es
análogo a representar todos los atributos en un grafo, y considerar las dependencias cono
aristas dirigidas desde el atributo a la izquierda, hacia el atributo a la derecha.
Podemos probar que ambos conjuntos son equivalentes: F1 ⊆ F2+:
Debido a los ciclos presentes en las dependencias, podemos afirmar que:
A+F2 = B+F2 = C+F2 = D+F2 = E+F2 = { A, B, C, D, E } , por lo que
A → Β ∈ F2 + . B → C ∈ F2+. C → D ∈ F2+. D → E ∈ F2+. E → A ∈ F2+.
F2 ⊆ F1+:
Como antes, también se cumple: A+F1 = B+F1 = C+F1 = D+F1 = E+F1 = { A, B, C, D, E } , por
lo que
A → Β ∈ F1 + . B → C ∈ F1+. C → D ∈ F1+. D → E ∈ F1+. E → A ∈ F1+.
Por lo que F2+ = F1+
a su vez, estos dos últimos conjuntos son minimales, ya que se cumplen las condiciones en la
definición. Es más sencillo constatarlo gráficamente, ya que eliminar una dependencia es
análogo a borrar una arista del grafo de dependencias. Lo que sucederá, es que no se podrá
cerrar el circuito, con lo que el conjunto ya no será equivalente.

Por lo tanto, los siguientes conjuntos son cubrimientos minimales del conjunto original
F1 = { A → Β , B → C , C → D , D → E , E → A }
F2 = {A → C , C → Ε , E → Β , B → D, D → Α}

h. {A → Β, AE → D, B → C, DH → C, C → D, CG → B, D → A, BF → Α}.
El siguiente es el minimal del conjunto anterior: F = { A → Β, B → C, C → D, D → A}

32
Diseño de bases de datos. Soluciones Normalización.

Ejercicio 10. Sea el esquema relación R(A, B, C, D, E, G, H) con A, B, C, D, E, G, y H atributos


atómicos y el conjunto de dependencias funcionales:
F = { CDG→EB, AB→C, A→D, ABC→E, B→E, CDE→A }
f. Claves de R según F: G y H pertenecen a toda clave, ya que no están a la derecha de
ninguna dependencia funcional. (GH)+ = {G, H} ⇒ (GH) no es clave.
Busco entonces claves con 3 atributos:
(GHA)+ = {G, H, A, D} ⇒ (GHA) no es clave; (GHB)+ = { G, H, B, E} ⇒ (GHB) no es clave
Busco claves con 4 atributos:
(GHAB)+ = {G, H, A, B, D, E, C} ⇒ (GHAB) es clave ;
(GHAC)+ = {G, H, A, C, D, E, B} ⇒ (GHAC) es clave ;
(GHAD)+ = {G, H, A, D} ⇒ (GHAD) no es clave ; (GHAE)+ = {G, H, A, E} ⇒ (GHAE) no es clave
;
(GHBC)+ = {G, H, B, C} ⇒ (GHBC) no es clave ; (GHBD)+ = {G, H, B, D, E} ⇒ (GHBD) no es
clave;
(GHBE)+ = {G, H, B, E} ⇒ (GHBE) no es clave;
(GHCD)+ = {G, H, C, D, E, B, A} ⇒ (GHCD) es clave ;
(GHCE)+ = {G, H, C, E} ⇒ (GHCE) no es clave ; (GHDE)+ = {G, H, D, E} ⇒ (GHDE) no es
clave;
Busco claves con 5 atributos:
(GHADE)+ = {G, H, A, D. E} ⇒ (GHADE) no es clave;
(GHBCE)+ = {G, H, B, C, E) ⇒ (GHBCE) no es clave
(GHBDE)+ = {G, H, B, D, E} ⇒ (GHBDE) no es clave
Las claves son (GHAB), (GHAC) v (GHCD)

g. Hallar un cubrimiento minimal de F en R. Mostrar los pasos seguidos.


4. Llevar todas las dependencias funcionales a la forma X → Att, donde Att es un sólo
atributo.
F1 = { CDG → E, CDG → B, AB → C, A → D, ABC → E, B → E, CDE → A}
5. Eliminar atributos redundantes a la izquierda.
(B)+F2 = {B, E} ⇒ A y C son redundantes ⇒ F2 = ( F1 − { ABC → E } ) ∪ { B →E }
F2 = { CDG → E, CDG → B, AB → C, A → D, B → E, CDE → A }
Realizando el mismo procedimiento, se comprueba que la anterior es la única dependencia
que contiene atributos redundantes a la izquierda.

6. Eliminación de dependencias redundantes


F' = F2 − { CDG → E };
(CDG)+F, = {C,D,G,B,E} ⇒ CDG → B es una dependencia redundante en F2 ⇒ F3 = F'
F' = F3 − { CDG → B }; (CDG)+F, = {C,D,G} ⇒ CDG → B no es redundante en F3
F' = F3 − { AB → C }; (AB)+F, = {A,B,D,E} ⇒ AB → C no es redundante en F3
F' = F3 − { A → D }; (A)+F, = {A} ⇒ A → D no es una dependencia redundante en F3
F' = F3 − { B → E }; (B)+F, = {B} ⇒ B → E no es una dependencia redundante en F3

33
F' = F3 − { CDE → A }; (CDE)+F, = {C,D,E} ⇒ CDE → A no es una dependencia redundante
en F3
Se deduce entonces que el conjunto minimal es:
Fminimal = F3 = { CDG → B, AB → C, A → D, B → E, CDE → A }

h. τ = (R1, R2 ) siendo : R1(A,B,C,E) y R2 (C,D,E,G,H)


Tendremos:
R(A,B,C,D,E,G,H) F = { CDG →EB, AB →C, A →D, ABC →E, B →E, CDE →A }
R1(A,B,C,E) R2(C,D,E,G,H)
4. ¿La descomposición tiene join sin pérdida?
R1 ∩ R2 = (CE), R1 − R2 = (AB) y R2 − R1 = (DGH)
CE → AB ∉ F+ y CE → DGH ∉ F+
Por la propiedad DPSP1 la descomposición no tiene join sin pérdida.
5. ¿ Preserva dependencias? πR1(F) = { AB → C, B → E}, πR2(F) = { CDG → E} ;
K = { AB → C, B → E } ∪ { CDG → E }
Estudiamos si Fminimal ≅ K; (CDG)+K = { C,D,G,E} ⇒ CDG → B no se satisface en K ⇒ Los
conjuntos no son equivalentes, por lo que se puede afirmar que no se preservan las dfs.
6. ¿ En que forma normal se encuentra R1 y R2 ?
R1(A,B,C,E) FR1 = { AB → C, BÆ E }, Claves: (AB) ⇒ R1 está en 1FN
R2(C,D,E,G,H) FR2 = { CDG → E }, Claves: (CDGH) ⇒ CDG → E , E depende
parcialmente de
la clave CDGH, y E no es primo, por lo que esta viola
2NF.
El esquema esta en 1NF.
i. Utilizando F, llevar R a 3NF con join sin pérdida y preservación de dependencias.
R(A,B,C,D,E,G,H), Fminimal = { CDG → B, AB → C, A → D, B → E, CDE → A }
Claves de R: (GHAB), (GHAC), (GHCD)
Aplicando directamente el algoritmo, obtenemos:
ρ3NF = { (CDGB), (ABC), (AD), (BE), (CDEA) } ∪ { (GHAC) }
No se agrega H como subesquema separado, ya que al agregar el esquema que contiene una
clave de R, H queda incluido en él, por lo que no será necesario tenerlo aparte.
Debido a que (AD) está incluido en (CDEA), eliminamos (AD).
ρ3NF = { (CDGB), (ABC), (BE), (CDEA) } ∪ { (GHAC) }

j. Llevar la descomposición de la parte d. a BCNF con join sin pérdida. Indicar si se


pierden dependencias funcionales y cuales.
R(A,B,C,D,E,G,H)Fminimal = { CDG → B, AB → C, A → D, B → E, CDE → A }
Se tiene la siguiente descomposición en 3NF:
R1(CDGB) FR1 = { CDG → B } | R2(ABC) FR2 = { AB → C }
R3(BE) FR3 = { B → E } | R4(CDEA) FR4 = { CDE → A , A → D }
R5(GHAC) FR5 = { }
Si observamos, no se pierden dependencias, y tiene JSP gracias al algoritmo de la parte
anterior. Además, cada subesquema esta en BCNF, salvo R4(CDEA) , en el cual CDE es clave,
pero A → D viola BCNF, ya que A no es superclave.

34
Por tal motivo, como esa dependencia es la causante de problemas, descomponemos
utilizando el algoritmo para llevar a BCNF, usando la dependencia A → D. Obtenemos así:
R4(CDEA) FR4 = { CDE → A , A → D } , A → D viola BCNF
R41(AD) FR41 = { A → D } Claves: (A) ⇒ R41 esta en BCNF
R42(CEA) FR42 = { } Claves: (CEA) ⇒ R42 esta en BCNF

Los esquemas obtenidos están en BCNF, pero la dependencia CDE → A se perdió.

Ejercicio 11.
R(A,B,C,D,E,H,G) , según F = { AB → CED, C → Α, D → Ε, EH → G}

p. Claves de R según F.
B y H pertenecen a toda clave, ya que no están a la derecha de ninguna dependencia
funcional.
Analizamos la clausura de este conjunto de atributos, a fin de determinar que se obtiene a
partir de ellos, y no debe incluirse el las claves de R. (Podrían utilizarse técnicas gráficas como
las del Practico 6, pero evitaremos estas por ahora.)
(BH)+ = { B, H } ⇒ (BH) no es clave.
Busco entonces claves con 3 atributos:
(BHA)+ = { B,H,A,C,E,D,G } ⇒ (BHA) es clave
(BHC)+ = { B,H,C,A,E,D,G } ⇒ (BHC) es clave
(BHD)+ = { B,H,D,E,G } ⇒ (BHD) no es clave
(BHE)+ = { B,H,E,G } ⇒ (BHE) no es clave
(BHG)+ = { B,H,G } ⇒ (BHG) no es clave
Busco claves con 4 atributos:
(BHDE)+ = { B,H,D,E,G } ⇒ (BHDE) no es clave
(BHDG)+ = { B,H,D,G,E } ⇒ (BHDG) no es clave
(BHEG)+ = { B,H,E,G } ⇒ (BHEG) no es clave
Busco claves con 5 atributos:
(BHDEG)+ = { B,H,D,E,G } debido a que (BHDE)+ = { B,H,D,E,G } ⇒ (BHDE) no es clave
Se deduce entonces que las claves son (BHA) y (BHC)

q. Hallar un cubrimiento minimal de F en R. Mostrar los pasos seguidos.


4. Primer paso, llevar todas las dependencias funcionales a la forma X → Att, donde Att es un
solo atributo.
F1 = { AB → C, AB → E, AB → D, C → A, D → E, EH → G }
5. Segundo paso, eliminar atributos redundantes a la izquierda.
(A)+ = {A}⇒ B no es redundante en AB → C, AB → E y AB → D
(B) + = {B}⇒ A no es redundante en AB → C, AB → E y AB → D
(E) + = {E}⇒ H no es redundante en EH → G
(H) + = {H}⇒ E no es redundante en EH → G
F2 = F1
6. Tercer paso, eliminación de dependencias redundantes
F' = F2 − { AB → C }; (AB)+F, = {A,B,E,D} ⇒ AB → C no es una dependencia redundante en
F2
F' = F2 − { AB → E }; (AB)+F, = {A,B,C,E,D} ⇒ AB → E es una dependencia redundante en
F2
F3 = F'
F' = F3 − { AB → D }; (AB)+F, = {A,B,C} ⇒ AB → D no es una dependencia redundante en F3
F' = F3 − { C → A }; (C)+F, = {C} ⇒ C → A no es una dependencia redundante en F3
F' = F3 − { D → E }; (D)+F, = {D} ⇒ D → E no es una dependencia redundante en F3

35
F' = F3 − { EH → G }; (EH)+F, = {E,H} ⇒ EH → G no es una dependencia redundante en F3
Se concluye entonces que
Fminimal = F3 = { AB → C, AB → D, C → A, D → E, EH → G }

r. Sea la descomposición:
R(A,B,C,D,E,H,G)F = { AB → CED, C → Α, D → Ε, EH → G}
R1(A,B,D,E) FR1 = { AB → D, D → E }
R2(A,B,C,H,G) FR2 = { AB → C, C → A }

10. ¿ Es una descomposición con join sin pérdida ?


R1 ∩ R2 = (AB), R1 − R2 = (DE) y R2 − R1 = (CHG)
AB → DE ∈ F+ ⇒ Por la propiedad LJ1 la descomposición es con join sin pérdida.

11. ¿ Preserva las dependencias ?


πR1(F) = FR1 = { AB → D, D → E }, πR2(F) = FR2 = { AB → C, C → A }
K = { AB → D, D → E } ∪ { AB → C, C → A }
considero la dependencia EH → G; (EH)+K = { E,H }
por lo que al no estar G en el resultado de la clausura, no se conservan las dependencias.
12. ¿ En qué forma normal se encuentran R1 y R2 ?
R1(A,B,D,E), (AB) única clave.
D → E es una dependencia transitiva ⇒ viola 3NF ⇒ R1 está en 2NF
R2(A,B,C,H,G), { (ABHG) ,(CBHG) } son claves
AB → C , donde (AB) no es superclave viola BCNF. No hay dependencias transitivas ni
parciales (todos los atributos son primos) ⇒ R2 está en 3NF

s. Llevar R a 3NF con join sin pérdida y preservación de dependencias.


Utilizando el algoritmo visto en teórico, y partiendo del conjunto minimal planteado, llegamos a:
5. Fminimal = F3 = { AB → C, AB → D, C → A, D → E, EH → G }
6. Se juntan en un único esquema relación todas las dependencias de la forma X → Ai, para
formar
R(X,A1,A2,...,An)
Obtenemos: { R1(A,B,C,D) , R2(C,A) , R3(D,E) , R4(E,H,G) }
7. Se colocan todos los atributos que no se colocaron antes, en un único esquema de
relación.
No se da en este caso. Podemos simplificar la descomposición, quitando los subesquemas
incluidos dentro de otros.
Obtenemos: { R1(A,B,C,D) , R2(D,E) , R3(E,H,G) }
8. Si ninguno de los subesquemas contiene una clave de R, se agrega un esquema relación
mas que contenga los atributos que forman una clave de R.
Se agrega un esquema con la clave de R, R5(B,H,A)
Se obtiene entonces:
R(A,B,C,D,E,H,G) F = { AB → CED, C → Α, D → Ε, EH → G}

R1(A,B,C,D) FR1 = { AB → CD, C → Α }


R2(D,E) FR2 = { D → Ε }
R3(E,G,H) FR3 = { EH → G}
R4(A,B,H) FR4 = { }
ρ3NF = { (ABCD), (DE), (EGH), (BHA) }

t. Llevar la descomposición de la parte d. a BCNF con join sin pérdida. Indicar si se pierden
dependencias funcionales y cuales.
En la descomposición anterior sólo R1(A,B,C,D) está en 3NF, los demás están en BCNF.

36
R1 está en 3NF y no en BCNF, ya que la dependencia C → A viola BCNF (C no es
superclave).
Por lo tanto descomponemos está en dos:
R1(A,B,C,D) FR1 = { AB → CD, C → Α }, Claves: (AB, BC) , C → A viola BCNF

R11(B,C,D) FR11 = { } , Clave: (BCD)


R12(C,A) FR12 = { C → A } , Clave: (C)
ρBCNF = { (BCD), (CA), (DE), (EGH), (BHA) }

Aclaramos que: La nueva descomposición tiene join sin pérdida, ya que la anterior
descomposición a 3NF tenía jsp. Sin embargo, si se pierden dependencias, ya que antes de
aplicar el algoritmo se disponía de:
R1(A,B,C,D) F1 = { AB → C, AB → D, C → A } R2(D,E) F3 = { D → E }
R3(E,H,G) F4 = { EH → G } R4(B,H,A) F5 = { }
Donde claramente la unión de las proyecciones de las dependencias funcionales, es el
conjunto minimal de partida (Fminimal), por lo que las dependencias se preservan. Sin embargo,
al particionar R1, se obtiene R11(B,C,D) FR11 = { } con lo que las dependencias { AB → C, AB
→ D } se pierden. (se comprueba a simple vista, al unir las proyecciones de las dependencias
en BCNF, y tratar de deducir AB → C de dicho conjunto).

Ejercicio 12.
b. De la realidad planteada, se identifican las siguientes dependencias funcionales

"A cada persona que se inscribe se le pide el nombre, la edad, la DNI y la fecha de vencimiento
de la ficha médica." ⇒ DNI → nombre, edad, fechavencimiento
"El torneo se juega en un determinado conjunto de pistas de las que se conoce la dirección de
cada una, un código que las identifica, y si tienen iluminación o no"
⇒ códigopista → dirección, con_iluminación
"A cada partido se le asigna un código que lo identifica dentro del torneo, una hora, una pista,
dos inscritos diferentes (local y visitante), una etapa (eliminatorias, octavos, cuartos,
semifinales y final) y un ganador."
⇒ códigopartido → hora , códigopista , DNIlocal , DNIvisitante , etapa , DNIganador
"No se pueden jugar dos partidos a la misma hora en la misma pista."
⇒ hora , códigopista → códigopartido
"En cada etapa , cada jugador juega un solo partido."
⇒ DNIlocal , etapa → códigopartido, ⇒ DNIvisitante , etapa → códigopartido
Además debe tenerse en cuenta, que los jugadores locales y visitantes, son en realidad DNIs,
son los mismos atributos, con distinto nombre, por lo que pueden deducirse las siguientes
dependencias:
DNIlocal → DNI, DNI → DNIlocal, DNIvisitante → DNI, DNI → DNIvisitante ,
DNIganador → DNI, DNI → DNIganador

b. Teniendo en cuenta las dependencias encontradas, indicar en que forma normal se


encuentra el esquema que contiene todos los atributos. Si no se encuentra en una forma
normal "aceptable", normalícela hasta que así lo considere. Justifique las respuestas.

37
Renombrando el conjunto de atributos, tendremos:
Nombre Atrib Nombre Atrib Nombre Atrib Nombre Atrib Nombre Atrib
DNI C Edad E códigopista CC códigopartido CP DNIlocal CL
nombre N fechavencimiento FV dirección D hora H DNIvisitante CV
con_iluminac CI DNIganador CG etapa E

Obtenemos el esquema relación R sobre F con: R(C, N, E, FV, CC, D, CI, CP, H, CG, CL, CV, E)
según F = { C → N, E, FV ; CC → D, CI ; CP → H, CC, CL, CV, E, CG ; H, CC → CP; CL, E →
CP ; CV, E → CP; CG, E → CP; CL → C; CV → C; CG → C; C → CL; C → CV; C →
CG }

En vez de realizar el proceso acostumbrado de normalización, realizaremos antes un análisis de


las dependencias, a fin de determinar si no resulta más sencillo comenzar a normalizar
directamente, en forma intuitiva, pero justificando correctamente los resultados. Obtendremos una
descomposición en 3NF con join sin pérdida y sin pérdida de dependencias.
Inicialmente se pueden formar los siguientes esquemas (incluyendo la proyección de las
dependencias):

INSCRITOS (C, N, E, FV) FINSCRITOS { C → N, E, FV } Claves: (C)


PISTAS (CC, D, CI) FPISTAS { CC → D, CI } Claves: (CC)
PARTIDOS (CP, H, CC, CL, CV, E, CG ): Claves: { (CP) , (CC,H) , (CL,E), (CV,E) , (CG,E)}
FPARTIDOS { CP → H, CC, CL, CV, E, CG ; CC, H → CP ;CL, E → CP ; CV, E → CP ; CG, E → CP
}
DNI (C,CL,CG,CV) : Claves: { (C), (CC), (CV), (CG) }
FDNI { CL → C, CV → C, CG → C, C → CL, C → CV, C → CG }

Hay que tener presente que los atributos CL, CV y CG son DNIs de inscritos, motivo por el cual se
creó la relación PISTAS.
INSCRITOS está en BCNF, ya que la única dependencia que se cumple sobre esta tiene a la
izquierda una clave. La misma situación se da con PISTAS. En partidos, (CP) es una clave, por lo
que (CC,H), (CL,E), (CV,E) y (CG,E) también son claves porque determinan a (CP). De esta forma,
Partidos también está en BCNF.
DNI también esta en BCNF, ya que todos los atributos de la tabla son claves por si solos, motivo
por el cual todas las dependencia de FDNI tienen a la izquierda atributos que son superclaves.
Por lo tanto, la descomposición propuesta están en BCNF y por lo tanto en 3NF y como todas las
dependencias caen en un determinado subesquema, la unión de todas estas será el conjunto
original de dependencias , por lo que se preservan las dependencias funcionales.

Queda por verificar si cumple la propiedad de join sin pérdida. En este caso particular, se puede
observar que los joins posibles con sentido son entre INSCRITOS y CEDULAS ,entre PISTAS y
PARTIDOS y entre DNI y PARTIDOS. De esta forma se puede aplicar la propiedad DSPS1:

PISTAS ∩ PARTIDOS = { C } PISTAS – PARTIDOS = { DC,I}


Como se verifica que C → DC,I entonces este join es sin pérdida.
DNI ∩ PARTIDOS = { CL,CG,CV } DNI – PARTIDOS = { C }
Como se verifica que CL,CG,CV → C , entonces este join es sin pérdida.
INSCRITOS ∩ DNI = { C } DNI – INSCRITOS = { CL,CG,CV }
Como se verifica que C → CL,CG,CV entonces este join es sin pérdida.
Se deduce entonces que el esquema obtenido está en BCNF, preservando las dependencias
originales, asegurando además el join sin perdida.

38
Ejercicio 13.

Atributo Descripción Atributo Descripción r. Tenemos


NC Nombre calle EC Empresa constructora
NRO Número calle HO Hospital
IP Identificación plano ZD Zona deportiva
NI Nombre intendente ING Ingeniero

Por lo tanto, el esquema relación universal será de la forma:


R(NRO,NC,ID,EC,NI,AI,IP,ING,HO,ZD)

Se identifican las siguientes dependencias funcionales:

"Se sabe que una calle tiene tanto un número de calle como un nombre y que cada uno identifica
a la calle."
"El número de calle determina en forma única tanto el nombre de la calle como el identificador del
plano de la calle y la empresa constructora. "
"A su vez el número de la calle y la identificación del plano de la calle y la empresa constructora
son únicos dado el nombre de la calle."
"El nombre de la calle fue elegido durante el ejercicio de un intendente, es decir que el nombre del
intendente queda determinado por el nombre de la calle."
NRO → NC,IP,EC; NC → NRO,IP,EC,NI
"Dado el nombre y el número de la calle y el nombre del intendente queda determinado el año de
inauguración de la calle." NC,NRO,NI → AI
"Se sabe que una identificación del plano de una calle puede describir a distintas calles, pero un
plano es diseñado por una única empresa constructora."; IP → EC
"En la construcción de un hospital ó de una zona deportiva de fútbol designa un único ingeniero
responsable."; HO → EC,ING; ZD → EC,ING
"A su vez dichos ingenieros trabajan en una única empresa constructora."; ING → EC

s. Hallar todas las claves.


HO y ZD solo aparecen a la izquierda de las dependencias en F, por lo tanto ambos estarán
presentes en todas las claves de R.
(HO,ZD)+ = {HO,ZD,EC,ING}
Buscamos claves de 3 atributos:
(HO,ZD,NC)+ = {HO,ZD,NC,NRO,IP,EC,NI,AI,ING} = R
(HO,ZD,NRO)+ = {HO,ZD,NRO,NC,IP,EC,NI,AI,ING} = R
(HO,ZD,IP)+ = {HO,ZD,EC,ING,IP}
(HO,ZD,NI)+ = {HO,ZD,EC,ING,NI}
(HO,ZD,AI)+ = {HO,ZD,EC,ING,AI}
Con tres atributos, (HO,ZD,NC) y (HO,ZD,NRO) son clave de R
Buscamos claves con cuatro atributos.
Considero (R − {NRO,NC})
(R − {NRO,NC})+ = { HO,ZD,ING,AI,EC,NI,IP }
Por lo tanto se ve clausurando todos los atributos de la relación salvo NRO y NC, estos no se
obtienen en el resultado. Esto indica que en cualquier candidato a clave debe tenerse al menos
HO, ZD y NRO o HO, ZD y NC
Sin embargo, con estos tres, caemos en alguna de las dos claves anteriores. Por lo tanto, las
únicas claves son: K = { (HO,ZD,NC) , (HO,ZD,NRO) }

t. Se aplica el algoritmo de teórico para llegar a un cubrimiento minimal de F.


4. Primer paso, obtener dependencias con un solo atributo a la derecha

39
F1 = { NRO → NC; NRO → ID; NRO → EC; NC → NRO
NC → IP; NC → EC; NC → NI; NC,NRO,NI → AI; IP → EC; ING → EC
HO → EC; HO → ING; ZD → EC ; ZD → ING }

5. Segundo paso, eliminar atributos redundantes a la izquierda en las dependencias


La única dependencia donde pueden existir problemas es: NC,NRO,NI → AI
F2 = ( F1 − { NC,NRO,NI → AI } ) ∪ { NC → AI }
NC+F2 = { NC,NRO,NI,NC,AI } ⇒ NRO,NI son redundantes.
(observar que también pudo haberse retirado NC y NI, y aun con estos obtener AI. Esto
indica que el conjunto minimal no será único)
Obtenemos
F2 = { NRO → NC; NRO → IP; NRO → EC; NC → NRO
NC → IP; NC → EC; NC → NI; NC → AI; IP → EC
ING → EC; HO → EC; HO → ING; ZD → EC; ZD → ING
6. Tercer paso, eliminación de dependencias redundantes.
Antes de empezar a testear cada una de las dependencias, analizamos la situación antes.
NC → NI ; NC → AI
Estas son las únicas dependencias en donde NI y AI aparecen, y aparecen a la derecha. Por
lo tanto estas dos no pueden ser nunca eliminadas.
F' = F2 − { NRO → NC }; (NRO)+F, = {NRO,IP,EC} ⇒ NRO → NC no es redundante en F2
F' = F2 − { NRO → IP }; (NRO)+F, = {NRO,IP,EC,NC} ⇒ NRO → IP es redundante en F2
F3 = F'
F' = F3 − { NRO → EC }, (NRO)+F, = {NRO,NC,EC} ⇒ NRO → EC es redundante en F3
F4 = F'
F' = F4 − { NC → NRO }; (NC)+F, = {NC,IP,EC,NI,AI} ⇒ NC → NRO no es redundante en F4
F' = F4 − { NC → IP }; (NC)+F, = {NRO,NC,NI,EC,AI} ⇒ NC → IP no es redundante en F4
F' = F4 − { NC → EC }; (NC)+F, = {NRO,NC,IP,NI,AI,EC} ⇒ NC → EC es redundante en F4
F5 = F'
F' = F5 − { IP → EC }; (IP)+F, = {IP} ⇒ IP → EC no es una dependencia redundante en F5
F' = F5 − { ING → EC }; (ING)+F, = {ING} ⇒ ING → EC no es una dependencia redundante
en F5
F' = F5 − { HO → EC }; (HO)+F, = {HO,ING,EC} ⇒ HO → EC es redundante en F5 , la
quitamos
F6 = F'
F' = F6 − { HO → ING }; (HO)+F, = {HO} ⇒ HO → ING no es una dependencia redundante en
F6
F' = F5 − { ZD → EC }; (ZD)+F, = {ZD,ING,EC} ⇒ ZD → ING es redundante en F6 , la
quitamos
F7 = F' ; F' = F7 − { ZD → ING }; (HO)+F, = {ZD} ⇒ ZD → ING no es redundante en F7
Por lo tanto, el conjunto minimal obtenido es:
Fminimal = { NRO → NC, NC → NRO, NC → IP, NC → NI, NC → AI, IP → EC, ING → EC,
HO → ING, ZD → ING }

u. Llevamos a 3NF
Aplicamos el algoritmo para obtener una descomposición de R en 3NF
Tenemos:
Fminimal = { NRO → NC, NC → NRO, NC → IP, NC → NI, NC → AI, IP → EC, ING → EC,
HO → ING, ZD → ING }
Obtenemos al principio:
{ R1 (NRO, NC), R2 (NC, NRO), R3 (NC, IP), R4 (NC, NI), R5 (NC, AI), R6 (IP, EC), R7 (ING, EC),
R8 (HO, ING), R9 (ZD, ING) }

40
Simplificamos
{ R1 (NRO, NC). R3 (NC, IP, NI, AI), R6 (IP, EC), R7 (ING, EC), R8 (HO, ING), R9 (ZD, ING) }
Agregamos un esquema asociado a una de las claves de R
R10 (NC,ZD,HO)
Proyectamos las dependencias de Fminimal en el esquema obtenido:
R1 (NRO, NC) F = { NRO → NC, NC → NRO } claves: { (NRO) ,(NC) }
R3 (NC, IP, NI, AI) F = { NC → ID, NC → NI, NC → NI } clave: { (NC) }
R6 (IP, EC) F = { IP → EC } clave: { (IP) }
R7 (ING, EC) F = { ING → EC } clave: { (ING) }
R8 (HO, ING) F = { HO → ING } clave: { (HO) }
R9 (ZD, ING) F = { ZD → ING } clave: { (ZD) }
R10 (NC,ZD, HO) F = { } clave: { (NC,ZD,HO) }
No se pierde ninguna dependencia funcional, ya que la unión de las proyecciones es igual al
conjunto minimal, con lo que serán inmediatamante son equivalentes.
R1 (NRO, NC) R3 (NC, IP, NI, AI) R6 (IP, EC) R7 (ING, EC)
R8 (HO, ING) R9 (ZD, ING) R10 (NC,ZD, HO)

v. Llevamos a BCNF con join sin pérdida.


Para cada subesquema de la descomposición anterior, todas las dependencias de estos tienen a
la izquierda solo superclaves, por lo que estos estarán en BCNF, con lo que la descomposición
obtenida esta en BCNF

41

También podría gustarte