1 主键:
在物理层面:
1. 惟一地标识一行,不能有重复的,不允许为空。
2. 作为一个可以被外键有效引用的对象。
个数:
主键一个表只能有一个
作用:
用来保证数据完整性
设计物理层面的主键时原则:
1. 主键应当是对用户没有意义的。
2.主键应该是单列的,以便提高连接和筛选操作的效率。
3. 永远也不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。
这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。
4.主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。
5.主键应当有计算机自动生成。
2 外键
1 定义:
表的外键是另一表的主键, 外键可以有重复的, 可以是空值
2 作用:
用来和其他表建立联系用的
3 个数:
一个表可以有多个外键
定义一个外键时,需要遵守下列规则:
- 父表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则父表与子表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。
- 必须为父表定义主键。
- 主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。
- 在父表的表名后面指定列名或列名的组合。这个列或列的组合必须是父表的主键或候选键。
- 外键中列的数目必须和父表的主键中列的数目相同。
- 外键中列的数据类型必须和父表主键中对应列的数据类型相同。