1 函数依赖
记 A->B 表示 A 函数决定 B,也可以说 B 函数依赖于 A。
1.1 键码
如果 {A1,A2,… ,An} 是关系的一个或多个属性的集合,该集合函数决定了关系的其它所有属性并且是最小的,那么该集合就称为键码。
1.2 完全函数依赖
对于 A->B,如果能找到 A 的真子集 A’,使得 A’-> B,那么 A->B 就是部分函数依赖,否则就是完全函数依赖。
1.3 传递函数依赖
对于 A->B,B->C,则 A->C 是一个传递函数依赖。
2 范式
在范式化的数据库中,每个事实数据会出现并且只出现一次;相反,在反范式化的数据库中,信息是冗余的,可能会存储在多个地方。
- 第一范式 (1NF):属性不可分。
- 第二范式 (2NF):1NF + 表必须有一个主键 + 非主键必须完全依赖于主键。
- 第三范式 (3NF):2NF + 非主键列必须直接依赖于主键,不能存在传递依赖。
3 异常
不符合范式的关系,会产生很多异常,主要有以下四种异常:
- 冗余数据
- 修改异常:修改了一个记录中的信息,但是另一个记录中相同的信息却没有被修改。
- 删除异常:删除一个信息,也会丢失其它信息。
- 插入异常:想要插入一个的信息,如果此信息依赖的其他信息还没插入,就无法此信息。
4 ER 图
Entity-Relationship,有三个组成部分:实体、属性、联系。
用来进行关系型数据库系统的概念设计。
4.1 表示实体关系
- 一对多:单箭头线段指向多;
- 一对一:双箭头线段;
- 多对多:不带箭头的线段。
4.2 表示出现多次的关系
一个实体在联系出现几次,就要用几条线连接。
4.3 联系的多向性
虽然老师可以开设多门课,并且可以教授多名学生,但是对于特定的学生和课程,只有一个老师教授,这就构成了一个三元联系。
一般只使用二元联系,可以把多元联系转换为二元联系。
4.4 表示子类
用一个三角形和两条线来连接类和子类,与子类有关的属性和联系都连到子类上,而与父类和子类都有关的连到父类上。