我一直想知道为什么在大多数示例/教程中,每个人都将用户的名称存储在审核数据库列中,例如CreatedBy
/ ModifiedBy
。
在我的脑海中,我一直想知道,如果我正在构建的系统将允许用户改变他们的用户名,如果不采用该怎么办。
在这种情况下,我不想存储用户的ID吗?
我真的不希望这是一个基于意见的问题。所以我期望的答案是将用户的名称存储在审计列中的情况很好,并且将用户的ID存储在审计列中的情况很好。
答案 0 :(得分:5)
这不是一个基于意见的问题。但是,请考虑使用UserID时会发生什么。下一个合乎逻辑的结论是为用户表创建一个外键。现在,如果用户拥有审计行,则无法删除该用户。
好吧没什么大不了的。跳过外键并放入没有外键的UserID。现在,如果删除用户行,审计信息有用吗?特别是如果您的身份或uniqueidentifier作为您的UserID。该值现在完全没用,因为要从中获取任何值,您必须加入到用户表中。
现在,为什么大多数时候你会看到UserName而不是UserID?