我在这里读到,使用AI整数表示用户而不是指定的域(字符串)用户名可能更好。但是,当我在'users'表中包含自动生成的userid和唯一的域用户名时,我可以接受这一点,我应该如何在其他表中将其表示为FK?例如。带有'userid'和'domainname'的部门表或只是用户ID;带有'userid'和'domainname'的硬件表,或者只是'userid'作为所有者?
答案 0 :(得分:0)
我会给你一些想法,但不是确切的答案。 - "这个答案基于我对你的问题的理解"
设计示例:
表Users
:
您的主键是UserId
,您可以将其用作其他表中的外键。
UserId | Usernames
表Department
:
您的主键是DepartmentId
,您可以将其用作其他表中的外键。
您还有一个名为UserId
的外键来自表Users
DepartmentId | UserId |DomainName
表Hardware
:
您的主要密钥是HardwareId
您还有2个外键,名为DepartmentId
和UserId
HardwareId | DepartmentId | UserId (optional) | Etc...
好的,每个表都必须拥有自己的主键,并且您无法使用DepartmentId
和UserId
成为表Hardware
中的主键,因为它们是这个表中的外键。
DepartmentId
- 包含,这样您就会知道硬件基础所在的部门。
UserId
- (可选),您只需使用UserId
答案 1 :(得分:0)
只是用户ID。这是database normalization的关键组成部分;如果其他表包含可由用户完全确定的任何其他信息,则会引入不一致的风险,从而不同的记录对给定用户做出不同的声明。