Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Final Gestion de Datos 16/02/2015
Autor Mensaje
Alhasar Sin conexión
Campeon del cubo Rubik
Analista
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 111
Agradecimientos dados: 26
Agradecimientos: 32 en 21 posts
Registro en: Jun 2012
Mensaje: #1
Final Gestion de Datos 16/02/2015 Finales Gestión de Datos
Buenas Noches Gente! Hoy fui a rendir sin suerte aunque cerca de llegar al 1a)4 me falto la practica.
les dejo lo que recuerdo si alguno tiene el final y lo adjunta lo agradezco. Mi idea es rendirla el proximo martes.

1a) No recuerdo pero no la hice para que no me reste. Si mal no recuerdo era algo de arboles.
1b) Preguntaba

2a) Que era una transaccion y en que casos se hace un rollback
2b)Nombrar 2 elementos que den seguridad y porque. Yo puse Constraint y Trigger no se si estaba bien.

3a) Nos daban 2 tablitas(Factura y producto) y una vista habia que hacer un trigger para que al insertar en la vista, inserte en la tabla. Me falto el "for each row".
3b)Hacer una consulta para que muestre los pares de productos que comprartian factura mas de 500 veces.(Este lo entendi mal porque el enunciado me hizo entender que la cantidad de productos de cada uno tenia que ser 500).

Alguien tiene el enunciado?
Otros adjuntos en este tema
.jpg  Final 16-02-2016.jpg ( 514,32 KB / 408) por gabel
17-02-2016 00:04
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
DanAykroyd Sin conexión
Profesor del Modulo A
On a Mission from God
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 293
Agradecimientos dados: 14
Agradecimientos: 573 en 81 posts
Registro en: Oct 2009
Mensaje: #2
Exclamation RE: Final Gestion de Datos 16/02/2015
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
(Este mensaje fue modificado por última vez en: 17-02-2016 01:43 por DanAykroyd.)
17-02-2016 01:41
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] DanAykroyd recibio 1 Gracias por este post
holautn (18-02-2016)
.py Sin conexión
Presidente del CEIT
gone
********

Análisis de Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.226
Agradecimientos dados: 5
Agradecimientos: 128 en 84 posts
Registro en: Sep 2008
Mensaje: #3
RE: Final Gestion de Datos 16/02/2015
1.a es Falso, aca hay un contraejemplo

1.b es Falso. El grado de un arbol es el numero maximo de grado que tienen sus nodos. Yo puedo armar un arbol b con 2 nodos nomas y el grado no es 3, sino 1 ( grado 1 de la raiz, grado 0 de la unica hoja).

[Imagen: 9zsRG7X.gif]
(Este mensaje fue modificado por última vez en: 17-02-2016 09:03 por .py.)
17-02-2016 08:45
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
DanAykroyd Sin conexión
Profesor del Modulo A
On a Mission from God
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 293
Agradecimientos dados: 14
Agradecimientos: 573 en 81 posts
Registro en: Oct 2009
Mensaje: #4
RE: Final Gestion de Datos 16/02/2015
(17-02-2016 08:45).py escribió:  el grado de un arbol es el numero maximo de grado que tienen sus nodos.

Y qué era el grado de un nodo? =(
17-02-2016 08:58
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
.py Sin conexión
Presidente del CEIT
gone
********

Análisis de Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.226
Agradecimientos dados: 5
Agradecimientos: 128 en 84 posts
Registro en: Sep 2008
Mensaje: #5
RE: Final Gestion de Datos 16/02/2015
La cantidad de nodos hijos

[Imagen: 9zsRG7X.gif]
17-02-2016 09:02
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Alhasar Sin conexión
Campeon del cubo Rubik
Analista
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 111
Agradecimientos dados: 26
Agradecimientos: 32 en 21 posts
Registro en: Jun 2012
Mensaje: #6
RE: Final Gestion de Datos 16/02/2015
Buenas Otra vez. Yo voy a rendirlo el Martes que viene DanAykroyd, si queres vamos viendo finales a ver que sale.
Respecto a que practicar... hay que ver los finales y hacerlos en algun motor viendo que anden las respuestas, en el caso del for each row es de oracle , tenes que saber unicamente que cada motor PL/SQL (ORACLE) y Transact SQL(SQL Server) tienen sus funciones y comandos propios que te facilitan la vida o la complican, en el final te piden que aclares con que motor lo haces por si trabajas con uno mas que con otro. Como dije esto se va viendo, de ultima armamos un repocitorio de ejercicios.
La pagina que tiro py esta buena para ver comandos rapido.

Respecto a las respuestas:
1a)la de los arboles tal cual
1b) El del select que no trae resultados me lo dieron por bueno poniendo verdadero, porque la verdad es que el motor te lo resuelve igual si el subselect no trae resultados (solo que compara con null)

