diseÑo de bases de datos. dependencias funcionales. ejercicios...

41
1 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. A B C D E a 1 b 1 c 1 d 1 e 1 a 2 b 2 c 2 d 1 e 1 b. A B C D E a 1 b 1 c 1 d 1 e 1 a 2 b 2 c 2 d 1 e 2 c. A B C D E a 1 b 1 c 1 d 1 e 1 a 2 b 1 c 1 d 2 e 1 d. A B C D E a 1 b 1 c 1 d 1 e 1 a 1 b 1 c 2 d 1 e 1 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. b. { XZ Y } X Y. c. { XZ Y, X Z } X Y. d. { Z W , X Y } XZ YW. e. { XY Z, Z X } Z Y. f. { X Y, Y Z } X YZ. g. { X Y, W Z, W Y } X Z. 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 + b. B + c. (CD) + d. (BEI) + e. (BE) + f. (HA) + g. (ABH) + 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 b. E D c. C DE d. A C e. HA CD f. CD E g. A D 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

Upload: duongdan

Post on 06-Oct-2018

253 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

1

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. A B C D E a1 b1 c1 d1 e1 a2 b2 c2 d1 e1

b. A B C D E a1 b1 c1 d1 e1a2 b2 c2 d1 e2

c. A B C D E a1 b1 c1 d1 e1a2 b1 c1 d2 e1

d. A B C D E a1 b1 c1 d1 e1a1 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. b. { XZ → Y } ╞ X → Y. c. { XZ → Y, X → Z } ╞ X → Y. d. { Z → W , X →Y } ╞ XZ →YW.

e. { XY → Z, Z → X } ╞ Z → Y. f. { X → Y, Y → Z } ╞ X → YZ. g. { X → Y, W → Z, W ⊆ Y } ╞ X → Z. 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+ b. B+

c. (CD) + d. (BEI)+

e. (BE) + f. (HA) +

g. (ABH) +

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 b. E → D

c. C → DE d. A → C

e. HA → CD f. CD → E

g. A → D

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

Page 2: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

2

1. (AD) 2. (D)

3. (BC) 4. (EB)

5. (B) 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.

Page 3: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

3

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

Page 4: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

a. A B C D E a1 b1 c1 d1 e1 a2 b2 c2 d1 e1

No satisface F. Viola E → B , ya que si la primer tupla se denomina t , y la segunda u , se tendrá que: t[E] = u[E] = e1 , pero t[B] ≠u[B] con lo que no se cumple la definición de dependencia funcional.

b. A B C D E a1 b1 c1 d1 e1 a2 b2 c2 d1 e2

Satisface F, trivialmente, ya que para todo par de tuplas u, t en esta instancia de R y para toda dependencia funcional Att1 → Att2 en F, se cumple que: t[Att1] = u[Att1] con lo que la definición de dependencia funcional será valida en todos los casos planteables.

c.

A B C D E a1 b1 c1 d1 e1 a2 b1 c1 d2 e1

No satisface F. Viola B → D , ya que como se hizo en el caso b. si la primer tupla se denomina t , y la segunda u , se tendrá que: t[B] = u[B] = e1 , pero t[D] ≠ u[D] con lo que no se cumple la definición de dependencia funcional.

d.

A B C D E a1 b1 c1 d1 e1 a1 b1 c2 d1 e1

Satisface F, ya que para todo par de tuplas u, t en esta instancia de R y para toda dependencia funcional Att1 → Att2 en F, se cumple que: t[Att1] = u[Att1] → t[Att2] = u[Att2] 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].

c. No es correcta, ya que obligaría a que los valores de X y Y fueran siempre los mismos, lo cual es más restrictivo que una fd. 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): Se repiten valores de X y no se viola X → Y.

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.

X Y Z x1 y1 z1x2 y1 z2

X Y Z x1 y1 z1x1 y1 z2

Page 5: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

5

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): No hay una correspondencia biunívoca y no se viola X → Y.

X Y Z x1 y1 z1 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

No se cumple. Ver este contraejemplo: R(X,Y,Z) Esta relación satisface XZ → Y, pero no satisface X → Y.

X Y Z x1 y1 z1x1 y2 z2

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: R(X,Y,Z)

Esta relación satisface XY → Z y Z→ X, pero no satisface Z → Y.

X Y Z x1 y1 z1x1 y2 z1

f. { X → Y, Y → Z } ╞ X → YZ Se cumple { X → Y, Y → Z } ╞ X → Z Transitiva { X → Z , X → Y } ╞ X → YZ Unión

Page 6: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

6

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: R(W,X,Y,Z)Esta relación satisface XY → Z y Y→ W pero no satisface XW → Z.

W X Y Z

w1 x1 y1 z1 w1 x1 y2 z2

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

Page 7: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

7

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 } 2. (D) + = { D, A, C, G } 3. (BC) + = { B, C }

4. (EB) + = { E, B, A, C, D, G } 5. (B) + = { B } 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.

Page 8: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

8

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. Sea la siguiente relación: R(A,B,C,D,E) Satisface F1 pero no F. (C →E) ∉ F1

+

b. F2 = { AB →D, D →C, C →DE, E →C } No son equivalentes. Sea la siguiente relación: R(A,B,C,D,E)

Satisface F pero no F2. (D →C) ∉ F+

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

+: (AB) +

F3 = { A, B, C, D, E } ⇒ (AB →C) ∈ F3+.

(C) +F3 = { C, D, E } ⇒ (C →DE) ∈ F3

+. (E) +

F3 = { E, C, D } ⇒ (E →C} ∈ F3+.

F3 ⊆ F+: (AB) +

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

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

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

A B C D E a1 b1 c1 d1 e1 a1 b2 c1 d1 e2

