BASES DE DATOS PRACTICO 8 IN.CO. 90 -1SOLUCIONES -0 Ejercicio 1. a). Seudotransitiva para mvds: { X ->> Y, WY ->> Z } |= WX ->> (Z - WY) { X ->> Y } |=S1A5T WX ->> WY { WX ->> WY, WY ->> Z } |=S1A6T WX ->> (Z - WY) b). Seudotransitiva mixta: { X ->> Y, XY -> Z } |= X -> (Z - Y) Calculo DB(X): S0 = {(XYZ-X)} = {(YZ-X)} S1 = {(Y-X) (Z-Y-X) } X->> Y, => se cumple X ->> Z-Y-X Por hipotesis: XY -> Z => XY -> Z-Y => por Axioma 8: X -> Z-X Ejercicio 2. R(A,B,C,D,E,G) y F={ A ->> B, A ->> C, B ->> GE, D -> E, B ->> DE, D ->> G } {A ->> B, A ->> C} |= (A ->> BC) |= (A ->> DEG) \ (A ->> D) |= (A -> E) {A ->> B, B ->> GE} |= (A -> GE) / 'X'=A 'W'=D 'Z'=E 'Y'=GE {A ->> D, AD -> E} |= A -> E {B ->> GE, B ->> DE} |= {B ->> E, B ->> D, B ->> G} {D ->> E, D ->> G} |= D ->> EG y {B ->> D, BD -> E} |= B -> E no se cumplen: A -> D, B ->> C, B ->> A, B -> D, D ->> B, D -> A se cumplen: A ->> BC, A ->> GE, A ->> DEG, A -> E, A ->> D, A ->> G, B ->> E, B ->> D, B ->> G, B ->> DG, B -> E, D ->> EG, D ->> E, D ->> G, Calculo la DB(A): S0= { BCDEG } S1= { B,CDEG } por A ->> B S2= { B,C,DEG } por A ->> C S3= { B,C,GE,D } por B ->> GE S4= { B,C,E,G,D } por D ->> G (o D ->> E) ==> DB(A) = { B,C,E,G,D } Entonces: * { A ->> BC, A ->> GE, A ->> DEG, A ->> D, A ->> G } se cumplen por se union de elementos de la DB(A). * A -> E se cumple porque: E î DB(A) y ( D -> E ) î F. * A -> D no se cumple porque no existe fd con D en la parte derecha. Calculo la DB(B): S0 = { ACDEG } S1 = { GE, ACD } por B ->> GE S2 = { G,E,AC,D } por B ->> DE .No se puede descomponer (AC) porque la unica mvd con A o C a la derecha (que es A ->> C) contiene a A a la izquierda, por lo que no es valida para descomponer. ==> DB(B) = { G,E,AC,D } _s Entonces: * {B ->> E, B ->> D, B ->> G, B ->> DG} se cumplen por se union de elementos de la DB(B). * B -> E se cumple porque: E î DB(B) y (D -> E) î F. * B ->> C, B ->> A no se cumplen (no son U de elem. de la DB(B)). * B -> D no se cumple por la misma razon que A -> D. Calculo DB(D): S0 = { ABCEG } S1 = { E,ABCG } por D ->> E S2 = { E,G,ABC } por D ->> G .No se puede seguir descomponiendo por la misma razon que en DB(B). ==> DB(D) = { E,G,ABC } Entonces: * {D ->> EG, D ->> E, D ->> G} se cumplen por se U de elem. de la DB(D). * D ->> B y D -> A no se cumplen. Ejercicio 3 Definicion alternativa para mvd: En R(XYZ) se cumple X ->> Y sii los valores de X se relacionan con varios valores de Y y con varios valores de Z. a) Es incorrecta. Contraejemplo: R(A B C) F={ B->C } Segun esta definicion la siguiente relacion de R satisface A->>B A B C ---------- a1 b1 c1 a1 b2 c2 pero con nuestra definicion de mvd, no satisface A->>B, ya que implicaria la existencia de las tuplas a1 b1 c2 a1 b2 c1, qque no son validas por violar B->C. b) Contraejemplo: R(A B C D) p= { R1(A C), R2(A B D) } r a1 b1 c1 d1 a1 b2 c2 d2 Segun la definicion alternativa se cumple A->>C y A->>DB, si se cumple el teorema p debe ser con jsp. r1 a1 c1 r2 a1 b1 d1 a1 c2 a1 b2 d2 Al hacer el join, r1 |><| r2 incluye la tupla a1 b2 c1 d2 que no pertenece a r. _s Ejercicio 6 R(A B C D E), alg. 4NF con jsp (1 paso) / \ R1(A B C) R2(B C D E) a) En R se debe cumplir BC->>A y BC no es superclave. b) R1 (A B C) BC->>A A ->>B => A->>B viola 4NF => R1 esta en BCNF clave ABC R2 (B C D E) BC->>D => BC->>D viola 4NF => R2 esta en BCNF clave BCDF c) R1 (A B C) R2 (B C D E) BC->>A BC ->>D A ->>B / \ / \ R11 (A B) R12 (A C) R21 (B C D) R22 (B C E) A->>B ----- BC ->>D ------ 4NF 4NF 4NF 4NF Descomposicion de R en 4NF con jsp: p = { (A B), (A C), (B C D), (C B E) } Ejercicio 7 R (A B C D) F conjunto de dfs. sobre R con un solo atributo a la derecha. R (A B C D) 1 paso algoritmo 4NF con jsp. / \ R1 (A B) R2 (B C D) => Se cumple B->A en R (B->>A). a) Expresa la cantidad de tuplas de r - r1 |><| r2. Como el algoritmo de 4NF garantiza jsp en todos sus pasos, entonces r = r1 |><| r2, entonces esta consulta sera vacia. b) B es clave en R1. Por lo tanto, para cada valor de B existe un unico valor de A asociado, por lo tanto no hay grupos con mas de una tupla, entonces el resultado es vacio. c) No se puede predecir, no tenemos informacion de si existe relacion de los valores de A con los de B. d) Idem c). _s Ejercicio 9 * ( AB, CDE, EG, BC) a) F1= { A->C, B->D, E->G, GE->D, C->E, D->G, G->C, CD->A } La descomposicion tiene jsp => A partir de F1 se deduce * (AB, CDE, EG, BC). b) F2= { A->C, B->D, E->G, GE->D, C->E, D->G, G->C, CD->A } La descomposicion p ( AB, CDE, EG, BC) tienen join con perdida, => a partir de F2 no se deduce * ( AB, CDE, EG, BC). c) F3 = { B->D, E->G, C->E, D->G, G->C, GE->D, CD->A } La descomposicion p ( AB, CDE, EG, BC) tiene jsp => a partir de F3 se deduce * ( AB, CDE, EG, BC). Ejercicio 10 FABS (#f, nom_f, dir_f) FP (#f, #p, precio) PRODS (#p, desc) f = { #f -> nom_f,dir_f, #f,#p->precio, #p->desc } R (#f, nom_f, dir_f, #p, desc, precio ) i) De F se deduce *((#f,nom_f,dir_f), (#f, #p, precio), (#p,desc)) sii p (FABS, FP, PRODS) es con jsp. #f nom_f dir_f #p desc precio FABS a1 a2 a3 b14 b15 b16 FP a1 a2 a3 a4 a5 a6 PRODS a1 b32 b33 a4 a5 b36 Aplicando #f -> nom_f, dir_f; #p->desc => p es con jsp => de F se deduce *((#f,nom_f,dir_f), (#f, #p, precio), (#p,desc)) ii) Sabemos que se cumple #f->> nom_f, dir_f => #f ->> #p, desc, precio se cumple por complemento. _s iii) Ver si dado F se deduce #p->> #f, nom_f, dir_f Para que se cumpla esta mvd, si existen la siguientes tuplas #f nom_f dir_f #p desc precio f1 n1 d1 p1 de1 pr1 f2 n2 d2 p1 de1 pr2 deben existir las siguientes tuplas f1 n1 d1 p1 de1 pr2 f2 n2 d2 p1 de1 pr1 Lo cual no es valido porque estaria violando la df #f,nom_f->precio. => De F no puedo deducir esa multivaluada.