数据库中,关系模型中的主键是对每条数据记录的唯一标识,不可重复。主键可以是属性集,比如一张表R(A,B,C,D),主键为A+B是可以的。
主键,即主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录。主关键字是一种唯一关键字,表定义的一部分。
一个表的主键可以由多个关键字共同组成,并且主关键字的列不能包含空值。主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义。
扩展资料:
建立主键应该遵循的原则:
1、主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。
2、 永远也不要更新主键。因为主键除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。
3、主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。
4、主键应当由计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了唯一标识一行以外的意义。一旦越过这个界限,就可能产生人为修改主键的动机。
参考资料来源:百度百科-主关键字
根据你的提问,我认为你所说的是物理主键和逻辑主键的概念.一般所言的数据库中的主键是物理主键,他可能在系统中由数据库自动生成,比如一个32位长的随机字符串.
而逻辑主键一般是用来表示一个包含确切意义的并唯一的键值,使用者可以根据逻辑主键的值清晰的了解到一些信息,但这些信息从物理主键是无法了解的.
你上面的表里是打算用逻辑主键当物理主键用.这样做可以,但不推荐.
一般的做法,尤其在大型项目中.建议使用物理主键,该主键交由数据库自动生成.并使用自己的逻辑主键,需要在程序中判断自己逻辑主键的唯一性,当然如果要求不高的系统可以不做判断.
优点,在数据库迁移等过程中,可最大可能的保护你数据的完整性,比如你从一个ORACLE数据库移动到SEQ SERVER数据库时,可能物理主键会存在这样或那样的问题,这时你可以选择放弃原有的物理主键,只移动数据内容并生成新的物理主键.
还有点建议,在程序中使用的时候,建议使用物理主键来关联你的数据内容~
答题完毕,希望对你有所帮助.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)