Cita:
Iniciado por Punchi Pareciera una N:M, pero no lo es como tal, puesto que los usuarios deben estar en sólo 1 empresa (pero de cada tipo; dato1, dato2, dato3) y la empresa puede tener a varios usuarios.
Una N:M sería cuando varios usuarios (>1) pueden estar en varias empresas y varias empresas pueden contener a varios usuarios... este es un caso en donde un usuario esta sólo 1 una empresa pero debe tener de esos 3 tipos... se entiende?
Gracias!
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.