UTNianos

Versión completa: Gestion de Datos - Final 26/09/13
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Les dejo el final que se dió ayer (me lo acuerdo casi todo)

1.a) Si no quiero que eliminen filas de una tabla que se utiliza para auditoría, una opción es usar un trigger.
1.b) En un arbol de expresión la cantidad de nodos siempre es par

2.a) Explique que es una transacción en un Sistema de Base de Datos.
2.b) Explique qué significa la sigla ACID y desarrolle cada concepto.

3)
Dada las tablas:

USUARIOS
IdUsuario(PK) int
Nombre vachar(20)
Apellido varchar(20)
FechaAlta date not null

INGRESOS
IdUsuario(FK) int
Fecha date not null

La tabla ingreso sirve para saber qué usuarios se loguearon al sistema. Sin embargo, puesto que el campo fecha no almacena valores de hora y minutos, si un usuario se loguea varias veces en un día va a existir 1 solo registro. No es posible eliminar regristros de la tabla USUARIOS puesto que dará error.

3.a) Una empresa pidio que se haga una vista que devuelva el nombre, apellido, y la fecha del ultimo ingreso, en caso que el usuaio nunca haya ingresado se tomará como ultimo ingreso a la fecha de alta. Un programador escribio lo siguiente.

CREATE VIEW vw_final(nombre, apellido, ultimoIngreso) AS
SELECT nombre, apellido, MAX(i.fecha) FROM usuarios, ingresos i
WHERE usuarios.IdUsuario=i.IdUsuario
GROUP BY IdUsuario, nombre, apellido
UNION
SELECT nombre, apellido, fechaAlta
FROM usuarios.

Diga que respuesta es la correcta. En caso de ser la II o la IV justifique y reescriba la sentencia:

I) La vista se crea y devuelve lo que pide
II) La vista se crea pero no devuelve lo que pide
III) NO ME ACUERDO XD
IV) La vista no se crea

3.b) Se comienza a depurar la tabla usuarios. Se comienza haciendo DELETE FROM usuarios WHERE IdUsuario=8 pero devuelve un error. Explique poqrue se produce dicho error y desarrolle el/los objetos necesarios para que ese tipo de sentencias puedan ser ejecutadas correctamente.

Saludos
Sinnick
lindo final, bastante accesible me parece.
¿alguno se copa con la resolución? yo no me puse a repasar todavía.
de la 3.a) La vista no se crea, esta mezclando la sintaxis de funcion y la de vista. Va a dar error



del 3.b) Va a dar error porque es IdUsuario PK y existe una tabla que tiene a la columna IdUsuario como FK.
Una solucion es hacer un trigger instead of, y hacer el delete primero de la otra tabla manualmente (Ingresos), y luego ejecutar el delete en Usuarios.

La otra, es hacer un Delete on Cascade, pero implicaria recrear las tablas, asique va a ser un pequeño script on tablas temporales. Ejemplo http://stackoverflow.com/questions/62606...ade-delete
Adjunto el enunciado del final.

Saludos.
Para mi la 1.B) es FALSA.... En el apunte aparece un ejemplo donde se usa el operador Raíz Cuadrada.
Si tengo una Raíz Cuadrada, el próximo nodo va a ser siempre el contenido de esa raíz, por ende no puede tener nunca más que un sólo hijo.
(27-07-2014 20:35)Fly escribió: [ -> ]Para mi la 1.B) es FALSA.... En el apunte aparece un ejemplo donde se usa el operador Raíz Cuadrada.
Si tengo una Raíz Cuadrada, el próximo nodo va a ser siempre el contenido de esa raíz, por ende no puede tener nunca más que un sólo hijo.

"5+3" tiene 3 nodos

..+
5__3

De hecho, me parece que siempre es impar. Pero justificaría con este ejemplo y listo.
URLs de referencia