2A) Tal cual. Lo unico que yo le puse extra fue que las transacciones tienen atomicidad , es decir o perduran todos los cambios o ninguno.
3A)La consulta era un quilombo, tenias que sacar los pares de productos que estaban 500 veces en facturas con otro producto. Yo lo habia entendido como que la cantidad vendida era 500... La verdad que tendria que repensarlo lo que hice estaba re mal.

3B)Lo que me dijeron aca es que en el trigger pueden venir varias filas juntas y que eso teniamos que manejarlo, si usaba PL/SQL estaba la funcion "FOR EACH ROW" , esto tengo que investigarlo porque tampoco lo tengo claro.

Cuando tenga un tiempo posteare una respuesta mas completa de los 3A y 3B
Saludos!
17-02-2016 10:53
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Alhasar recibio 1 Gracias por este post
holautn (21-02-2016)
DanAykroyd Sin conexión
Profesor del Modulo A
On a Mission from God
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 293
Agradecimientos dados: 14
Agradecimientos: 573 en 81 posts
Registro en: Oct 2009
Mensaje: #7
RE: Final Gestion de Datos 16/02/2015
Graciask Alhasar,

Pero entonces, hay que saber PL SQL, TRANSACT, ANSI, etc.? Tenés que saber todos los comandos de todos?

Lo de FOR EACH ROW, si es de Oracle, cómo se supone que se debe hacer en T-SQL?

Y en el TRIGGER, está bien haber hecho INSTEAD OF INSERT y manejarlo yo? Pero qué se supone que es lo que se está insertando en la vista? Cabecera o detalles? (no aclaraba) Y en tal caso, cuando dentro del TRIGGER hago referencia a "INSERTED", no está tomando una de las filas que están llegando?

Qué quilombo... cry
17-02-2016 11:00
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Alhasar Sin conexión
Campeon del cubo Rubik
Analista
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 111
Agradecimientos dados: 26
Agradecimientos: 32 en 21 posts
Registro en: Jun 2012
Mensaje: #8
RE: Final Gestion de Datos 16/02/2015
Tenes que saber alguno y manejarlo bien. Si le haces instead of insert esta bien mientras cumpla lo que pide.
INSERTED es una tabla con lo que se esta insertando, vos lo que tenes que hacer es distribuir esa insercion que se hace en la vista en las tablas es decir:

Si no existe esa factura:
Insertar en la tabla facturas la nueva factura
Insertar n productos en la tabla item para esa factura

Si existe la factura
agregar n productos en la tabla item para esa factura.
17-02-2016 11:23
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
stephanie Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 10
Agradecimientos dados: 36
Agradecimientos: 4 en 3 posts
Registro en: Aug 2014
Mensaje: #9
RE: Final Gestion de Datos 16/02/2015
Yo tambien la rendi ayer y pegue 8 no se de donde jaja
1a) no lo hice para no restar
1b) Puse falso, que podes tener la clausula IN en el where y no traer ninguna fila

2a) La tipica definicion de transaccion y puse de ejemplo cuando se quiere insertar en una tabla que referencia a otra, que si la pk no existe hace un rollback, porque esas sentencias son una transaccion en si
2b) Puse de objetos Sinonimos y Vista

3a) Hice un trigger INSTEAD OF de la vista y le agregue un cursor adentro y preguntaba si ya existia el numero de la factura, si exisita solo insertaba items y sino sino ambas cosas (factura e items)

3b) No se si esta bien lo que hice, pero hice algo asi porque lo hice a las apuradas a ese ej


SELECT I1.ite_id, I2.ite_id
FROM ITEM I1 JOIN FACTURA F ON (I1.fac_numero = F.fac_numero)
JOIN ITEM I2 ON (I2.fac_numero = F.fac_numero)
WHERE I2.fac_numero = I2.fac_numero
HAVING COUNT(*) > 500


