Pregunta

Si tengo dos mesas - inicios de sesión y Usuarios, de la siguiente manera:

Logins
 LoginIdNo
 UserIdNo
 HashedPassword 

Users
 UserIdNo
 LoginIdNo
 Username

Cada entrada "tiene un usuario" y cada usuario "tiene un inicio de sesión", pero que "pertenece" a la que?

¿Es simplemente una cuestión de criterio o hay una fórmula bien definida para determinar dónde la clave externa debe residir?

¿Fue útil?

Solución

Esta es una relación uno-a-uno. Donde se coloca la clave externa, probablemente, se decide por la opcionalidad en esos casos.

¿Hay alguna razón en particular que haya dividirla en dos entidades? No soy un gran fan de uno-a-uno asignaciones, sobre todo en ORM como APP en las que son difícil de poner en práctica (si se utiliza la clave principal de una como la clave externa a otra).

¿Cuál es, en su sistema, es la diferencia entre una sesión y un usuario?

Si sesión llegara a suceder cada vez que un inicio de sesión de usuario en (es decir, se trata de una pista de auditoría de la actividad del usuario), entonces usted tiene una relación de uno a muchos entre usuario y acceso al sitio y acceso al sitio deben utilizar una clave externa identificación de usuario.

Sin embargo, en este caso en el que el nombre de usuario está en una tabla y la clave está en otra y hay una relación uno-a-uno betwene los dos tiene que preguntar por qué están separados.

Otros consejos

Desde un inicio de sesión no se asocia con más de un usuario (y viceversa), es una decisión arbitraria de cómo se defina la relación (y, por tanto, donde se coloca la clave externa). A menos que usted también va a añadir otros atributos (Firleds) o utilizar los roles, que podría ser más fácil de simplemente definirlo así:

Users 
    UserIdNo 
    Username
    HashedPassword
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top