数据库原理第四节
关系数据模型
关系的完整性约束
数据库的数据完整性是指数据库中数据的正确性
,相容性
,一致性
分类:
- 实体完整性约束:主码的组成不能为空,主属性不能是空值NULL
- 参照完整性约束:要么外码等于主码某个元组的主码值,要么为空值
- 用户定义完整性约束
- 域完整性约束
执行插入操作检查:
- 检查实体完整性约束
- 插入外码表的时候检查参照完整性约束
- 检查用户定义完整性约束
执行删除操作:
一般只需要对被参照关系检查参照完整性约束
关系数据库的规范化理论
关系模式中可能存在的冗余和异常问题
- 数据冗余
- 更新异常
- 插入异常
- 删除异常
函数依赖与关键字
设R为任一给定关系,如果对于R中属性X的每一个值,R中的属性Y只有唯一值与之对应,则称X函数决定Y或称Y函数依赖于X,记作X->Y.其中X称为决定因素
分类:
- 完全函数依赖
- 部分函数依赖
- 传递函数依赖
完全函数依赖:
设R为任一给定关系,X,Y为其属性集,若X->Y,且对X中的任何真子集X’,都有X’不依赖Y,则称Y完全函数依赖于X
部分函数依赖:
设R为任一给定关系,X,Y为其属性集,若X->Y,且X中存在一个真子集X’,都有X’->Y,则称Y部分依赖于X
传递函数依赖:
设R为任一给定关系,X,Y,Z为其不同属性子集,若X->Y,Y不决定X,Y->Z,则有X->Z,称为Z传递函数依赖于X。
关键字的定义:
设R为任一给定关系,U为其所含的全部属性集合,X为U的子集,若有完全函数依赖X->U,则X为R的一个候选关键字。
范式与关系规范化过程
一个低一级范式的关系模式通过模式分解
可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化
第一范式1NF:
设R为任一给定关系,如果R中每个列与行的交点处的取值都是不可再分的基本元素,则R为第一范式
第二范式2NF:
设R为任一给定关系,若R为1NF
且其所有非主属性都完全函数依赖于候选关键字,则R为第二范式。
第三范式3NF:
设R为任一给定关系,若R为2NF
且其每一个非主属性都不传递函数依赖于候选关键字,则R为第三范式。
第三范式的改进形式BCNF:
设R为任意给定关系,X,Y为其属性集,F为其函数依赖集,若R为3NF
且其F中所有函数依赖X->Y(Y不属于X)中的X比包含候选关键字,则R为BCNF
有部分函数依赖就是1NF,没有就是2NF,没有传递函数依赖就是3NF
1NF->2NF
找到候选关键字,看其余的属性是否完全函数依赖候选关键字
是的,与候选关键字一同抄下来形成一个表格
不是的,抄下来,形成第二个表格,并且将候选关键字里能够唯一决定表格2的属性组抄在第一列
2NF->3NF
找到表格中的传递函数依赖关系的三个属性组,设为X,Y,Z
将这三个属性组拆成两个表格
第一个表格为X,Y
第二个表格为Y,Z
3NF->BCNF
列出表格中的所有函数依赖关系
每个关系拆出一个表格