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
[APORTE] FINAL gestión de datos 15/12/2015
Autor Mensaje
aguZion Sin conexión
Militante
sin estado :)
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 64
Agradecimientos dados: 36
Agradecimientos: 47 en 12 posts
Registro en: Jul 2011
Mensaje: #1
[APORTE] FINAL gestión de datos 15/12/2015 Finales Gestión de Datos
Muchachos les dejo una foto del final del Ayer (porque es la 1am)

Yo me saqué un humilde 4 haciendo el último ejercicio y la teoría.

1a) Falso
3b) lo justifiqué diciendo que con el dato de 0<N<M se puede suponer que en la tabla hay claves mas grandes que cantidad de valores, por ende no son correlativas las claves. así que hay huecos.
puse un ejemplo de lo que podría haber en la tabla
Clave__Valor
1_______20
2_______30
4_______50
6_______55
3_______10
10______12
claramente la función devolvería 3 ya que es la primer clave libre, pero nunca se fijó si mas abajo ya existía la clave 3.
Además por temas de isolation level también podría pasar que se inserte una clave ya existente
por ende Si. existe la posibilidad de que el insert con la función tire error por primary key existente.

Saludos!


Archivo(s) adjuntos Imagen(es)
   
(Este mensaje fue modificado por última vez en: 16-12-2015 01:20 por aguZion.)
16-12-2015 01:19
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] aguZion recibio 2 Gracias por este post
CarooLina (16-12-2015), holautn (23-12-2015)
javi289 Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 18
Agradecimientos dados: 5
Agradecimientos: 1 en 1 posts
Registro en: Feb 2010
Mensaje: #2
RE: [APORTE] FINAL gestión de datos 15/12/2015
El 1B) creo que es Verdadero
(Este mensaje fue modificado por última vez en: 16-12-2015 10:33 por javi289.)
16-12-2015 10:02
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Martin. Sin conexión
Presidente del CEIT
Enjoy it !
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.352
Agradecimientos dados: 85
Agradecimientos: 241 en 125 posts
Registro en: Oct 2011
Mensaje: #3
RE: [APORTE] FINAL gestión de datos 15/12/2015
Incluso podes justificar en el 3B, que como tu funcion retorna 1 (si no hay huecos), Vos al hacer el insert en tu tabla, tomas como clave lo que te retorna la función anteriormente desarrollada. Si ésta devuelve 1, va a tomarlo como clave y ésta ya existe, entonces al querer hacer INSERT INTO TABLA VALUES (1, 22) ,por ejemplo, te va a dar dicho error.

[Imagen: jQJfyBGh9SOmZ.png]
(Este mensaje fue modificado por última vez en: 16-12-2015 12:19 por Martin..)
16-12-2015 12:18
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
gonzalo.gobea Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 45
Agradecimientos dados: 17
Agradecimientos: 41 en 16 posts
Registro en: Oct 2010
Mensaje: #4
RE: [APORTE] FINAL gestión de datos 15/12/2015
Rendí ayer, me saqué un 8, paso mis resoluciones.

1A) Falso. En sql server te deja un null por ejemplo, mysql varios.
1B) Verdadero. Hay que agarra un arbol binario y le aplicas el barrido y queda ordenado.

2a)Lectura sucia: Cuando una transaccion se puede ver afectada por otra transaccion sin que esta ultima haya hecho el commit. Se dice lecturas sucias, porque la segunda transaccion nunca hizo el commit, y puede que antes de terminar haga un rollback y en verdad ese registro nunca tuvo que ser leido. Con el isolation level read uncommited pasa esto.

Lectura repetible: Se dice que hay lectura repetible cuando ejecuto 2 selects en una transaccion y esta devuelve la los mismos datos en los mismos registros devueltos(en otras palabras, significa que si hay otra transaccion que quiere updatear los registros afectados por la primera transaccion, va a bloquearse hasta que la primera termine) El isolation level repetible reads asegura lecturas repetibles.