17-02-2016 12:50
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] stephanie recibio 1 Gracias por este post
holautn (21-02-2016)
Alhasar Sin conexión
Campeon del cubo Rubik
Analista
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 111
Agradecimientos dados: 26
Agradecimientos: 32 en 21 posts
Registro en: Jun 2012
Mensaje: #10
RE: Final Gestion de Datos 16/02/2015
Gracias stephanie!! El 3b me imagino que viene por ese lado. El trigger te acordas si le pusiste el cursor para que maneje por si venian varias filas juntas para insertar? Por lo que me dijeron a mi eso podia pasar (por eso el famoso each row).
Corregime si me equivoco, pero supongo que lo tuyo fue un INSTEAD OF INSERT e hiciste el cursor sobre inserted y ahi fuiste procesadon una por una con el if de si estaba o no en nro factura.
Es asi?
17-02-2016 14:35
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
stephanie Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 10
Agradecimientos dados: 36
Agradecimientos: 4 en 3 posts
Registro en: Aug 2014
Mensaje: #11
RE: Final Gestion de Datos 16/02/2015
(17-02-2016 14:35)Alhasar escribió:  Gracias stephanie!! El 3b me imagino que viene por ese lado. El trigger te acordas si le pusiste el cursor para que maneje por si venian varias filas juntas para insertar? Por lo que me dijeron a mi eso podia pasar (por eso el famoso each row).
Corregime si me equivoco, pero supongo que lo tuyo fue un INSTEAD OF INSERT e hiciste el cursor sobre inserted y ahi fuiste procesadon una por una con el if de si estaba o no en nro factura.
Es asi?

Claro! Supongo que si ponias FOR EACH ROW era lo mismo que con INSTEAD OF y un cursor, pero como yo lo pense asi en ese momento tome el camino largo jaja, pero si hice el cursor porque se podian dar inserts masivos, y si lo hice sobre inserted
17-02-2016 14:55
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] stephanie recibio 2 Gracias por este post
Alhasar (17-02-2016), holautn (21-02-2016)
DanAykroyd Sin conexión
Profesor del Modulo A
On a Mission from God
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 293
Agradecimientos dados: 14
Agradecimientos: 573 en 81 posts
Registro en: Oct 2009
Mensaje: #12
RE: Final Gestion de Datos 16/02/2015
Uff que quilombo.

Pregunto entonces, cómo puedo practicar bien lo de CURSOR, INSERT MASIVO, TRIGGERS, etc.? Tienen ejercicios, algo para pasarme?
17-02-2016 15:12
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
.py Sin conexión
Presidente del CEIT
gone
********

Análisis de Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.226
Agradecimientos dados: 5
Agradecimientos: 128 en 84 posts
Registro en: Sep 2008
Mensaje: #13
RE: Final Gestion de Datos 16/02/2015
fijate el zip con finales viejos que esta dando vuelta , creo que por el 2010 hay algunos

[Imagen: 9zsRG7X.gif]
17-02-2016 15:29
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Alhasar Sin conexión
Campeon del cubo Rubik
Analista
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 111
Agradecimientos dados: 26
Agradecimientos: 32 en 21 posts
Registro en: Jun 2012
Mensaje: #14
RE: Final Gestion de Datos 16/02/2015
Dan, ejercicios no tengo, ni se si tiene la catedra. Lo que yo te diria es agarrar un sql y ponerte a probar creando triggers y cursores. La mejor herramienta lamentablemente es la de siempre, Internet. Si queres practicar algo como lo del parcial, crea en un esquema una tabla y una vista a esa tabla y crear un trigger que en caso de que alguien quiera insertar en la vista, inserte en cambio en la tabla. Aca hay un ejemplo:
http://www.sqlserverya.com.ar/temarios/d...&punto=146

En el final, consideraron ademas que te pueden venir varios inserts juntos y que el trigger tiene que bancarselo. Explicado muy por arriba el tema es el siguiente, existe una tabla del sistema llamada INSERTED que siempre guarda temporalmente lo que se va a insertar antes de que se inserte. En el ejemplo que te pase esta pensando que esa tabla solo va a tener un registro entonces no hay problema. Pero si esta tabla de insercion tiene mas de una fila pendiente de ser insertada, cuando vos tratas de hacer

select documento,nombre,domicilio from inserted where condicion='cliente'

y te va a devolver mas de una fila y no va a poder hacer el insert en la tabla. El cursor lo que hace es convertir la tabla inserted en un select que podes ir recorriendo y tratando fila por fila, haciendo asi un insert por cada fila.

En PL/SQL existe una opcion exclusiva de este lenguaje que es "for each row" que te ahorra el uso del cursor. Como dije antes, no hace falta que te sepas las 2 maneras, si te resulta comodo o mas entendible hacer el cursor, lo haces y si queres usar el "FOR EACH ROW" tenes que aclarar que estas usando PL/SQL que tiene esa opcion.
17-02-2016 15:45
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Alhasar recibio 1 Gracias por este post
DanAykroyd (17-02-2016)
stephanie Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 10
Agradecimientos dados: 36
Agradecimientos: 4 en 3 posts
Registro en: Aug 2014
Mensaje: #15
RE: Final Gestion de Datos 16/02/2015
Anda dando vueltas por ahi un .bak de la BD que usa Zaffaroni en la cursada, si queres despues te paso la practica que el nos daba
17-02-2016 16:00
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.