Ver Mensaje Individual
  #6 (permalink)  
Antiguo 10/11/2010, 06:24
Punchi
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 191
Antigüedad: 20 años
Puntos: 1
Respuesta: Consulta con varias foraneas de una misma tabla

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Es más un tema de criterios de diseño.

El hecho de si necesitas o no una tercera tabla se basa en la forma de definir la relación entre las otras dos.

Si la relación es obligatoria, es decir si un mismo usuario debe estar vinculado a tres empresas y no puede estar vinculado a menos, es posible manejar eso con tres campos adicionales en la tabla usuarios, todos FK de empresa.

Pero si la relación es que puede estar vinculado hasta con tres empresas y como mínimo una, eso podría implicar una tercera tabla, por cuestiones de normalización. Hay que tener en cuenta que si la media de los registros no tiene los tres campos completos, se está desperdiciando espacio de almacenamiento (por pequeño que sea), y habitualmente en esos casos se recomienda separar esos conjuntos en una relación distinta.... que sería precisamente la N:M.

Además, es más simple manejar las relaciones de esa forma, ya que las consultas requieren dos JOIN y no tres como en tu propuesta..


En este punto la cosa tiene más que ver con el criterio del diseñador que con una metodología exclusiva.
Bien, creo que me entendiste mejor

Tal como tu dices, la relación es obligatoria y el usuario debe de pertenecer a no más y a no menos que a esas 3 empresas, siempre y en todos los casos, ya que cada empresa (diferente entre si) está relacionado a un tipo que ese usuario debe de tener.

Ya habiéndome entendido, puedo realizar la consulta que quiero con 2 select, pero no con 1... ¿es posible hacerlo con uno? "mostrar las (3) empresas a las que pertenece este usuario, pero no debe de mostrar el "ID_empresa", sino que su "razon_social""