如何确定在何处放置在此方案中的外键?
题
如果我有两个表 - 登录和用户,如下所示:
Logins
LoginIdNo
UserIdNo
HashedPassword
Users
UserIdNo
LoginIdNo
Username
每个登录“具有用户”,并且每个用户“有一个登录”,但“属于”哪个?
这纯粹是一个判断呼叫或是否有皆伐公式用于确定在何处外键应该驻留?
解决方案
这是一个一对一的关系。当你把外键可能是由期权在这种情况下决定的。
是否有你这个分裂成两个实体的任何特别的原因?我不是一个一对一的映射一个巨大的风扇,特别是在像JPA的ORM,他们是尴尬的实现(如果你使用的主键从一个为外键到另一个)。
什么,在你的系统,是一个登录和用户之间的区别?
如果登录是每次都发生在用户登录(也就是说,它的用户活动的审计线索),那么你有用户和登录名和登录应使用用户名外键之间的一个一对多的关系。
但在这种情况下的用户名是在一个表中,密码是另一个和有betwene你有两个一比一的关系问他们为什么分开。
其他提示
由于登录永远不会与一个以上的用户(反之亦然)相关联,它是你如何定义的关系(因此您放置外键)武断的决定。除非你也将会增加其他属性(Firleds)或使用角色,它可能是简单简单地定义它像这样:
Users
UserIdNo
Username
HashedPassword
不隶属于 StackOverflow