====== Examen Final - 75.15. Base de datos - 05/08/2009 ======
**Cátedra:** Ale\\
**Fecha:** 1era Oportunidad - 1er Cuatrimestre 2009\\
**Día:** 05/08/2009
Esta página está incompleta; podés ayudar completando el material.
===== Enunciado =====
==== Punto I ====
Sea R(A,B,C,D) y M = \lbrace A \rightarrow \rightarrow BCD, B \rightarrow AC, C \rightarrow D \rbrace . ¿Se encuentra en 4FN? En caso negativo, normalizarla.
==== Punto II ====
En base a las siguientes estadísticas:
^ R(A,B,C) ^ S(A,B,D) ^ T(A,C,D) ^ W(B,C,D) ^
| n_r = 1000 | n_s = 2000 | n_t= 3000 | n_w = 4000 |
| V(A,R) = 1000 | V(A,R) = 50 | V(A,T) = 50 | --- |
| V(B,R) = 50 | V(B,S) = 100 | --- | V(B,W) = 40 |
| V(C,R) = 20 | --- | V(C,T) = 300 | V(D,W) = 100 |
| --- | V(D,S) = 200 | V(D,T) = 500 | V(D,W) = 400 |
Calcular el tamaño de la junta: (((R |X| S) |X| T) |X| W)
==== Punto III ====
Dada la siguiente tabla, Agencia_Tabla:
^ Agencia ^ Autos_Vendidos ^ Beneficios ^
| SuAuto | 100 | $1000 |
| AutoSi | 200 | $200 |
| Todo BMW | NULL | $500 |
| Ford | 50 | $750 |
Cual es la salida de la consulta:
SELECT COUNT(Autos_Vendidos) FROM Agencia_Tabla;
* a) 350
* b) NULL
* c) 3
* d) Ninguna de las anteriores
==== Punto IV ====
En un momento dado se toma una imagen de la base de datos (persistida en disco) y se observa lo siguiente:
^ Atributo ^ Valor ^
| A | 13 |
| B | 40 |
| C | 35 |
| D | 4 |
| E | 18 |
Dado el siguiente log:
(T1,START);(T1,D;4);(T2,START);(T2,E;6);(T1,A;5);(START CHKPNT, (T1,T2));
(T1,E;18);(T3,START);(T3,C;35);(T3,A;13);(T2,COMMIT);(T3,B;40);(T3,COMMIT);
(END CHKPNT);(T1,A;18);(T1,COMMIT)
Justificar si es UNDO, REDO o ninguno.
===== Resuelto =====
==== Punto I ====
No esta en 4FN, y para que lo este hay que dividirlo en R1=(ABC) y R2=(CD).\\
La única clave de R es B, ya que B+ = ABCD.
==== Punto II ====
(Corregido por Alé)\\
Cuando tenes una junta de M esquemas, donde cada campo pertenece a N_i esquemas y queremos estimar su tamaño tenemos que hacer la división que tiene la multiplicación de todos los n_j con 1 \leq j \leq M en el dividendo y la multiplicación de los N_i-1 máximos valores de V(X,R) en el divisor.\\
En este caso tenemos 4 esquemas, y cada campo pertenece a 3 esquemas, por lo que al hacer la junta tengo que multiplicar solo los 2 máximos valores de V(A,X), por los 2 máximos valores de V(B,X), por los 2 máximos valores de V(C,X), por los 2 máximos valores de V(C,X) con X \in [A, B, C, D] y quedaría una cosa así:\\
\frac{(n_r*n_s*n_t*n_w)}{V(A,R)*V(A,S)*V(B,R)*V(B,S)*V(C,T)*V(C,W)*V(D,T)*V(D,W)} \\
reemplazando con números:\\
\frac{(1000*2000*3000*4000)}{(1000*50)*(50*100)*(300*100)*(500*400)} \\
y haciendo las cuentas:\\
\frac{24.000.000.000.000}{1.500.000.000.000.000.000}= 0
==== Punto III ====
La respuesta (corregida por Alé) era la c, es decir, al ejecutar esa sentencia el nos dará 3 (no cuenta el NULL). \\
Tener en cuenta que ponían un COUNT(*), es decir, sin el "Autos_Vendidos", el resultado hubiese sido 4, es decir, d. \\
Si lo que querían hacer era calcular la cantidad de autos vendidos (como dijo Alé en el coloquio que era el objetivo) tendrían que cambiar el COUNT(Autos_Vendidos) por un SUM(Autos_Vendidos). \\
Por lo que me comentaron, también daba como verdadera la opción d, ya que en el libro de Alé daba a entender que podía ser 4.
==== Punto IV ====
Era Redo porque el Commit de T1 si hizo después del End CheckPoint y T1 era una de las transacciones que habían comenzado y no terminado antes del Start CheckPoint.
===== Discusión =====
Si ves algo que te parece incorrecto en la resolución y no te animás a cambiarlo, dejá tu comentario acá.
Se puede ver tmb que es Redo porque los registros se conforman de donde T es la transacción que está modificando el item X y N es el nuevo valor de X... se ve que al final T1 cambia el valor de A pero no se llega a escribir a disco...