Omnipresent
Profesor del Modulo A
The Winter is Coming...
Ing. en Sistemas
Facultad Regional Buenos Aires
Mensajes: 215
Agradecimientos dados: 51
Agradecimientos: 117 en 64 posts
Registro en: Sep 2014
|
Mensaje: #1
[Aporte][GDD] Parcial Lacquaniti 2C2017
Parciales
Gestión de Datos
Hi people,
Parcial único tomado por Lacquaniti en el 2C - 2017.
La teoría la dictó en el momento:
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
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
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
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
(Este mensaje fue modificado por última vez en: 16-12-2017 15:45 por Omnipresent.)
|
|
16-12-2017 15:45 |
|
Omnipresent recibio 7 Gracias por este postOmnipresent recibio 7 Gracias por este post
CarooLina (11-02-2018), emilio_murray (15-04-2018), NIKO18 (05-12-2018), fluxhn (30-05-2019), riuk_66 (18-11-2020), CeciliaaRocca (11-07-2021), Alejo98 (16-06-2022)
|