====== Examen Final - 75.15. Base de Datos - 12/08/2009 ====== **Cátedra:** Ale (catedra unica)\\ **Fecha:** 2° Oportunidad - (2° Cuatrimestre) 2008\\ **Día:** 12/08/2009 Esta página está incompleta; podés ayudar completando el material. ===== Enunciado ===== ==== Ejercicio I ==== Mostrar que A \rightarrow \rightarrow B y BC \rightarrow \rightarrow D implican AC \rightarrow \rightarrow D usando el tableau y el metodo chase para R=[A,B,C,D,E] ==== Ejercicio II ==== Estimar el tamaño de R(AB)|x|S(BC) si se cuenta con el siguiente histograma ^ ^ B<0 ^ B=0 ^ B>0 ^ | R | 500 | 100 | 400 | | S | 300 | 200 | 500 | Asumir que existen 100 valores diferenties de B<0 y 200 valores de B>0 ==== Ejercicio III ==== Dada la tabla Notas: ^ Estudiante ^ Nota_BD ^ Nota_SII ^ | A | 4 | Null | | B | Null | 9 | | C | 10 | 8 | La consulta: SELECT Estudiante FROM Notas WHERE (Nota_BD > Nota_SII AND Nota_SII > 7 AND Nota_BD > 9 ) OR ( Nota_BD < 5) Da como resultado: - B y C Solamente - A y C solamente - A - A, B y C Elegir la respuesta correcta y justificar ==== Ejercicio IV ==== Sabiendo que el algoritmo de recuperacion (creacion de logs? no recuerdo) es UNDO/REDO, demostrar los registros que se generaron en el LOG. Valores iniciales: *salario = 1 *tax = 2 ^ N° ^ Transaccion 1 ^ Transaccion 2 ^ Transaccion 3 ^ | 1 | | | Start | | 2 | | | Read tax | | 3 | | | tax=tax+1 | | 4 | Start | | | | 5 | Read Salario | | | | 6 | salario = salario+1 | | | | 7 | | | Write tax | | 8 | | | commit | | 9 | | start | | | 10 | | Read tax | | | 11 | | Read salario | | | 12 | | tax= ...(no copie mas) | | | 13 | | | | | 14 | | | | | 15 | | | | | 16 | | | | Esta tabla esta incompleta; no llegue a terminar de copiarla... A ver si alguien la puede completar. ===== Resolución ===== ==== Ejercicio I ==== No estoy del todo seguro, pero lo encararía de esta forma. Como busco demostrar que AC \rightarrow \rightarrow D es implicada por F = \{A \rightarrow \rightarrow B, BC \rightarrow \rightarrow D\} divido R en R1=[ACD] y R2=[ABCE] haciendo uso de la propiedad que indica que la descomposición de X \rightarrow \rightarrow Y se puede descomponer en R1=XY y R2=X(R-XY).\\ ^ ^ A ^ B ^ C ^ D ^ E ^ ^ R1 | a_1 | b_{12} | a_3 | a_4 | b_{15} | ^ R2 | a_1 | a_2 | a_3 | b_{24} | a_5 | Ahora, para demostrar que F |= AC \rightarrow \rightarrow D , usando el conjunto de dependencias F tendría conseguir una fila que tenga todas las variables distinguidas. \\ La dmv A \rightarrow \rightarrow B se transforma en una dependencia de junta |x|[ AB ; ACDE]\\ Por lo que si ahora proyectamos sobre cada conjunto de la junta obtenemos: \\ * Por AB ^ A ^ B ^ | a_1 | b_{12} | | a_1 | a_2 | * Por ACDE ^ A ^ C ^ D ^ E ^ | a_1 | a_3 | a_4 | b_{15} | | a_1 | a_3 | b_{24} | a_5 | Si hacemos la junta de estas dos tablas, obtenemos las filas: ^ A ^ B ^ C ^ D ^ E ^ | a_1 | b_{12} | a_3 | a_4 | b_{15} | | a_1 | b_{12} | a_3 | b_{24} | a_5 | | a_1 | a_2 | a_3 | a_4 | b_{15} | | a_1 | a_2 | a_3 | b_{24} | a_5 | Pero como las filas 1 y 4 ya están en el tableau, no las agrego, por lo que ahora me queda:\\ ^ ^ A ^ B ^ C ^ D ^ E ^ ^ R1 | a_1 | b_{12} | a_3 | a_4 | b_{15} | ^ R2 | a_1 | a_2 | a_3 | b_{24} | a_5 | ^ Agregada por A \rightarrow \rightarrow B | a_1 | b_{12} | a_3 | b_{24} | a_5 | ^ Agregada por A \rightarrow \rightarrow B | a_1 | a_2 | a_3 | a_4 | b_{15} | La dmv B \rightarrow \rightarrow D se transforma en una dependencia de junta |x|[ BD ; ABCE], por lo que si hacemos lo mismo que antes nos quedan las proyecciones: * Por BD ^ B ^ D ^ | b_{12} | a_{4} | | a_{2} | b_{24} | | b_{12} | b_{24} | | a_{2} | a_{4} | * Por ABCE ^ A ^ C ^ D ^ E ^ | a_1 | b_{12} | a_{3} | b_{15} | | a_1 | a_{2} | a_{3} | a_{5} | | a_1 | b_{12} | a_{3} | a_{5} | | a_1 | a_{2} | a_{3} | b_{15} | Al hacer la junta de estas dos tablas, en particular la fila 4 de la primera con la 2 de la segunda, va a aparecer una fila con todos los valores distinguidos: | a_{2} | a_1 | a_{2} | a_{3} | a_{4} | a_{5} | ==== Ejercicio II ==== No estoy del todo seguro, pero me dijeron que se hacía así. Para estimar el tamaño de esa junta tenemos que calcular cada rango por separado y sumarlos:\\ * Para B < 0: \\ \frac{500*300}{100} * Para B = 0: \\ 100*200 * Para B > 0: \\ \frac{400*500}{200} Entonces nos queda: \\ \frac{500*300}{100} + 100*200 + \frac{400*500}{200} = 1500 + 20000 + 1000 = 22500 ==== Ejercicio III ==== La respuesta es "A y C solamente". ==== Ejercicio IV ==== ===== Discusión ===== Si ves algo que te parece incorrecto en la resolución y no te animás a cambiarlo, dejá tu comentario acá.