¿Diferencias entre JOIN y Foreign Key?

Iniciado por sReOn_1R, 2 Noviembre 2010, 16:16 PM

0 Miembros y 1 Visitante están viendo este tema.

sReOn_1R

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





sReOn_1r

sReOn_1R

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





sReOn_1r

Lunfardo

no me preguntes por que , pero el join se considera mala practica

[D4N93R]

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. :)

Lunfardo

Cita de: [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. :)


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:

CitarA 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.

[D4N93R]


Lunfardo

#6
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

[D4N93R]

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..

Novlucker

#8
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
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein