Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/07/2012, 16:25
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 3 meses
Puntos: 2658
Respuesta: unir dos tablas sin relacion

Cita:
la unica relacion que tiene esta tablas es cuando coincide el id (i.id_to = m.id_to). Ahora el problema que tengo es que si ese id no coincide no me muestra la informacion.
Eso es un comportamiento esperado.
SI en un registro de mensaje corresponde a un chat determinado, debe obligatoriamente contener la FK de la otra tabla. Si no existe ningún mensaje referido a un determinado chat, es que ese chat no tuvo jamás mensajes.
Y si todo chat tiene mensajes... entonces tienes un problema de diseño de procesos, porque no estás almacenando información consistente.

UN detalle: Para determinar si un chat no tuvo mensajes, se usa LEFT JOIN, como ya te dije, pero devolverá NULL en esos casos en la segunda tabla.
Ten en cuenta que no es lo mismo hablar de no existencia de relaciones constantes, que de entidades débiles (tablas funcionalmente dependientes). Las primeras indican que no hay relación, la segunda que hay dependencia funcional.

Cita:
Hace poco monte una bd y empece a poner las FOREIGN KEY pero cuando empece a insertar datos en la tablas me daba error porque como las tablas tenian FOREIGN KEY me obligaba a insertar datos en todas las tablas que esten relacionadas.
Eso es lo que se supone que debes hacer.
Puede que no tengas bien claro o la razón de la existencia de las FK o su impacto en las aplicaciones.
Una FK se usa para generar una restricción al sistema que permita asegurar que la información es consistente, que no existe redundancia innecesaria, y que las dependencias entre tablas se respeta.
Ahora bien, desde el punto de vista de los procedimientos, la definición de FK en una tabla obliga a los desarrolladores a respetar la cadena de dependencias, lo que a veces los programadores no quieren hacer. Pero eso no significa que uno deba acceder a suspender las dependencias en aras de "facilitarle" el trabajo (y consecuentemente meter la pata) a los programadores. Ellos tienen la obligación de respetar la consistencia de los datos, que es crucial para los sistemas.

Entonces, la existencia de la FK se usa para asegurar, por ejemplo:

- Que no se pueda facturar un producto que no existe en el stock.
- Que no se imputen cargas sociales a empleados inexistentes.
- Que no se puedan cobrar impuestos que no corresponden por categoría impositiva.
- Que no ingreses el detalle de la factura, para una factura que no ingresó jamás.
- Un enorme, enorme, enorme, ENORME etcétera.

Cita:
Siempre que hacer una relacion y empiezas a insertar datos tiene que insertar datos a todas las tablas relacionados????
Siempre.
Es parte fundamental del paradigma relacional implementado a nivel físico, que los valores a ingresar en un registro, en una columna que sea definida como FK, deben existir previamente en la tabla referida.
Siempre.
Inevitablemente.
Obligatoriamente.

¿Queda claro el por qué?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)