我的几乎所有表格中都有字段,例如createdBy
或updatedBy
。
我认为这仅供参考。
您认为我应该在那里输入用户名或userID
。因为如果我需要直接查看数据库,那么可以提供更好的理解,或者这是一种不好的做法。
答案 0 :(得分:1)
始终使用外键来存储引用记录,即您的案例中的userID。
关于如何存储的方法,这取决于你需要什么。
a)如果您想知道谁最后更新了记录。那么你应该 在表格中创建
userID
列。
存储外键而不是其他记录总是好的,因为这样您就可以关联并获取用户的所有记录。这种方法会有一个限制,因为你只能存储一个用户ID,你只能知道谁最后更新了它。
b)如果要存储所有记录,要知道更新了哪个用户 记录和时间,然后你应该存储在一对多 关系表。例如
user_log with columns user_id, update_datetime
,也许是一个消息列,告诉用户做了什么。
答案 1 :(得分:0)
用户名。 因为它们比用户名更小更快。
假设您的用户想要更改用户名,那么您将无需更新所有非常有效的表
答案 2 :(得分:0)
始终使用ID来保持规范化的关系数据结构。这将提供更好的性能和更大的可扩展性。如果你可以包含约束,它将使它更清洁。
答案 3 :(得分:0)
并不总是坏事。保护您的申请需求。规范化很好地消除了冗余。然而,如果速度是因素,你可以保持原样。因为加入需要时间。插入数据也意味着插入两个表格。
从本书开始,为了规范化,总是+1,<)>
答案 4 :(得分:0)
使用以后无法更改的内容。通常对于user_id也是如此。
在特殊情况下,您可能希望将名称存储在添加中(以便能够在结婚前显示用户的名称,或者在此之后显示用户的名称被删除了)。但通常情况下,您再次查询数据库中的(当前)名称(也可以轻松缓存)。
答案 5 :(得分:0)
在用户名的情况下,代理键往往是更好的选择。因此,在您的情况下,FK(createdBy
和updatedBy
)将引用代理键(userID
)而不是自然键(用户名)。
但是, 意味着代理总是比自然密钥更好:考虑this list of criteria。