08-03-2012, 00:24
Gente, ¿cómo andan?. Dejo un estimativo de lo que fue el final, ya que no pude conseguirlo en papel. Si alguien puede hacerlo, se lo agradezco así las consignas quedan más claras.
Punto 1
1a) Si se tiene una vista que relaciona varias tablas y una de ellas posee un índice, el motor no puede utilizarlo para generar una consulta más performante.
Falso. Lo que no se puede hacer es generar un índice sobre una vista.
1b) Se puede ejecutar un store procedure en una consulta SELECT
Falso. Debería hacer un exec del mismo y no se puede (Ahora lo voy a probar igualmente)
Punto 2
2a) Describir lo que es un Datawarehouse. Indicar que papel juega la desnormalización en el mismo.
Lo de datawarehouse está en el apunto, igual que lo de desnormalización
2b) Indica que es un plan de ejecución y cual es su finalidad.
Un plan de ejecución es una forma predeterminada de ejecutar una consulta. El optimizador de consultas crea varios planes de consulta, varias formas de ejecución de una consulta, cuando uno ejecuta una. Después se van otorgando pesos a los mismos en función del tiempo de CPU ocupado, tiempo de E/S utilizado, etc. Cuando se termina ese proceso, se elije la que menos pondera y se almacena para posterior ejecución. Su finalidad?, la de ejecutar con mayor performance las consultas.
Ejercicios
3a) Una tabla recursiva (una tabla que apunta a si misma) llamada Persona con la siguiente información:
Id
---------
Nombre
Apellido
Dirección
Su_padre_es
Su_padre_es es un Id también
Mostrar los apellido y nombre de los tíos de un ID dado.
La consulta sería algo como:
SELECT P4.Apellido, P4.Nombre
FROM Persona P1, Persona P2, Persona P3, Persona P4
WHERE @ID_Persona = P1.Id AND P1.Su_padre_es = P2.Id AND P2.Su_padre_es = P3.Id AND P4.Su_padre_es = P3.Id
/* Ok, imaginemos que yo soy el del ID, lo que hago es matchear con otra tabla "Persona" el Id de mi viejo y en la tabla P2 voy a tener los datos de mi viejo. Voy a la tabla P3 y ahí tengo el Id de mi abuelo y después pido condición para que en P4 esten todos los que tienen de mismo padre a mi abuelo, o sea, mis tíos y mi viejo, pero bueno, ahí no dice que no tengo que mostrarlo . Tampoco dice que había que contemplar NULLS's. De última lo vemos si quieren saberlo... */
3b) Era un trigger AFTER INSERT con UPDATES (hay que ver en cada caso). Se tenía que cumplir en la tabla la condición de que :"Todos los hermanos tienen que tener el mismo apellido".
Saludos y espero que sirva
Punto 1
1a) Si se tiene una vista que relaciona varias tablas y una de ellas posee un índice, el motor no puede utilizarlo para generar una consulta más performante.
Falso. Lo que no se puede hacer es generar un índice sobre una vista.
1b) Se puede ejecutar un store procedure en una consulta SELECT
Falso. Debería hacer un exec del mismo y no se puede (Ahora lo voy a probar igualmente)
Punto 2
2a) Describir lo que es un Datawarehouse. Indicar que papel juega la desnormalización en el mismo.
Lo de datawarehouse está en el apunto, igual que lo de desnormalización
2b) Indica que es un plan de ejecución y cual es su finalidad.
Un plan de ejecución es una forma predeterminada de ejecutar una consulta. El optimizador de consultas crea varios planes de consulta, varias formas de ejecución de una consulta, cuando uno ejecuta una. Después se van otorgando pesos a los mismos en función del tiempo de CPU ocupado, tiempo de E/S utilizado, etc. Cuando se termina ese proceso, se elije la que menos pondera y se almacena para posterior ejecución. Su finalidad?, la de ejecutar con mayor performance las consultas.
Ejercicios
3a) Una tabla recursiva (una tabla que apunta a si misma) llamada Persona con la siguiente información:
Id
---------
Nombre
Apellido
Dirección
Su_padre_es
Su_padre_es es un Id también
Mostrar los apellido y nombre de los tíos de un ID dado.
La consulta sería algo como:
SELECT P4.Apellido, P4.Nombre
FROM Persona P1, Persona P2, Persona P3, Persona P4
WHERE @ID_Persona = P1.Id AND P1.Su_padre_es = P2.Id AND P2.Su_padre_es = P3.Id AND P4.Su_padre_es = P3.Id
/* Ok, imaginemos que yo soy el del ID, lo que hago es matchear con otra tabla "Persona" el Id de mi viejo y en la tabla P2 voy a tener los datos de mi viejo. Voy a la tabla P3 y ahí tengo el Id de mi abuelo y después pido condición para que en P4 esten todos los que tienen de mismo padre a mi abuelo, o sea, mis tíos y mi viejo, pero bueno, ahí no dice que no tengo que mostrarlo . Tampoco dice que había que contemplar NULLS's. De última lo vemos si quieren saberlo... */
3b) Era un trigger AFTER INSERT con UPDATES (hay que ver en cada caso). Se tenía que cumplir en la tabla la condición de que :"Todos los hermanos tienen que tener el mismo apellido".
Saludos y espero que sirva