【问题标题】:Is it bad to use user name as primary key in database design?在数据库设计中使用用户名作为主键是不是很糟糕?
【发布时间】:2009-12-01 11:37:08
【问题描述】:

朋友告诉我的:

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

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

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

【问题讨论】:

    标签: mysql database-design primary-key unique-key


    【解决方案1】:

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

    【讨论】:

    • 主键不能改变。或者它不是“主要的”。密钥应该是系统分配的,以保证它永远不会改变。其他字段(如名称)可以有唯一索引,但不能是主键——根据定义。
    • 应用程序将某些字段指定为主键,因此不会更改。应用程序可以稍后更改,使最初定义为唯一且不变的字段,以允许重复或更改,这就是这里的重点。
    • 连接表也是这样吗?换句话说,我应该为连接表中的每个条目创建 ID,因为主键的组合可以改变吗?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 2011-09-20
      • 2011-10-06
      • 2011-03-05
      • 2013-10-16
      • 1970-01-01
      • 2020-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多