Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Aporte] Final de Gestión De Datos - 05/12/2017
Autor Mensaje
Degue1297 Sin conexión
Empleado de Fotocopiadora
Следи за собой
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 41
Agradecimientos dados: 42
Agradecimientos: 118 en 28 posts
Registro en: Mar 2016
Mensaje: #1
[Aporte] Final de Gestión De Datos - 05/12/2017 Finales Gestión de Datos
Hola, qué tal. Quería aportar mi grano de arena al foro con el final de GDD que se dio el 05/12/2017. Era sencillo: todas las preguntas teóricas se pueden sacar de finales anteriores y la práctica también era tranqui, con algún que otro palito.

Final
Spoiler: Mostrar

.docx  Final - Gestión De Datos - 2017-05-12.docx (Tamaño: 14,37 KB / Descargas: 529)

Respuestas
Spoiler: Mostrar
NOTA: Las contesto resumidas para que se hagan una idea. Todo esto está en los apuntes de la cátedra y lo que explican en la cursada.

1) Contestar por Verdadero o Falso

A) VERDADERO En el caso más general, Hashing es más performante que Árbol B: Hashing, a partir de una clave, devuelve un índice de una tabla con la dirección de memoria del registro con dicha clave, con el riesgo de que ocurran colisiones, por eso es más performante que Árbol B en búsqueda por clave. De hecho, Árbol B es mejor para búsquedas por rango. Sin embargo, siempre hay que tener en cuenta la distribución de datos y como esté configurada la función de hash: si una búsqueda por hash produce muchas colisiones para una misma clave, es probable que un Árbol B sea más performante que Hashing.

B) FALSO El árbol binario no es necesariamente balanceado. Tomen como ejemplo el árbol que surge de comprimir el texto "Tomemos como ejemplo esta frase. " con Huffman.

2) Responder exactamente lo solicitado en la pregunta en no más de 15 renglones.

A) Un trigger es un conjunto de instrucciones que se asignan a un tabla y se ejecutan antes, en vez de o después de un evento, que puede ser un INSERT, DELETE o UPDATE. Entre otros usos, se destacan la validación de reglas de integridad del sistema impuestas por el negocio, DELETE's en cascada, etc.

B) Estos son los cuatro niveles de aislamiento para transacciones:

READ UNCOMMITTED: No tiene bloqueos por tabla. Es el más performante, pero sufre de lecturas sucias, no repetibles y fantasmas, por lo cual, ante una misma consulta puedo obtener filas que no fueron commiteadas en una transacción.

READ COMMITTED: Tiene bloqueos compartidos por tabla. Soluciona lecturas sucias, pero no sufre de lecturas no repetibles y fantasmas, por lo que ante una misma consulta puedo obtener filas distintas con valores desactualizados.

REPETEABLE READ: Tiene bloqueos exclusivos por tabla, pero no son por rango, por lo cual soluciona lecturas no repetibles, pero no así las fantasmas, por lo que ante una misma consulta puedo obtener filas de más o de menos. Puede causar deadlock.

SERIALIZABLE: Tiene bloqueos exclusivos por tabla y por rangos, por lo no tiene problemas de lectura, es el más consistente, y las transacciones parecen ocurrir en serie. Pero puede causar deadlock: un hilo de ejecución 1 quiere lo que tiene el hilo de ejecución 2 y viceversa, pero no puede acceder al recurso porque están bloqueados simultáneamente.

3) Parte práctica

A) La respuesta correcta es la 2. Hacer un FROM <Tabla1>, <Tabla2> es lo mismo que hacer el producto cartesiano entre dos tablas. Como en la consulta tenemos FROM empleados e, perfiles y perfiles es una tabla sin datos, el producto cartesiano da un conjunto vacío de datos.

B) Lo resolví de esta manera:



CREATE VIEW empleados_con_jefe_view AS

SELECT

j.cod_empleado AS Código_Jefe,
j.des_empleado AS Nombre_Jefe,
e.cod_empleado AS Código_Empleado,
e.des_empleado AS Nombre_Empleado

