我在这里读到,使用 AI 整数来表示用户可能比分配的域(字符串)用户名更好。我可以接受,但是,当我在“用户”表中包含自动生成的用户 ID 和唯一域用户名时,我应该如何在其他表中将其表示为 FK?例如。带有'userid' AND 'domainname' 或只是用户ID 的部门表;具有“用户 ID”和“域名”的硬件表或只是“用户 ID”作为所有者?
问问题
875 次
2 回答
0
只是用户 ID。这是数据库规范化的关键组成部分;如果其他表包含可以由用户完全确定的任何其他信息,那么您将引入不一致的风险,即不同的记录对给定用户提出不同的声明。
于 2014-11-11T06:17:24.490 回答
0
我会给你一些想法,但不是确切的答案。-“这个答案是基于我对你的问题的理解”
设计实例:
表Users
:
您在这里的主键是UserId
,您可以将其用作其他表中的外键。
UserId | Usernames
表Department
:
您在这里的主键是DepartmentId
,您可以将其用作其他表中的外键。
您还有一个UserId
从表中调用的外键Users
DepartmentId | UserId |DomainName
表Hardware
:
您的主键是HardwareId
您还有 2 个外键调用DepartmentId
和UserId
HardwareId | DepartmentId | UserId (optional) | Etc...
好的,每个表都必须并且必须有自己的主键,并且您不能使用DepartmentId
andUserId
成为表中的主键,Hardware
因为它们是该表中的外键。
DepartmentId
- 包括,这样你就会知道硬件基础所在的部门。
UserId
- (可选),您将通过仅使用UserId
于 2014-11-11T04:26:11.357 回答