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 <tex> R(A,B,C,D) </tex> y <tex>M = \lbrace A  \rightarrow \rightarrow BCD, B \rightarrow AC, C \rightarrow D \rbrace </tex>. ¿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)
<tex>n_r = 1000 </tex> <tex>n_s = 2000</tex> <tex>n_t= 3000</tex> <tex>n_w = 4000</tex>
<tex>V(A,R) = 1000</tex> <tex>V(A,R) = 50</tex> <tex>V(A,T) = 50</tex>
<tex>V(B,R) = 50</tex> <tex>V(B,S) = 100</tex> <tex>V(B,W) = 40</tex>
<tex>V(C,R) = 20</tex> <tex>V(C,T) = 300</tex> <tex>V(D,W) = 100</tex>
<tex>V(D,S) = 200</tex> <tex>V(D,T) = 500</tex> <tex>V(D,W) = 400</tex>

Calcular el tamaño de la junta: <tex> (((R |X| S) |X| T) |X| W) </tex>

Punto III

Dada la siguiente tabla, Agencia_Tabla:

Agencia Autos_Vendidos Beneficios
SuAuto <tex>100</tex> $<tex>1000</tex>
AutoSi <tex>200</tex> $<tex>200</tex>
Todo BMW <tex>NULL</tex> $<tex>500</tex>
Ford <tex>50</tex> $<tex>750</tex>

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 <tex>M</tex> esquemas, donde cada campo pertenece a <tex>N_i</tex> esquemas y queremos estimar su tamaño tenemos que hacer la división que tiene la multiplicación de todos los <tex>n_j</tex> con <tex>1 \leq j \leq M</tex> en el dividendo y la multiplicación de los <tex>N_i-1</tex> máximos valores de <tex>V(X,R)</tex> 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 <tex>V(A,X)</tex>, por los 2 máximos valores de <tex>V(B,X)</tex>, por los 2 máximos valores de <tex>V(C,X)</tex>, por los 2 máximos valores de <tex>V(C,X)</tex> con <tex>X \in [A, B, C, D]</tex> y quedaría una cosa así:

<tex> \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)} </tex>

reemplazando con números:

<tex> \frac{(1000*2000*3000*4000)}{(1000*50)*(50*100)*(300*100)*(500*400)} </tex>

y haciendo las cuentas:

<tex> \frac{24.000.000.000.000}{1.500.000.000.000.000.000}= 0 </tex>

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 <T,X,N> 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…

materias/75/15/final_1_20090805_1.txt · Última modificación: 2011/12/14 12:19 por juanpr
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 3.0 Unported


Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki