使用用户名列而不是ID?

hel*_*hod 2 sql database pseudocode

这是我在互联网上找到的用户管理数据库的设置(用伪代码编写).虽然它看起来很好,但我不明白为什么users表有id一个唯一的非空username列.我不能只使用用户名作为id(主键)吗?

users
(
  id integer primary key,
  username varchar(100) not null unique key,
  pwd varchar(50) not null
);

user_roles
(
  user_id integer not null,
  role_id integer not null,
  unique key (user_id, role_id),
  index(user_id)
);

roles
(
  id integer primary key,
  role varchar(100) not null unique key
);
Run Code Online (Sandbox Code Playgroud)

Joe*_*lli 6

我总是回到Kimberly L. Tripp 关于群集密钥建议(默认情况下,它是SQL Server中的主键).

她的标准是聚类键应该是:

  • 独特(ID和名称之间的关系)
  • 缩小(ID为+1)
  • 静态(ID 可能为 +1,具体取决于是否允许更改名称)
  • 不断增加(ID的可能 +1,取决于它的实现方式,在这里使用IDENTITY列将是理想的情况)