Cátedra: Ale
Fecha: 1era Oportunidad - 1er Cuatrimestre 2009
Día: 05/08/2009
Sea y
. ¿Se encuentra en 4FN? En caso negativo, normalizarla.
En base a las siguientes estadísticas:
R(A,B,C) | S(A,B,D) | T(A,C,D) | W(B,C,D) |
---|---|---|---|
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | — |
![]() | ![]() | — | ![]() |
![]() | — | ![]() | ![]() |
— | ![]() | ![]() | ![]() |
Calcular el tamaño de la junta:
Dada la siguiente tabla, Agencia_Tabla:
Agencia | Autos_Vendidos | Beneficios |
---|---|---|
SuAuto | ![]() | $![]() |
AutoSi | ![]() | $![]() |
Todo BMW | ![]() | $![]() |
Ford | ![]() | $![]() |
Cual es la salida de la consulta:
SELECT COUNT(Autos_Vendidos) FROM Agencia_Tabla;
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.
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.
(Corregido por Alé)
Cuando tenes una junta de esquemas, donde cada campo pertenece a
esquemas y queremos estimar su tamaño tenemos que hacer la división que tiene la multiplicación de todos los
con
en el dividendo y la multiplicación de los
máximos valores de
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 , por los 2 máximos valores de
, por los 2 máximos valores de
, por los 2 máximos valores de
con
y quedaría una cosa así:
reemplazando con números:
y haciendo las cuentas:
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.
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.
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…