Planteé la siguiente solución para el ejemplo 10: "π nombrecliente,nombresucursal ((σ estado = 'CAMPECHE' (cliente ⨝ ctacliente)) ⨝ numcta = numcta (σ estado = 'YUCATÁN'(cuenta ⨝ sucursal)))" El resultado fueron 612 filas, ¿alguien más que haya planteado alguna solución, obtuvo el mismo resultado de filas?
Hola, realizando los ejercicios he hallado formas distintas de realizar las consultas y en el ejemplo 6 daban valores distintos a los que salen en el video. Luego al introducir la misma consulta que en el video, el resultado obtenido ha sido el mismo al que obtenía con la manera alternativa. Es decir, las dos formas de realizar la consulta eran correctas, pero no se obtenían los mismos resultados que en el video. ¿Esto puede ser debido a que se hayan modificado los datos de la base de datos a posteriori de haber hecho el video? Un saludo y gracias por este contenido de calidad.
Profesor buen día. La pagina RelaX fue actualizada y ahora nos indica la cantidad de tuplas que hay en que cada relacion. Dicho esto, en el ejercicio 7 me encontré que Prestatario tiene 1847 tuplas, y Préstamo tiene 1000 tuplas... O sea que hay numprestamo en Prestatario que no son del dominio de numprestamo de la tabla Prestamos (habiendo una relacion de FK entre ellos...). Esto es un error ?
¡Hola Marco! Gracias por la observación, en efecto, había una inconsistencia con los datos. Estuve revisando el gist y parece que no se cargó de forma adecuada, pero ya hice los ajustes necesarios.
En el ejemplo 5(Intersección) hay algo que no entiendo: Comentas que sería equivalente: π idcliente (ctacliente) ∩ π idcliente (prestatario) pero el resultado son 236 rows ctacliente ⨝ prestatario. El resutado son 285 rows A nivel teórico veo que es igual, pero el resultado que me devuelve la consulta en RelaX es diferente...
¡Hola Juan! Muchas gracias por tan interesante pregunta, te comento lo que sucede: cuando aplicas la solución a través de las operaciones de conjuntos (en este caso una intersección), como sabemos, éstas se encargan de retirar todo rastro de información duplicada (quitando las repeticiones a los clientes que tienen cuenta más de una cuenta o más de un préstamo). Cuando se hace esta operación utilizando un natural join, estas tuplas duplicadas se van a mantener en el resultado. Si quisieras ver el mismo resultado en cardinalidad bastaría con hacer π idcliente (ctacliente ⨝ prestatario).
En el ejemplo 10 la relación no es vacía ya que: Usando un delta join; -- Ejemplo10 r= σ estado = 'CAMPECHE' (cliente) s= σ estado = 'YUCATÁN' (sucursal) h = r ⨝ ctacliente ⨝ cuenta h ⨝ cuenta.numsucursal = sucursal.numsucursal (s) Estas consultas dan clientes que viven en CAMPECHE con cuentas en YUCATÁN. Me parece que la primera forma con: cliente⨝ ctacliente ⨝cuenta (σ estado = 'YUCATÁN' (sucursal)) Toma los atributos de estado = 'YUCATÁN' con la relación cliente y sucursal ya que comparten ese atributo y parece ser que tienen el mismo dominio en el dataset, haciendo que toda esa consulta (lo que sospecho, no estoy seguro) tenga su atributo de estado con cliente y sucursal igual a 'YUCATÁN' (en la relación r) y cuando se hace la intersección de ahora clientes de CAMPECHE, esta es vacía, por que no tendrán nunca en común que sean del mismo estado, los primeros son de 'YUCATÁN' y los segundos de 'CAMPECHE'.
Excelente observación, de hecho al revisar la solución me doy cuenta que la platee al revés. Una posibilidad sería: -- Clientes que viven en Campeche r = π nombrecliente σ estado = 'CAMPECHE' (cliente) -- Sucursales del estado Yucatán s = π numsucursal (σ estado = 'YUCATÁN' (sucursal)) -- Clientes que tienen cuenta en Yucatán t = π nombrecliente (cliente ⨝ ctacliente ⨝ cuenta ⨝ s ) -- Clientes que viven en Campeche y tienen cuenta en Yucatán t ∩ r La consulta que planteo para la relación s (en el vídeo), tiene el problema que cliente y sucursal tienen como atributo en común: estado. Esto provoca que al final en el join natural se intente encontrar a los clientes viven en Campeche y tienen cuenta en Campeche, lo cual, evidentemente no devuelve nada, ya que inicialmente se filtró a los que viven en Yucatán. Gracias por tan valiosa observación.
tengo otra solucion con resultado de 18 filas: r = π idcliente,nombrecliente(σ estado='CAMPECHE'(cliente)) p = π numsucursal,nombresucursal,estado(σestado='YUCATÁN'(sucursal)) s = r ⨝ ctacliente ⨝ cuenta ⨝ p π nombrecliente,numcta,nombresucursal(s)
Estas clases sencillamente son geniales!
Planteé la siguiente solución para el ejemplo 10:
"π nombrecliente,nombresucursal ((σ estado = 'CAMPECHE' (cliente ⨝ ctacliente)) ⨝ numcta = numcta (σ estado = 'YUCATÁN'(cuenta ⨝ sucursal)))"
El resultado fueron 612 filas, ¿alguien más que haya planteado alguna solución, obtuvo el mismo resultado de filas?
Hola, realizando los ejercicios he hallado formas distintas de realizar las consultas y en el ejemplo 6 daban valores distintos a los que salen en el video. Luego al introducir la misma consulta que en el video, el resultado obtenido ha sido el mismo al que obtenía con la manera alternativa. Es decir, las dos formas de realizar la consulta eran correctas, pero no se obtenían los mismos resultados que en el video. ¿Esto puede ser debido a que se hayan modificado los datos de la base de datos a posteriori de haber hecho el video? Un saludo y gracias por este contenido de calidad.
me sirvio mas que 1 mes de clases de mi profe
x2
x3
Profesor buen día. La pagina RelaX fue actualizada y ahora nos indica la cantidad de tuplas que hay en que cada relacion. Dicho esto, en el ejercicio 7 me encontré que Prestatario tiene 1847 tuplas, y Préstamo tiene 1000 tuplas... O sea que hay numprestamo en Prestatario que no son del dominio de numprestamo de la tabla Prestamos (habiendo una relacion de FK entre ellos...). Esto es un error ?
¡Hola Marco! Gracias por la observación, en efecto, había una inconsistencia con los datos. Estuve revisando el gist y parece que no se cargó de forma adecuada, pero ya hice los ajustes necesarios.
En el ejemplo 5(Intersección) hay algo que no entiendo:
Comentas que sería equivalente:
π idcliente (ctacliente) ∩ π idcliente (prestatario) pero el resultado son 236 rows
ctacliente ⨝ prestatario. El resutado son 285 rows
A nivel teórico veo que es igual, pero el resultado que me devuelve la consulta en RelaX es diferente...
¡Hola Juan! Muchas gracias por tan interesante pregunta, te comento lo que sucede: cuando aplicas la solución a través de las operaciones de conjuntos (en este caso una intersección), como sabemos, éstas se encargan de retirar todo rastro de información duplicada (quitando las repeticiones a los clientes que tienen cuenta más de una cuenta o más de un préstamo). Cuando se hace esta operación utilizando un natural join, estas tuplas duplicadas se van a mantener en el resultado. Si quisieras ver el mismo resultado en cardinalidad bastaría con hacer π idcliente (ctacliente ⨝ prestatario).
En el ejemplo 10 la relación no es vacía ya que:
Usando un delta join;
-- Ejemplo10
r= σ estado = 'CAMPECHE' (cliente)
s= σ estado = 'YUCATÁN' (sucursal)
h = r ⨝ ctacliente ⨝ cuenta
h ⨝ cuenta.numsucursal = sucursal.numsucursal (s)
Estas consultas dan clientes que viven en CAMPECHE con cuentas en YUCATÁN.
Me parece que la primera forma con:
cliente⨝ ctacliente ⨝cuenta (σ estado = 'YUCATÁN' (sucursal))
Toma los atributos de estado = 'YUCATÁN' con la relación cliente y sucursal ya que comparten ese atributo y parece ser que tienen el mismo dominio en el dataset, haciendo que toda esa consulta (lo que sospecho, no estoy seguro) tenga su atributo de estado con cliente y sucursal igual a 'YUCATÁN' (en la relación r) y cuando se hace la intersección de ahora clientes de CAMPECHE, esta es vacía, por que no tendrán nunca en común que sean del mismo estado, los primeros son de 'YUCATÁN' y los segundos de 'CAMPECHE'.
Excelente observación, de hecho al revisar la solución me doy cuenta que la platee al revés. Una posibilidad sería:
-- Clientes que viven en Campeche
r = π nombrecliente σ estado = 'CAMPECHE' (cliente)
-- Sucursales del estado Yucatán
s = π numsucursal (σ estado = 'YUCATÁN' (sucursal))
-- Clientes que tienen cuenta en Yucatán
t = π nombrecliente (cliente ⨝ ctacliente ⨝ cuenta ⨝ s )
-- Clientes que viven en Campeche y tienen cuenta en Yucatán
t ∩ r
La consulta que planteo para la relación s (en el vídeo), tiene el problema que cliente y sucursal tienen como atributo en común: estado. Esto provoca que al final en el join natural se intente encontrar a los clientes viven en Campeche y tienen cuenta en Campeche, lo cual, evidentemente no devuelve nada, ya que inicialmente se filtró a los que viven en Yucatán. Gracias por tan valiosa observación.
tengo otra solucion con resultado de 18 filas:
r = π idcliente,nombrecliente(σ estado='CAMPECHE'(cliente))
p = π numsucursal,nombresucursal,estado(σestado='YUCATÁN'(sucursal))
s = r ⨝ ctacliente ⨝ cuenta ⨝ p
π nombrecliente,numcta,nombresucursal(s)
@@darthger Yo planteé la siguiente solución:
r = πidcliente, nombrecliente((σestado = 'CAMPECHE' (cliente)))
e = πnumsucursal(σestado = 'YUCATÁN' (sucursal))
πidcliente, nombrecliente(r ⨝ ctacliente ⨝ cuenta ⨝ e)