数据库主键和外键
数据库主键和外键
一: 什么是 主键 外键
学生表(学号,姓名,性别)
学号是主键
课程表(课程号,课程名,学分)
课程号是主键
成绩表(学号,课程号,成绩)
学号/课程号 是外键
- 如果公共关键字在一个关系中是主关键字,呢么这个公共关键字被称为另一关系的外键
- 如果一个关系的外键作为主关键字的表被称为主表, 具有次此关键字的表被称为主表的从表
二: 外键的作用
- 外键用于保持数据一致性, 完整性
- 主要目的是控制存储在外键表中的数据
三: 主键的设计原则
- 主键应当是对用户无意义的
- 主键应该是单列的,以提高链接和筛选操作的效率
- 复合键的使用通常出于两点考虑
- 主键应当具有意义
- 这被认为破坏了数据库提供了方便
- 在描述多对多关系的链接表中可与使用两个外部键作为主键
- 该表可能成为其他从表的主表,并成为从表主键的一部分,使得之后的从表包含更多的列
- 主键应当具有意义
- 复合键的使用通常出于两点考虑
- 永远不要更新主键
- 主键不应该包含动态变化的数据(时间戳等)
- 主键应当由计算机自动生成
四: 数据库主键选取策略
- 自动增长型
- 手动增长型
- 使用UniqueIdentifier SQL Server提供一个UniqueIdentifier数据类型(16字节),并提供一个生成函数NEWID(),生成一个唯一的UniqueIdentifier
- 使用COMB类型
- 保留UniqueIdentifier的前10字节,后6字节表示生成时间
五: 外键
- 外键的主要作用是用来控制数据库中数据的完整性,党对一个数据进行操作的时候,和他有关联的一个表或者多个表的数据能够同时发生改变

