Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Aporte] Final Gestión de Datos 6-03-2012
Autor Mensaje
Aivan Sin conexión
Helper
La UES + Independientes
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 331
Agradecimientos dados: 34
Agradecimientos: 36 en 19 posts
Registro en: May 2008
Facebook LinkedIn
Mensaje: #1
[Aporte] Final Gestión de Datos 6-03-2012 Finales Gestión de Datos
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 =P. 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

"En una época donde hay especialistas de cada superficie o eres un experto en polvo de ladrillo, un experto en césped, un experto en canchas duras, un experto en moqueta o eres simplemente Roger Federer" - Jimmy Connors
08-03-2012 00:24
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Aivan recibio 1 Gracias por este post
Ident (20-05-2012)
guidoakd Sin conexión
Secretario de la SAE
RACING CAMPEON 2014
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 431
Agradecimientos dados: 6
Agradecimientos: 26 en 19 posts
Registro en: Mar 2009
Facebook Twitter
Mensaje: #2
RE: [Aporte] Final Gestión de Datos 6-03-2012
1a FALSA
1b FALSA
2a Regalado, DW
2b Optimizador de consulta, plan de ejecucion, etc.
3a La tabla ya estaba en otro final, la diferencia que en vez de pedir hermanos pedía tios, y que en caso de no haber, que no devuelva nada, para un id dado.

SELECT P.Apellido, P.Nombre
FROM Persona p inner join persona pp on
p.su_padre_es = pp.su_padre_es inner join persona ppp on
ppp.su_padre_es = pp.id where ppp.id=@id

Hago la inversa.. devuelvo los tios.. de aquellos que tengan un hermano... que sea el padre de un id, cuyo id sea = al id dado.

3b Trigger after insert,update. y rollback transaction
tambien podia ser con cursor si lo querias para un insert masivo
si era para solo 1 no hacia falta. decia que la tabla actualmente no hacia falta controlarla, entonces con controlar 1 hermano solo bastaba y sobraba (porque ese hermano ya era hermano de todos los otros si o si de la BD)

1h15 aprox

Racing Club
(Este mensaje fue modificado por última vez en: 08-03-2012 01:25 por guidoakd.)
08-03-2012 01:24
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] guidoakd recibio 1 Gracias por este post
Ident (20-05-2012)
lukeSky9 Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 43
Agradecimientos dados: 3
Agradecimientos: 24 en 10 posts
Registro en: Mar 2010
Mensaje: #3
RE: [Aporte] Final Gestión de Datos 6-03-2012
3.a )

select ( select P2.apellido+','+P2.nombre from persona p2 where p1.id != p2.id and p2.su_padre_es in (select su_padre_es from persona p3 where p2.id != p3.id and p2.su_padre_es = p3.su_padre_es and p3.id in (select su_padre_es from persona p4 where id = @id ) ) ) from persona p1

O sea, traigo "Apellido, Nombre" de personas que tengan hermanos y que ese hermano sea padre del id pasado como parámetro (@id)

3.b)

create trigger FINAL on persona
for insert,update
as
begin transaction

if exists (select 1 from persona p inner join inserted i on p.su_padre_es = i.su_padre_es and p.apellido != i.apellido)
begin
raiserror('Hay hermanos con apellidos distintos',10,2)
rollback transaction
end

si se quiere insertar un hno de alguien que ya esta en la tabla, y tiene apellido distinto, el exists da true y se rollbackea todo ..

la teoría coincido en todo lo que pusieron =)

[Imagen: firmavolvemos.jpg]
08-03-2012 01:51
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
dolap87 Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 29
Agradecimientos dados: 28
Agradecimientos: 3 en 2 posts
Registro en: Feb 2009
Mensaje: #4
RE: [Aporte] Final Gestión de Datos 6-03-2012
3-a lo pense de la siguiente manera:

select * from persona t3 where t3.id_padre in (
select t2.id_padre
from persona t1,persona t2
where t1.id_padre=t2.id and
t1.id=1 and t3.id!=t1.id_padre)

obtengo el abuelo y discrimino al padre:
(select t2.id_padre
from persona t1,persona t2
where t1.id_padre=t2.id and
t1.id=1 and t3.id!=t1.id_padre)

digo q me muestre a los hijos del abuelo:
select * from persona t3 where t3.id_padre in

slds
20-03-2012 15:06
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.