Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: sReOn_1R en 2 Noviembre 2010, 16:16 pm



Título: ¿Diferencias entre JOIN y Foreign Key?
Publicado por: sReOn_1R en 2 Noviembre 2010, 16:16 pm
Hola tengo una duda bastante simple seguramente para los que entienden Join..¿Sirve para unir tablas como las claves foráneas??Si es así,¿en que se diferencian?
Por mucho que busco por google no encuentro las diferencias por lo que he leido parece que es lo mismo.
Gracias


Título: Re: ¿Diferencias entre JOIN y Foreign Key?
Publicado por: sReOn_1R en 2 Noviembre 2010, 16:33 pm
Perdón,ya lo he entendido,me hacía un lio.
Yo de siempre he utilizado la forma implícita de JOIN,es decir,no poner nada de JOIN y poner "," en todas las consultas que quería hacer para sacar tablas, ya lo he entendido,Wikipedia me ha salvado :D
http://es.wikipedia.org/wiki/Join


Título: Re: ¿Diferencias entre JOIN y Foreign Key?
Publicado por: Lunfardo en 2 Noviembre 2010, 16:48 pm
no me preguntes por que , pero el join se considera mala practica


Título: Re: ¿Diferencias entre JOIN y Foreign Key?
Publicado por: [D4N93R] en 2 Noviembre 2010, 18:23 pm
Uhm, no, no es mala práctica. Todo depende de lo que hagas. A veces es mala práctica usar una tabla temporal pero es conveniente en muchos casos por mejorar el performance. De la misma forma pasa con la normalización.

Así que eso es cuestión de cada quién. :)


Título: Re: ¿Diferencias entre JOIN y Foreign Key?
Publicado por: Lunfardo en 2 Noviembre 2010, 19:43 pm
Uhm, no, no es mala práctica. Todo depende de lo que hagas. A veces es mala práctica usar una tabla temporal pero es conveniente en muchos casos por mejorar el performance. De la misma forma pasa con la normalización.

Así que eso es cuestión de cada quién. :)


la verdad que nose en otros lenguajes de programacion, pero en la plataforma .net te cito lo que puso  Zlatko Michailov,Entity SQL program manager:

Citar
A well defined query against a well defined entity data model does not need JOIN.
Navigation properties in combination with nesting sub-queries should be used instead.
These latter constructs represent task requirements much more closely than JOIN
does.


Título: Re: ¿Diferencias entre JOIN y Foreign Key?
Publicado por: [D4N93R] en 2 Noviembre 2010, 20:33 pm
Eso es para EntityFramework.


Título: Re: ¿Diferencias entre JOIN y Foreign Key?
Publicado por: Lunfardo en 2 Noviembre 2010, 21:17 pm
supongo que se puede abstraer a Linq en general , ya que l2e agrega  intellsense y abstraccion de la base de datos utilizada ; y Linq es la forma adecuada para hacer query en .net, por eso lo generalice para la plataforma


Título: Re: ¿Diferencias entre JOIN y Foreign Key?
Publicado por: [D4N93R] en 2 Noviembre 2010, 21:29 pm
Sí puede que sea para LINQ to SQL nada más. de resto no estoy muy seguro, habría que hacer pruebas y eso. Yo no confío mucho en las declaraciones de microsoft, han dicho cada barbaridad..


Título: Re: ¿Diferencias entre JOIN y Foreign Key?
Publicado por: Novlucker en 2 Noviembre 2010, 23:08 pm
Los JOIN siempre van a existir, dificilmente no tengas que hacerlo en algún momento, ya que o bien tienes una base de datos con tablas totalmente individuales y no relacionadas, o bien no tienes la bbdd normalizada y tienes columnas "extra".

De hecho es siempre recomendable hacer un INNER JOIN de dos tablas por ejemplo, a obtener valores de dos tablas con la comparación en el WHERE directamente, ya que en este último caso obtienes el producto cartesiano de las dos tablas, cosa que no pasa con el JOIN.

Y sobre la pregunta original, en el JOIN por ejemplo utilizas las claves foraneas, así que digamos que el "en que se diferencian" no tiene nada que ver, son cosas que si bien estan relacionadas no tienen por que estarlo en lo que respecta a motivos para usarlas :P

Saludos