关于自动编号的 id 作为数据库主键的问题

主关键字(主键,primary key)是被挑选出来, 
 
 

作表的行的唯一标识的候选关键字。但是我们在建表时,有时候会有一个自动编号的id字段和学号字段。那么,我们选择id还是学号(sno)作为关键字?

在这样的表中,该选择什么作为主键?其实很多人会选择sno作为主键,那是一个误区。应该选择id作为主键。理由如下:根据主码的定义,

建立主键应该遵循的原则
1. 主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。
2. 永远也不要更新主键。实际上,因为主键除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。
注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。
3. 主键不应包含动态变化的数据,如创建时间列、修改时间列等。
4. 主键应当由计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了唯一标识一行以外的意义。一旦越过这个界限,就可能产生人为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。
希望大家多多关注

猜你喜欢

转载自blog.csdn.net/qq_38483191/article/details/78484430