Ray*_*Ray 5 database database-design
我的Web应用程序将有各种类型的用户:root用户,sys-admins,客户,承包商等.我想要一个表"User",其中包含"Username","Password"和"角色"角色是上述角色之一.例如,我还会有一个名为"Customer"的表来存储客户特定的属性.
这是我的问题.由于所有用户名都是唯一的,我可以使用用户名作为User表的主键.但是,更有意义的是,创建"用户ID"列并使用它而不是用户名列作为PK吗?还有许多其他表将使用此用户PK作为外键,我认为从性能角度来看,比较用户ID而不是用户名文本字符串会更快.
感谢您的答复.
这是旧的自然与代理关键辩论.
简而言之,没有什么是切割干燥的,你需要在竞争利益之间取得平衡:
在用户名的情况下......
......所以在这种情况下代理密钥可能是合理的.
我会创建用户 ID,因为虽然用户名可能是唯一的,但它们通常不是不可更改的,而且我不想更改数千或数百万条记录,因为 HLGEM 希望成为 HLGEM_1。对整数的进一步连接速度更快。