一、定义:
1.主键:能够通过某个字段能够唯一区分出不同的记录,插入相同主键的两条记录是不被允许的;
2.对主键的要求:记录一旦插入表中,主键最好不要再修改,主键用于定位表中唯一记录,修改主键会造成一系列影响;
3.主键选择的基本原则:不使用任何业务相关的字段作为主键,最好是完全业务无关的字段;
- 自增整数类型:数据库在插入时自动为每一条记录分配一个自增整数,可以不用担心主键重复,基本上能够满足应用需求;如果使用INT自增类型,当一张表的记录数超过约21时,会达到上限而出错,使用BIGINT自增类型可以最多约922亿亿条记录;
- 全局唯一GUID类型:使用一种全局唯一的字符串作为主键。GUID通过网卡MAC地址。时间戳和随机数保证任意计算机在任意时间生成的字符串都是不同的。
二、联合主键
1.定义:关系数据库实际上还允许通过多个字段唯一标识记录,将两个或更多的字段同时设置为主键;
2.对于联合主键,允许一列有重复,只要不是所有主键列都重复即可,即没有两列组合起来是相同的;
3.可以使用多个列作为联合主键,但是没有必要的情况下不要使用联合主键,会提高关系表的复杂度。