Lecturas fantasmas: Es cuando uno hace un select y en el where pone un rango y luego hace el mismo select con el mismo where y aparecen nuevos registros. Esto sucede por ejemplo en el isolation level repetible reads porque si bien bloquea los registros afectados, permite agregar nuevos registros en ese rango. Para solucionar este problema se debe usar isolation level serializable.

2b) En pocas palabras, puse que un datamart es un datawarehouse pero orientado a un negocio particular dentro de la organización. y se hace así, para que sea mas especializado, mas perfomante. Y sus datos estan desnormalizados porque a las personas que lo utilizan, le importa los datos ya sumarizados para poder tomar decisiones, no les sirve de nada tener las transacciones puras, sino las conclusiones de todas esas transacciones.(osea lo que ellos piden)

3a)

En la funcion el select que me devuelve la primera clave vacia lo hice asi



SELECT TOP 1 (s1.clave + 1) primer_hueco

FROM Secuencias s1 LEFT JOIN Secuencias s2
ON s1.clave = (s2.clave + 1)

WHERE s2.clave IS NULL

ORDER BY 1 ASC



despues hice un if de la variable primer_hueco y si daba mayor o igual que max(clave) es porque no habia huecos, entonces asignaba a la variable un 1, luego retornaba.

el 3b) Puse que si es posible por 2 motivos.
porque como ya dijeron, si retonar 1 y se inserta el valor, luego puede volver a retornar 1 y ya no se podria insertar mas.
Y yo hice una aclaracion, no se si estará bien, que decia que en un sistema concurrente si dos transacciones ejecutan la misma funcion y tiene un isolation level read uncommited, puede que ambas funciones retornen el mismo resultado al mismo tiempo.


Espero que sirva.
Slds.
16-12-2015 12:43
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] gonzalo.gobea recibio 1 Gracias por este post
holautn (21-12-2015)
_Gabo Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 45
Agradecimientos dados: 152
Agradecimientos: 39 en 14 posts
Registro en: Nov 2010
Mensaje: #5
RE: [APORTE] FINAL gestión de datos 15/12/2015
(16-12-2015 01:19)aguZion escribió:  Muchachos les dejo una foto del final del Ayer (porque es la 1am)

Yo me saqué un humilde 4 haciendo el último ejercicio y la teoría.

1a) Falso
3b) lo justifiqué diciendo que con el dato de 0<N<M se puede suponer que en la tabla hay claves mas grandes que cantidad de valores, por ende no son correlativas las claves. así que hay huecos.
puse un ejemplo de lo que podría haber en la tabla
Clave__Valor
1_______20
2_______30
4_______50
6_______55
3_______10
10______12
claramente la función devolvería 3 ya que es la primer clave libre, pero nunca se fijó si mas abajo ya existía la clave 3.
Además por temas de isolation level también podría pasar que se inserte una clave ya existente
por ende Si. existe la posibilidad de que el insert con la función tire error por primary key existente.

Saludos!

Según entendí yo, al estar el 3 entre las claves no habría hueco ahí en este caso sino en 5.

Para mi la justificación de porque existe la posibilidad sería mostrar el siguiente ejemplo.

Clave 1 Valor NULL
Clave 2 Valor NULL
Clave 3 Valor 8

En este caso se cumpliría como me indican que 0<N<M porque N sería 1 y M sería 3. La función me devolvería 1, y el INSERT INTO Secuenticas VALUES (1,55) da error de PK duplicada.
16-12-2015 13:16
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
aguZion Sin conexión
Militante
sin estado :)
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 64
Agradecimientos dados: 36
Agradecimientos: 47 en 12 posts
Registro en: Jul 2011
Mensaje: #6
RE: [APORTE] FINAL gestión de datos 15/12/2015
(16-12-2015 13:16)_Gabo escribió:  
(16-12-2015 01:19)aguZion escribió:  Muchachos les dejo una foto del final del Ayer (porque es la 1am)

