Hola Alhasar,
Yo también fui - un desastre la verdad también. Te cuento lo que (creo) me acuerdo:
1A) Si un Arbol B tiene n hojas con datos, entonces el grado del mismo es n+1
Acá no sabía ni lo que era el "grado del árbol". Alguien que me aclare? Le mandé "VERDADERO
1B) Un SELECT dentro de un WHERE no puede retornar resultados vacíos. Acá le puse FALSO
Mi razonamiento fue que si quiero realizar lo siguiente:
SELECT * FROM FINAL_DEL_ORTO
WHERE EXISTS (
SELECT Aprobados FROM MATERIA_DEL_ORTO
)
Y el subquery da vacío, debería funcionar bien y no traer nada. No les parece?
2A) Qué era una transacción y cuándo el sistema ejecutaba un ROLLBACK en "una transacción abierta". Acá me pareció confuso también porque no se si se refería a lo que el programador escribe explicitamente para tirar un ROLLBACK o a que el sistema solo le pinta hacerlo
Escribí ambas cosas; aclarando que me parecía ambiguo. En el primer caso, el DBMS hace ROLLBACK cuando encuentra la sentencia ROLLBACK escrita por el programador. Para el segundo caso, le puse que el sistema hace ROLLBACK cuando detecta alguna falla, cómo perdida de conectividad, acceso en disco, etc., que no le permite completar la transacción, entonces la vuelve para atrás
2B) Como decís vos, nombrar dos elementos de seguridad. Me parecía ambiguo, quise preguntar si se refiere a la tabla de usuarios y las accesos que se definen para cada uno sobre qué elementos de la DB pueden utilizar, o si se refiere a la "seguridad" en las tablas de mantener la integridad de datos
Para este, respondí las dos cosas. Primero diciendo que estaba la tabla de usuarios y el manejo de permisos sobre los objetos y también aclaré el otro punto que me parecía a mi, donde puse lo mismo que vos, diciendo que con CONSTRAINT y TRIGGERS se puede manejar esto
3A) Daban una tabla de Facturas, otra de Items y una vista que mostraba un INNER JOIN entre ambas. Me pareció muy confuso lo que pedían, eso de que había que listar "los pares de productos de la misma factura"... qué pares de productos? Eran una lista de productos, una factura podía tener 'n' productos, no solamente 2... la verdad no entendí nada
3B) Pedían armar un TRIGGER que maneje el INSERT en la Vista, pero obviamente no especificaban qué iban a insertar en la vista. También pedían asegurarse si el número de factura ya existía en la cabecera y sino crearlo. Yo escribí algo más o menos así:
CREATE TRIGGER Final_Choto ON Vista
INSTEAD OF INSERT
BEGIN
IF (
(SELECT Nro_Factura FROM INSERTED) NOT IN SELECT (Nro_Factura FROM FACTURAS)
INSERT INTO FACTURAS (Nro_Facturas) VALUES (INSERTED.Nro_Factura)
END
INSERT INTO DETALLE (Codigo, Precio, Etc.)
VALUES (INSERTED.Codigo, INSERTED.Prcio, INSERTED.Etc.)
END
Cabe aclarar que estoy muy flojo con SQL , así que probablemente esté todo mal esto escrito, pero quizás la idea está bien. Lo que busqué hacer es verificar si no existía el código de factura en la cabecera y en tal caso crearlo. Luego, insertar los detalles.
Respecto a esto, me dan una mano para prepararme para el martes que viene? Que me recomiendan hacer para aprender intensivamente SQL en una semana? Hace 4 años que cursé la matería, en el trabajo lo uso muy poco y hay miles de formas distintas no consistentes para todos los comandos en vistas, procedures, tablas, etc.; me vuelve loco. Algunos van con "AS" prefijando a un SELECT, otros con BEGIN / END, la verdad que estoy re mareado.
Lo que pienso hacer es:
- Realizar los ejercicios de la guía con el modelo de base de datos como para practicar
- Volver a revisar los finales y tratar de entenderlos
- Rezar
Ya me hicé todo el curso básico de W3Schools, pero cada ejercicio que veo mete cosas nuevas que nunca aparecieron, FOR EACH ROW, EXISTS, IN; no se cuándo usar uno, cuándo usar otro... la verdad me siento un fracasado, tengo toda la bronca por ser un forro de mierda.
En fin, perdón por mis pálidas, espero que al menos los enunciados le sirvan y si me dan una mano para prepararme se los voy a agradecer enormemente. Se que para los que trabajan con SQL todo el día esta materia les debe parecer una pelotudez, pero la verdad que cuando se meten con consultas TAN HIJAS DE PUTAS en los finales y rebuscadas al pedo, hago agua por todos lados.
Sin más, me voy a dormir con toda la bronca. Un abrazo grande.
EDIT: Hay alguna guía de práctica SQL RESUELTA? Porque tengo varias bajadas pero si no tengo las resoluciones no puedo comparar con lo que está bien o ver cómo lo hago si me trabo. Alguien puede compartir las resoluciones en .sql si tiene de la cursada? Muchas gracias