数据库主键的问题

时间:2021-07-03 13:50:54
一个表中存用户名和密码,想让用户名唯一要把用户名设为主键吗,可是还有个id号,一般不是把id设为主键吗?请问实际中是否真的是用“XXID号”当主键的,怎么觉的ID号是多余的

8 个解决方案

#1


id可以作为主键,而用户名可以用unique,比如:

create unique index un_idx_username on 表(用户名)

这样就使得用户名是唯一的了,如果插入重复的用户名,就会报错的

#2


引用 1 楼 yupeigu 的回复:
id可以作为主键,而用户名可以用unique,比如:

create unique index un_idx_username on 表(用户名)

这样就使得用户名是唯一的了,如果插入重复的用户名,就会报错的

在实际中真的需要ID吗,是不是很简单的一个表不写ID,直接用用户名当主键岂不方便?

#3


引用 2 楼 zry1266 的回复:
Quote: 引用 1 楼 yupeigu 的回复:

id可以作为主键,而用户名可以用unique,比如:

create unique index un_idx_username on 表(用户名)

这样就使得用户名是唯一的了,如果插入重复的用户名,就会报错的

在实际中真的需要ID吗,是不是很简单的一个表不写ID,直接用用户名当主键岂不方便?


不是,实际一般都会有id,比如,你有一个权限表,存储了这个用户的权限,那么在权限表中就是:

权限id,用户id,权限

而不会直接存储用户名的,因为用户名可短,可长,占用的字节比较多,而且和其他表关联,也会更慢。

所以一般都会有一个用户id。

#4


那么有了id之后,你的表设计就更加灵活,能适应以后的变化,而且相对来说,性能更好。

#5


一般的用户表,都有这些字段:

USER_ID    用户id
USER_NAME  用户名
USER_PASSWORD  密码
LAST_LOGIN  最后一次登陆时间
CREATED_BY  创建人
CREATED_DATE 创建日期
UPDATED_BY   修改人
UPDATED_DATE 修改日期

#6


举个简单的例子,有id 如果有人删除数据了,是可以查出来的。

#7


引用 楼主 zry1266 的回复:
一个表中存用户名和密码,想让用户名唯一要把用户名设为主键吗,可是还有个id号,一般不是把id设为主键吗?请问实际中是否真的是用“XXID号”当主键的,怎么觉的ID号是多余的
做唯一约束即可,主键并不仅仅用来保证唯一性,至于ID,有系统保留有系统不保留,不过貌似都没有什么大影响

#8


ID号设为主键比较好

#1


id可以作为主键,而用户名可以用unique,比如:

create unique index un_idx_username on 表(用户名)

这样就使得用户名是唯一的了,如果插入重复的用户名,就会报错的

#2


引用 1 楼 yupeigu 的回复:
id可以作为主键,而用户名可以用unique,比如:

create unique index un_idx_username on 表(用户名)

这样就使得用户名是唯一的了,如果插入重复的用户名,就会报错的

在实际中真的需要ID吗,是不是很简单的一个表不写ID,直接用用户名当主键岂不方便?

#3


引用 2 楼 zry1266 的回复:
Quote: 引用 1 楼 yupeigu 的回复:

id可以作为主键,而用户名可以用unique,比如:

create unique index un_idx_username on 表(用户名)

这样就使得用户名是唯一的了,如果插入重复的用户名,就会报错的

在实际中真的需要ID吗,是不是很简单的一个表不写ID,直接用用户名当主键岂不方便?


不是,实际一般都会有id,比如,你有一个权限表,存储了这个用户的权限,那么在权限表中就是:

权限id,用户id,权限

而不会直接存储用户名的,因为用户名可短,可长,占用的字节比较多,而且和其他表关联,也会更慢。

所以一般都会有一个用户id。

#4


那么有了id之后,你的表设计就更加灵活,能适应以后的变化,而且相对来说,性能更好。

#5


一般的用户表,都有这些字段:

USER_ID    用户id
USER_NAME  用户名
USER_PASSWORD  密码
LAST_LOGIN  最后一次登陆时间
CREATED_BY  创建人
CREATED_DATE 创建日期
UPDATED_BY   修改人
UPDATED_DATE 修改日期

#6


举个简单的例子,有id 如果有人删除数据了,是可以查出来的。

#7


引用 楼主 zry1266 的回复:
一个表中存用户名和密码,想让用户名唯一要把用户名设为主键吗,可是还有个id号,一般不是把id设为主键吗?请问实际中是否真的是用“XXID号”当主键的,怎么觉的ID号是多余的
做唯一约束即可,主键并不仅仅用来保证唯一性,至于ID,有系统保留有系统不保留,不过貌似都没有什么大影响

#8


ID号设为主键比较好