FROM empleados j

JOIN empleados e ON j.cod_empleado = e.cod_jefe

WHERE (SELECT COUNT(*) FROM empleados WHERE cod_jefe = j.cod_empleado) > 4



Se puede hacer una consulta parecida con la BD para resolver ejercicios de la cátedra. Se las paso para que prueben y vean que no fruteo:



SELECT

j.empl_codigo AS jefe_codigo,
j.empl_nombre AS jefe_nombre,
j.empl_apellido As jefe_apellido,
e.empl_codigo AS empl_codigo,
e.empl_nombre AS empl_nombre,
e.empl_apellido As empl_apellido

FROM Empleado j

JOIN Empleado e ON j.empl_codigo = e.empl_jefe

WHERE (SELECT COUNT(*) FROM Empleado WHERE empl_jefe = j.empl_codigo) > 4



Espero que les sirva. Cualquier cosa que esté mal o turbia... Arreglenlo ustedes. Yo ya formatié GDD XD Saludos.
(Este mensaje fue modificado por última vez en: 06-12-2017 18:25 por Degue1297.)
06-12-2017 13:29
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Degue1297 recibio 11 Gracias por este post
CarooLina (06-12-2017), chrisgel15 (06-12-2017), macyn (06-12-2017), vim (17-12-2017), Trisky (12-02-2018), Smitten1994 (02-12-2018), Soy (06-02-2019), Diesel (10-12-2019), nanohueso (18-12-2019), Mauro_bilo (13-02-2020), Luciacg (12-10-2020)
Omnipresent Sin conexión
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: #2
RE: [Aporte] Final de Gestión De Datos - 05/12/2017
Nota al margen:
El 1.a) es Falsa (fue un error que tuve).
Yo caí en esa porque no dice "siempre" y entonces pensé que se referían solamente al caso más feliz. Pero bueno, si justificabas que igual existían casos en los que no es más perfomante te lo tomaban como bien que hayas puesto "Verdadera".

Detalles solo para buscar bajarte la nota =)
06-12-2017 17:07
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Omnipresent recibio 2 Gracias por este post
CarooLina (06-12-2017), Soy (06-02-2019)
Degue1297 Sin conexión
Empleado de Fotocopiadora
Следи за собой
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 41
Agradecimientos dados: 42
Agradecimientos: 118 en 28 posts
Registro en: Mar 2016
Mensaje: #3
RE: [Aporte] Final de Gestión De Datos - 05/12/2017
Jajaja XD Está bien. Me cuestioné eso en su momento. Pero no quise entrar en duda y desesperación y lo mandé así. Pensándolo bien, que tan performante es una consulta depende de como están distribuidos los datos y todas esas cosas. Si tenés que hacer rehashing 10000 veces para acceder directo a una clave cuando podías agarrar la dirección de la primer hoja del árbol B, bueno, ahí sí es más performante Árbol B. Se ve que el profe justo se buggeó cuando me corrigió y me lo puso bien XD Ahora lo agrego igual por las dudas.
06-12-2017 18:21
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Degue1297 recibio 1 Gracias por este post
CarooLina (06-12-2017)
Diesel Sin conexión
Profesor del Modulo A
me recibi !!! 25/10/2023
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 201
Agradecimientos dados: 178
Agradecimientos: 346 en 50 posts
Registro en: Sep 2012
Mensaje: #4
RE: [Aporte] Final de Gestión De Datos - 05/12/2017
estaria necesitando confirmacion pero creo que el 3b tambien se puede hacer asi


create view estructura_jefes
(codigo_Jefe,Nombre_Jefe,codigo_Empleado,Nombre_Empleado)
as

select j.cod_empleado from
empleados e join empleados j on e.cod_jefe=j.cod_empleado

group by j.cod_empleado
having sum(count(*))>4

