UTNianos

Versión completa: [Aporte] Final Gestión de Datos (GDD) 10/03/2021
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola, dejo mi final del 10/3
Suerte!

En el oral me preguntaron:
Índices: ventajas y desventajas (rapidez pero si hago muchos índices en muchos campos estos se hacen muy grandes y además como se guardan en disco hay que buscarlos)
Arbol B vs Hashing
Integridad referencial (como cumplir integridad referencial en tablas de 2 db distintas => triggers)
También rendí en esta fecha así que sumo las preguntas que me hicieron:

CAMPUS
V/F
Un grafo es biunívoco cuando tiene un solo predecesor y un solo sucesor. (VERDADERA: Es la definición de unicidad doble.)
Si una columna posee la constraint 'UNIQUE' entonces una sola fila como máximo puede contener NULL en dicha columna. (VERDADERA)

Multiple Choice
[Imagen: Captura-de-Pantalla-2021-03-16-a-la-s-16-45-33.png]

Práctica
[Imagen: Pra-ctica-a-desarrollar.png]

Mi resolución incompleta por falta de tiempo (me pusieron 3/5 puntos)

CREATE PROCEDURE actualizar_prod_precio AS
BEGIN
DECLARE @updated INT = 0, @no_updated INT = 0
DECLARE @prod_cod CHAR(10), @prod_deta CHAR(150), @precio_new DECIMAL(12,2)

DECLARE mi_cursor CURSOR FOR

SELECT prod_codigo, prod_detalle FROM Producto FOR UPDATE OF prod_precio

OPEN mi_cursor
FETCH mi_cursor INTO @prod_cod, @prod_deta

WHILE (@@FETCH_STATUS = 0 )
BEGIN
IF ( @prod_cod IN (SELECT item_prod_codigo FROM Item_Factura JOIN Factura ON item_fact_id = fact_id WHERE MONTH(fact_fecha) = MONTH(GETDATE())
BEGIN
-- tomar el nuevo precio = precio del item en su ultima venta del mes
@precio_new = SELECT item_precio FROM
UPDATE Producto SET prod_precio = @precio_new WHERE CURRENT OF mi_cursor
@updated = @updated + 1
END
ELSE
BEGIN
INSERT INTO LOG_PRECIOS (log_prod_codigo, log_prod_detalle) VALUES (@prod_cod, @prod_deta)
@no_updated = @no_updated + 1
END
FETCH mi_cursor INTO @prod_cod, @prod_deta
END

CLOSE mi_cursor
DEALLOCATE mi_cursor

PRINT 'Cantidad de productos actualizados: ' + CAST(@updated AS VARCHAR) + ' Cantidad de productos no actualizados: ' + CAST(@no_updated AS VARCHAR)
END

-- Dejo comentado lo que no llego a terminar


ORAL
El profe miró que había respondido bien y qué mal, y me preguntó por los niveles de aislamiento en transacciones.
Después me dio un ejemplo de un caso de uso en un sistema, me pidió elegir el nivel que creía conveniente y explicar por qué lo elegí.

Espero que les sirva!
URLs de referencia