27

一个朋友告诉我:

您使用什么唯一密钥?我希望您没有保存整个用户名 --- 这会占用太多的表空间!为每个(唯一)用户名分配一个唯一的用户 ID,并保存此用户 ID(应该是 INTEGER UNSIGNED auto_increment 或 BIGINT UNSIGNED auto_increment)。不要忘记创建参考

FOREIGN KEY ( userID) REFERENCES usertable( userID) 在所有使用 userID 的表中。

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

4

2 回答 2

56

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

于 2009-12-01T11:37:52.197 回答
21

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

于 2009-12-01T11:43:10.167 回答