05-12-2019 22:20
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Degue1297 Sin conexión
Empleado de Fotocopiadora
Следи за собой
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 41
Agradecimientos dados: 42
Agradecimientos: 118 en 28 posts
Registro en: Mar 2016
Mensaje: #5
RE: [Aporte] Final de Gestión De Datos - 05/12/2017
La idea está bien, y hasta me parece más prolija, pero tiene un par de errores la query. Tiene que ir así:

Spoiler: Mostrar


create view estructura_jefes
(cod_empleado)
as

select j.cod_empleado from
empleados e join empleados j on e.cod_jefe=j.cod_empleado

group by j.cod_empleado
having count(*)>4



Primero, aunque es un problema menor, en la View tienen que ir todos los campos del SELECT que hace de acuerdo a mis pruebas por lo que estuve probando.

Después, el sum(count(*)) ese que pusiste me tiró error de sintaxis. No me suena a que podés hacer un Sum de un Count.

Por eso me parece que ese va solo el count(*), así le especificás a SQL que tiene que filtrar los cod_empleado jefes que agrupaste por los que aparecen más de 4 veces en la tabla empleados como cod_jefe.

Para probarlo, me tiré estas queries en un SQL Tryit Editor:

Spoiler: Mostrar


CREATE TABLE empleados
(
cod_empleado int,
cod_jefe int,
PRIMARY KEY (cod_empleado)
FOREIGN KEY (cod_jefe) REFERENCES empleados(cod_empleado)
);

INSERT INTO empleados (cod_empleado, cod_jefe)
VALUES
(1, NULL),
(2, NULL),
(3, NULL),
(4, 1),
(5, 2),
(6, 2),
(7, 2),
(8, 2),
(9, 3),
(10, 3),
(11, 3),
(12, 3),
(13, 3),
(14, 4),
(15, 5),
(16, 5),
(17, 5),
(18, 5),
(19, 6),
(20, 6),
(21, 6),
(22, 6),
(23, 6)

create view estructura_jefes
(cod_empleado)
as

select j.cod_empleado from
empleados e join empleados j on e.cod_jefe=j.cod_empleado

group by j.cod_empleado
having count(*)>4


07-12-2019 17:42
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Degue1297 recibio 1 Gracias por este post
Diesel (07-12-2019)
Diesel Sin conexión
Profesor del Modulo A
me recibi !!! 25/10/2023
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 201
Agradecimientos dados: 178
Agradecimientos: 346 en 50 posts
Registro en: Sep 2012
Mensaje: #6
RE: [Aporte] Final de Gestión De Datos - 05/12/2017
(07-12-2019 17:42)Degue1297 escribió:  La idea está bien, y hasta me parece más prolija, pero tiene un par de errores la query. Tiene que ir así:

Spoiler: Mostrar


create view estructura_jefes
(cod_empleado)
as

select j.cod_empleado from
empleados e join empleados j on e.cod_jefe=j.cod_empleado

group by j.cod_empleado
having count(*)>4



Primero, aunque es un problema menor, en la View tienen que ir todos los campos del SELECT que hace de acuerdo a mis pruebas por lo que estuve probando.

Después, el sum(count(*)) ese que pusiste me tiró error de sintaxis. No me suena a que podés hacer un Sum de un Count.

Por eso me parece que ese va solo el count(*), así le especificás a SQL que tiene que filtrar los cod_empleado jefes que agrupaste por los que aparecen más de 4 veces en la tabla empleados como cod_jefe.

Para probarlo, me tiré estas queries en un SQL Tryit Editor:

Spoiler: Mostrar


CREATE TABLE empleados
(
cod_empleado int,
cod_jefe int,
PRIMARY KEY (cod_empleado)
FOREIGN KEY (cod_jefe) REFERENCES empleados(cod_empleado)
);

INSERT INTO empleados (cod_empleado, cod_jefe)
VALUES
(1, NULL),
(2, NULL),
(3, NULL),
(4, 1),
(5, 2),
(6, 2),
(7, 2),
(8, 2),
(9, 3),
(10, 3),
(11, 3),
(12, 3),
(13, 3),
(14, 4),
(15, 5),
(16, 5),
(17, 5),
(18, 5),
(19, 6),
(20, 6),
(21, 6),
(22, 6),
(23, 6)

