在数据库设计中使用用户名作为主键有什么不好吗?

发布于 2024-08-13 01:20:17 字数 330 浏览 5 评论 0原文

一位朋友告诉我:

您使用什么唯一密钥?我希望你 不保存整个用户名 ---这会占用太多的表空间!为每个用户分配一个唯一的用户 ID (唯一)userNAME并保存此userID (应该是无符号整数 auto_increment 或 BIGINT UNSIGNED 自动增量)。别忘了 创建参考

外键(用户ID)参考 所有表中的 usertable (userID) 使用用户 ID。

上述说法正确吗?为什么或为什么不呢?

I was told by a friend:

What unique key do you use? I hope you
are not saving the entire user name
--- this will use up too much table space! Assign an unique userID to each
(unique) userNAME and save this userID
(should be INTEGER UNSIGNED
auto_increment or BIGINT UNSIGNED
auto_increment). Don't forget to
create a reference

FOREIGN KEY (userID) REFERENCES
usertable (userID) in all tables
using the userID.

Is the above statement correct? Why or why not?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小傻瓜 2024-08-20 01:20:17

我认为他是对的(出于错误的原因),因为主键无法更改,但用户名可以更改。所以你应该使用userid,因为它不会改变。

I think he is right ( for the wrong reason) because primary key cannot change, but username can change. So you should use userid because it wouldn't change.

千纸鹤 2024-08-20 01:20:17

他是对的,但理由却是错误的。表空间是次要的,因为您的应用程序稍后可能会要求用户名可以更改,甚至不再是唯一的(您可以设想一个不需要唯一用户名的应用程序,例如 Stack Overflow),因此您的应用程序需要进行重大重构和数据迁移而不是其他(整数 PK)情况下的轻微更改。

He is right for the wrong reasons. The table space is secondary to the fact that your app might later mandate that usernames can be changed or even stop being unique (you could envision an application where unique usernames are not required, like Stack Overflow) and thus your app would need major refactoring and data migration instead of a light change in the other (integer PK) case.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文