A B C D E a1 b1 c1 d1 e1 a1 b2 c2 d1 e2

Page 9: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

9

d. F4 = { A →C, B →C, C →DE, E →C } No son equivalentes. Sea la siguiente relación: R(A,B,C,D,E)Satisface F pero no F4. (A →C, B →C) ∉ F+

A B C D E a1 b1 c1 d1 e1 a1 b2 c2 d1 e2

Page 10: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

10

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}

Page 11: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

11

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.

Page 12: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

12

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.

Page 13: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

13

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 }

Page 14: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

14

(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) }

Page 15: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

15

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

Page 16: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

16

F2 = 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}

Page 17: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

17

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

Page 18: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

18

"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 AtribDNI 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.

Page 19: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

19

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.

f. Tenemos

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

Page 20: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

20

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.

Page 21: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

21

(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) }

Page 22: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

22

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

Page 23: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

23

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. A B C D E a1 b1 c1 d1 e1 a2 b2 c2 d1 e1

b. A B C D E a1 b1 c1 d1 e1a2 b2 c2 d1 e2

c. A B C D E a1 b1 c1 d1 e1a1 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. j. { XZ → Y } ╞ X → Y. k. { XZ → Y, X → Z } ╞ X → Y. l. { Z → W , X →Y } ╞ XZ →YW.

m. { XY → Z, Z → X } ╞ Z → Y. n. { X → Y, Y → Z } ╞ X → YZ. o. { X → Y, W → Z, W ⊆ Y } ╞ X → Z. 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+ i. B+

j. (CD) + k. (BEI)+

l. (BE) + m. (HA) +

n. (ABH) +

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 i. E → D

j. C → DE k. A → C

l. HA → CD m. CD → E

n. A → D

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) 8. (D)

9. (BC) 10. (EB)

11. (B) 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.

Page 24: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

24

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.

Page 25: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

25

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.

Page 26: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

26

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

Page 27: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

a. A B C D E a1 b1 c1 d1 e1 a2 b2 c2 d1 e1

No satisface F. Viola E → B , ya que si la primer tupla se denomina t , y la segunda u , se tendrá que: t[E] = u[E] = e1 , pero t[B] ≠u[B] con lo que no se cumple la definición de dependencia funcional.

b. A B C D E a1 b1 c1 d1 e1 a2 b2 c2 d1 e2

Satisface F, trivialmente, ya que para todo par de tuplas u, t en esta instancia de R y para toda dependencia funcional Att1 → Att2 en F, se cumple que: t[Att1] = u[Att1] con lo que la definición de dependencia funcional será valida en todos los casos.

c.

A B C D E a1 b1 c1 d1 e1 a1 b1 c2 d1 e1

Satisface F, ya que para todo par de tuplas u, t en esta instancia de R y para toda dependencia funcional Att1 → Att2 en F, se cumple que: t[Att1] = u[Att1] → t[Att2] = u[Att2] 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

No se cumple. Ver este contraejemplo: R(X,Y,Z) Esta relación satisface XZ → Y, pero no satisface X → Y.

X Y Z x1 y1 z1x1 y2 z2

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: R(X,Y,Z)

Esta relación satisface XY → Z y Z→ X, pero no satisface Z → Y.

X Y Z x1 y1 z1x1 y2 z1

n. { X → Y, Y → Z } ╞ X → YZ Se cumple { X → Y, Y → Z } ╞ X → Z Transitiva

Page 28: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

28

{ 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: R(W,X,Y,Z)Esta relación satisface XY → Z y Y→ W pero no satisface XW → Z.

W X Y Z

w1 x1 y1 z1 w1 x1 y2 z2

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

Page 29: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

29

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

Page 30: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

30

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 } 8. (D) + = { D, A, C, G } 9. (BC) + = { B, C }

10. (EB) + = { E, B, A, C, D, G } 11. (B) + = { B } 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 }

Page 31: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

31

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. Sea la siguiente relación: R(A,B,C,D,E) Satisface F1 pero no F. (C →E) ∉ F1

+

f. F2 = { AB →D, D →C, C →DE, E →C } No son equivalentes. Sea la siguiente relación: R(A,B,C,D,E)

Satisface F pero no F2. (D →C) ∉ F+

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

+: (AB) +

F3 = { A, B, C, D, E } ⇒ (AB →C) ∈ F3+.

(C) +F3 = { C, D, E } ⇒ (C →DE) ∈ F3

+. (E) +

F3 = { E, C, D } ⇒ (E →C} ∈ F3+.

F3 ⊆ F+: (AB) +

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

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

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

No son equivalentes. Sea la siguiente relación: R(A,B,C,D,E)Satisface F pero no F4. (A →C, B →C) ∉ F+

A B C D E a1 b1 c1 d1 e1 a1 b2 c1 d1 e2

A B C D E a1 b1 c1 d1 e1 a1 b2 c2 d1 e2

A B C D E a1 b1 c1 d1 e1 a1 b2 c2 d1 e2

Page 32: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

32

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}

Page 33: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

33

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

Page 34: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

34

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.

Page 35: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

35

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

Page 36: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

36

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.

Page 37: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

37

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.

Page 38: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

38

Renombrando el conjunto de atributos, tendremos: Nombre Atrib Nombre Atrib Nombre Atrib Nombre Atrib Nombre AtribDNI 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.

Page 39: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

39

Ejercicio 13.

r. Tenemos

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

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

Page 40: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

40

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) }

Page 41: DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios …dis.um.es/~jfernand/0405/dbd/soluciones.pdf · 1 DISEÑO DE BASES DE DATOS. DEPENDENCIAS FUNCIONALES. Ejercicios

41

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