create view estructura_jefes
(cod_empleado)
as

select j.cod_empleado from
empleados e join empleados j on e.cod_jefe=j.cod_empleado

group by j.cod_empleado
having count(*)>4




Muchas gracias por tu respuesta. Sos un genio me la vivi viendo tus parciales de Gardella y por userte la promocione gracias a vos.
Del primer error era conciente, fue error de vagancia.
Y del segundo estaba quemado. Tenes razon!
Estoy fumandome en pipa toda la teoria, de practica vi 6 o 7 finales, no quiero tocar mas practica.
Aprecio toda ayuda psicologica para rendir el final de GD, Tengo mis 4 chances intactas y hace LONG TIME AGO la firmé
Abrazo!!!!
07-12-2019 19:44
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Diesel recibio 1 Gracias por este post
Degue1297 (08-12-2019)
nanohueso Sin conexión
Profesor del Modulo A
Thats what she said
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 239
Agradecimientos dados: 268
Agradecimientos: 30 en 20 posts
Registro en: Feb 2012
Mensaje: #7
RE: [Aporte] Final de Gestión De Datos - 05/12/2017
El 3.b se puede hacer asi sino


SELECT jefe.cod_empleado,
jefe.des_empleado,
emp.cod_empleado,
emp.des_empleado
FROM EMPLEADOS emp JOIN EMPLEADOS jefe ON (emp.cod_jefe = jefe.cod_empleado)
WHERE jefe.cod_empleado in ( -- esta subquery se calcula una unica vez y te devuelve los jefes cn mas de 4 empleados
SELECT j1.cod_empleado FROM
EMPLEADOS e1 JOIN EMPLEADOS j1 ON (e1.cod_jefe = j1.cod_empleado)
group by j1.cod_empleado
having count(*) > 4
)
18-12-2019 12:31
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Degue1297 Sin conexión
Empleado de Fotocopiadora
Следи за собой
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 41
Agradecimientos dados: 42
Agradecimientos: 118 en 28 posts
Registro en: Mar 2016
Mensaje: #8
RE: [Aporte] Final de Gestión De Datos - 05/12/2017
Hola. Disculpá la demora en la respuesta.

Tu query no está mal, pero hace cosas de más: lista los empleados de los jefes que tienen más de cuatro empleados.

Fijate que la sub-query que hacés ya contesta lo que pide el ejercicio.
31-12-2019 16:39
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Degue1297 recibio 1 Gracias por este post
nanohueso (03-02-2020)
.-Fede-. Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 265
Agradecimientos dados: 84
Agradecimientos: 49 en 44 posts
Registro en: Nov 2011
Mensaje: #9
RE: [Aporte] Final de Gestión De Datos - 05/12/2017
El 3b lo hice igual que vos

En los ultimos dos comentarios no esta bien la agrupacion que hacen por group by, el enunciado pide que se muestre la informacion de los empleados y si se agrupa por jefe no se va a mostrar
11-02-2020 21:18
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] .-Fede-. recibio 1 Gracias por este post
Degue1297 (16-02-2020)
Degue1297 Sin conexión
Empleado de Fotocopiadora
Следи за собой
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 41
Agradecimientos dados: 42
Agradecimientos: 118 en 28 posts
Registro en: Mar 2016
Mensaje: #10
RE: [Aporte] Final de Gestión De Datos - 05/12/2017
(11-02-2020 21:18).-Fede-. escribió:  El 3b lo hice igual que vos

En los ultimos dos comentarios no esta bien la agrupacion que hacen por group by, el enunciado pide que se muestre la informacion de los empleados y si se agrupa por jefe no se va a mostrar

Tenés razón... mala mía, me enrosqué con las cosas que puse antes XD Está bien como lo hizo nanohueso entonces, que se fija que el código del jefe esté en los jefes agrupados con más de 4 empleados, y así podés mostrar la info de los empleados como decís.
16-02-2020 23:09
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)