主键
表中定义一个主键来确定表中每一行数据的标识符。主键可以是表中的某一列或多列的组合,多列的组合的主键叫复合主键。它有如下特点:
- 每个表只能定义一个主键。
- 主键值必须唯一标识表中的每一行,且不能为NULL,也就是说不可能存在两行数据有相同的主键值。这是唯 一性原则。
- 复合主键语序一列有重复,只要不是所有主键列都重复即可。 即不能存在主键组合起来是相同的。
- 复合主键不能包含不必要的多余列。当把复合主键的某一列删除后,如果剩下的列构成的主键仍然满足唯一性原则,那么这个复合主键是不正确的。这是最小化原则。
主键是关系表中记录的唯一标识。主键的选取非常重要:主键不要用带有业务含义的字段(如身份证,手机号等),而应该使用自增整数类型(1,2,3,4...)或者GUID类型。(GUID类型:使用一种全局唯一的字符串作为主键,类似8f55d96b-8acc-4636-8cb8-76bf8abc2f57
。GUID算法通过网卡MAC地址、时间戳和随机数保证任意计算机在任意时间生成的字符串都是不同的)。
复合主键并不常用,因为关系表带来了复杂度的上升。
外键
用来在两个表的数据之间建立链接,可以是一列或多列。一个表可以有一个或多个外键。特点:
- 一个表的外键可以为空值,若不是空值,则每一个外键的值必须等于另一个表中主键的某个值。
- 外键是表的一个字段,不是主键,但对应另一个表的主键。定义外键后,不允许删除另一个表中具有关联关系的行。
- 主要作用是保持数据的一致性、完整性。(通过定义外键约束,关系数据库可以保证无法插入无效的数据。如果
classes
表不存在id=99
的记录,students
表就无法插入class_id=99
的记录)
网友评论