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 <tex>A \rightarrow \rightarrow B</tex> y <tex>BC \rightarrow \rightarrow D</tex> implican <tex>AC \rightarrow \rightarrow D</tex> usando el tableau y el metodo chase para <tex>R=[A,B,C,D,E]</tex>

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:

  1. B y C Solamente
  2. A y C solamente
  3. A
  4. 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
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 <tex>AC \rightarrow \rightarrow D</tex> es implicada por <tex>F = \{A \rightarrow \rightarrow B, BC \rightarrow \rightarrow D\}</tex> divido <tex>R</tex> en <tex>R1=[ACD]</tex> y <tex>R2=[ABCE]</tex> haciendo uso de la propiedad que indica que la descomposición de <tex>X \rightarrow \rightarrow Y</tex> se puede descomponer en <tex>R1=XY</tex> y <tex>R2=X(R-XY)</tex>.

A B C D E
R1 <tex>a_1</tex> <tex>b_{12}</tex> <tex>a_3</tex> <tex>a_4</tex> <tex>b_{15}</tex>
R2 <tex>a_1</tex> <tex>a_2</tex> <tex>a_3</tex> <tex>b_{24}</tex> <tex>a_5</tex>

Ahora, para demostrar que <tex>F |= AC \rightarrow \rightarrow D </tex>, usando el conjunto de dependencias <tex>F</tex> tendría conseguir una fila que tenga todas las variables distinguidas.
La dmv <tex>A \rightarrow \rightarrow B</tex> se transforma en una dependencia de junta <tex>|x|[ AB ; ACDE]</tex>
Por lo que si ahora proyectamos sobre cada conjunto de la junta obtenemos:

  • Por <tex>AB</tex>
A B
<tex>a_1</tex> <tex>b_{12}</tex>
<tex>a_1</tex> <tex>a_2</tex>
  • Por <tex>ACDE</tex>
A C D E
<tex>a_1</tex> <tex>a_3</tex> <tex>a_4</tex> <tex>b_{15}</tex>
<tex>a_1</tex> <tex>a_3</tex> <tex>b_{24}</tex> <tex>a_5</tex>

Si hacemos la junta de estas dos tablas, obtenemos las filas:

A B C D E
<tex>a_1</tex> <tex>b_{12}</tex> <tex>a_3</tex> <tex>a_4</tex> <tex>b_{15}</tex>
<tex>a_1</tex> <tex>b_{12}</tex> <tex>a_3</tex> <tex>b_{24}</tex> <tex>a_5</tex>
<tex>a_1</tex> <tex>a_2</tex> <tex>a_3</tex> <tex>a_4</tex> <tex>b_{15}</tex>
<tex>a_1</tex> <tex>a_2</tex> <tex>a_3</tex> <tex>b_{24}</tex> <tex>a_5</tex>

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 <tex>a_1</tex> <tex>b_{12}</tex> <tex>a_3</tex> <tex>a_4</tex> <tex>b_{15}</tex>
R2 <tex>a_1</tex> <tex>a_2</tex> <tex>a_3</tex> <tex>b_{24}</tex> <tex>a_5</tex>
Agregada por <tex>A \rightarrow \rightarrow B</tex> <tex>a_1</tex> <tex>b_{12}</tex> <tex>a_3</tex> <tex>b_{24}</tex> <tex>a_5</tex>
Agregada por <tex>A \rightarrow \rightarrow B</tex> <tex>a_1</tex> <tex>a_2</tex> <tex>a_3</tex> <tex>a_4</tex> <tex>b_{15}</tex>

La dmv <tex>B \rightarrow \rightarrow D</tex> se transforma en una dependencia de junta <tex>|x|[ BD ; ABCE]</tex>, por lo que si hacemos lo mismo que antes nos quedan las proyecciones:

  • Por <tex>BD</tex>
B D
<tex>b_{12}</tex> <tex>a_{4}</tex>
<tex>a_{2}</tex> <tex>b_{24}</tex>
<tex>b_{12}</tex> <tex>b_{24}</tex>
<tex>a_{2}</tex> <tex>a_{4}</tex>
  • Por <tex>ABCE</tex>
A C D E
<tex>a_1</tex> <tex>b_{12}</tex> <tex>a_{3}</tex> <tex>b_{15}</tex>
<tex>a_1</tex> <tex>a_{2}</tex> <tex>a_{3}</tex> <tex>a_{5}</tex>
<tex>a_1</tex> <tex>b_{12}</tex> <tex>a_{3}</tex> <tex>a_{5}</tex>
<tex>a_1</tex> <tex>a_{2}</tex> <tex>a_{3}</tex> <tex>b_{15}</tex>

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:

<tex>a_{2}</tex> <tex>a_1</tex> <tex>a_{2}</tex> <tex>a_{3}</tex> <tex>a_{4}</tex> <tex>a_{5}</tex>

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 <tex>B < 0</tex>:
    <tex> \frac{500*300}{100} </tex>
  • Para <tex>B = 0</tex>:
    <tex> 100*200</tex>
  • Para <tex>B > 0</tex>:
    <tex> \frac{400*500}{200} </tex>

Entonces nos queda:

<tex> \frac{500*300}{100} + 100*200 +  \frac{400*500}{200} = 1500 + 20000 + 1000 = 22500</tex>

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á.
materias/75/15/final_1_20090812_1.txt · Última modificación: 2009/08/17 19:52 por gsoriano
 
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