Yo me saqué un humilde 4 haciendo el último ejercicio y la teoría.

1a) Falso
3b) lo justifiqué diciendo que con el dato de 0<N<M se puede suponer que en la tabla hay claves mas grandes que cantidad de valores, por ende no son correlativas las claves. así que hay huecos.
puse un ejemplo de lo que podría haber en la tabla
Clave__Valor
1_______20
2_______30
4_______50
6_______55
3_______10
10______12
claramente la función devolvería 3 ya que es la primer clave libre, pero nunca se fijó si mas abajo ya existía la clave 3.
Además por temas de isolation level también podría pasar que se inserte una clave ya existente
por ende Si. existe la posibilidad de que el insert con la función tire error por primary key existente.

Saludos!

Según entendí yo, al estar el 3 entre las claves no habría hueco ahí en este caso sino en 5.

Para mi la justificación de porque existe la posibilidad sería mostrar el siguiente ejemplo.

Clave 1 Valor NULL
Clave 2 Valor NULL
Clave 3 Valor 8

En este caso se cumpliría como me indican que 0<N<M porque N sería 1 y M sería 3. La función me devolvería 1, y el INSERT INTO Secuenticas VALUES (1,55) da error de PK duplicada.

Está bien lo que decís, pasa que reinosa en el medio del final, porque muchos se paraban a preguntar, aclaró cosas del ejercicio porque muchos preguntaban, y ahi me dió a entender que si había 1, 2 y 3 te daba la 4..

No se si entendí mal yo o que onda, pero hubo muchos problemas con el enunciado porque era medio ambiguo..

Saludos!
16-12-2015 16:35
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
leandrong Sin conexión
Secretario de la SAE
...
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 517
Agradecimientos dados: 135
Agradecimientos: 284 en 42 posts
Registro en: Sep 2008
Mensaje: #7
RE: [APORTE] FINAL gestión de datos 15/12/2015
Una consulta, ¿no se supone que al insertar el 3, la tabla se ordena por primary key?

Clave__Valor
1_______20
2_______30
4_______50
6_______55

Si está así e inserto el 3 quedaría así

Clave__Valor
1_______20
2_______30
3_______10
4_______50
6_______55

(16-12-2015 12:43)gonzalo.gobea escribió:  3a)

En la funcion el select que me devuelve la primera clave vacia lo hice asi



SELECT TOP 1 (s1.clave + 1) primer_hueco

FROM Secuencias s1 LEFT JOIN Secuencias s2
ON s1.clave = (s2.clave + 1)

WHERE s2.clave IS NULL

ORDER BY 1 ASC



despues hice un if de la variable primer_hueco y si daba mayor o igual que max(clave) es porque no habia huecos, entonces asignaba a la variable un 1, luego retornaba.

Si tengo
1
2
4

Tu función retorna 2, y no 3.

Cómo sería realizar una sentencia DML?

Con esto alcanza?

insert into secuencias (clave,valor) values (dbo.FINAL_20151215(),55)


Lo resolví con un cursor la primer parte.



create function FINAL_20151215()
returns int
as
begin

declare CursorFinal cursor for select clave from Secuencias order by clave
open CursorFinal

declare @clave int
declare @clave_anterior int
declare @hueco int
set @hueco = 1

fetch next from CursorFinal into @clave

set @clave_anterior = @clave

while (@@FETCH_STATUS = 0)
begin

if ((@clave - @clave_anterior) > 1)
begin
set @hueco = @clave_anterior + 1
break
end

set @clave_anterior = @clave
fetch next from CursorFinal into @clave
end

close CursorFinal
deallocate CursorFinal
return @hueco
end


(Este mensaje fue modificado por última vez en: 21-12-2015 18:50 por leandrong.)
21-12-2015 15:35
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.