UTNianos

Versión completa: [Aporte][GDD] Parcial Lacquaniti 2C2017
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hi people,
Parcial único tomado por Lacquaniti en el 2C - 2017.

La teoría la dictó en el momento:
Spoiler: Mostrar
Sin considerar los bytes adicionales debido a los atributos que muestran. Determine por qué la siguiente afirmación es verdadera:
SELECT * FROM t WHERE id = 1 es menos perfomante que
SELECT id FROM t WHERE id = 1
sabiendo que existe un indice arbol B en t sobre el atributo id.

Respuestas (resoluciones de varias personas exitosas (? ):

TEORÍA - Nota: 10
Spoiler: Mostrar
En un Arbol B, las hojas contienen punteros a los datos. Al hacer SELECT *, tengo que seguir esos punteros, para ir a buscar todos los registros correspondientes a ese ID. En cambio, si hago SELECT ID no tengo que seguir ese puntero, ya que toda la información que necesito está en el arbol.

SQL - Nota: 10
Spoiler: Mostrar

select
p.prod_detalle,
r.rubr_detalle,
(select count(*) from item_factura where item_producto = p.prod_codigo) cantidad_ventas
from producto p
join rubro r on p.prod_rubro = r.rubr_id
where
p.prod_codigo in
(select c.comp_producto from composicion c group by c.comp_producto having count(comp_componente) > 2) -- cambiar por >= para que me muestre algo
order by (select sum(comp_cantidad) from composicion where comp_producto = p.prod_codigo) desc -- cantidad de componentes, en su cantidad correspondiente
go



T-SQL - Nota: 9
Spoiler: Mostrar


CREATE TRIGGER tr_empleados ON Empleado
AFTER INSERT, UPDATE, DELETE
AS
BEGIN TRANSACTION
IF((SELECT COUNT(*) FROM inserted i) > 0) --Significa que es un INSERT / UPDATE
BEGIN
IF(EXISTS(SELECT 1 FROM inserted WHERE dbo.cant_personas_a_cargo(empl_jefe) < 1))
BEGIN
RAISERROR('Un jefe no puede tener menos de una persona a cargo.', 16, 1)
ROLLBACK
RETURN
END
IF(EXISTS(SELECT 1 FROM inserted WHERE dbo.cant_personas_a_cargo(empl_jefe) > 20))
BEGIN
RAISERROR('Un jefe no puede tener más de 20 personas a cargo.', 16, 1)
ROLLBACK
RETURN
END
END
ELSE --Es un DELETE
BEGIN
IF(EXISTS(SELECT 1 FROM deleted WHERE dbo.cant_personas_a_cargo(empl_jefe) < 1))
BEGIN
RAISERROR('Un jefe no puede tener menos de una persona a cargo.', 16, 1)
ROLLBACK
RETURN
END
END
COMMIT TRANSACTION
GO



[attachment=15983]
URLs de referencia