如果我有两个表 - 登录和用户,如下所示:
Logins
LoginIdNo
UserIdNo
HashedPassword
Users
UserIdNo
LoginIdNo
Username
每个登录“有一个用户”,每个用户“有一个登录”,但哪个“属于”哪个?
它只是一个判断调用还是有一个明确的公式来确定外键应该驻留在哪里?
如果我有两个表 - 登录和用户,如下所示:
Logins
LoginIdNo
UserIdNo
HashedPassword
Users
UserIdNo
LoginIdNo
Username
每个登录“有一个用户”,每个用户“有一个登录”,但哪个“属于”哪个?
它只是一个判断调用还是有一个明确的公式来确定外键应该驻留在哪里?
这是一对一的关系。在这些情况下,放置外键的位置可能由可选性决定。
您将其分为两个实体有什么特别的原因吗?我不是一对一映射的忠实拥护者,尤其是在 JPA 之类的 ORM 上,它们难以实现(如果您使用一个主键作为另一个映射的外键)。
在您的系统中,登录和用户之间的区别是什么?
如果每次用户登录时都会发生登录(即,它是用户活动的审计跟踪),那么您在用户和登录之间存在一对多的关系,并且登录应该使用 UserID 外键。
但是在这种情况下,用户名在一个表中,密码在另一个表中,并且两者之间存在一对一的关系,您必须询问他们为什么分开。
由于登录永远不会与多个用户相关联(反之亦然),因此您可以随意决定如何定义关系(以及放置外键的位置)。除非您还要添加其他属性(Firleds)或使用角色,否则像这样简单地定义它可能更简单:
Users
UserIdNo
Username
HashedPassword