一个规范的关系模式:
- 尽可能减少冗余(重复数据)
- 没有插入异常(插入不了,没满足复合主键的要求)
- 删除异常(把相同的内容都删除了)
- 修改异常(修改不完全有剩余)
数据依赖包括函数依赖和多值依赖
关系模式中的各关系属性之间相互依赖,相互制约的联系称为数据依赖。
★函数依赖 FD (Functional Dependency)
是关系模式中属性之间的一种逻辑依赖关系。
(sn,age,dept)函数依赖于sno
U={sno,sn,age,dept,mn,cno,score}
F={sno→sn,sno→age,sno→dept,(sno,cno)→score}
设关系模式R(U,F) U是属性全集,F是由U上函数依赖所构成的集合。X,Y是U上的子集。
对于R(U)的任意一个可能的关系r,对于X的每一各值,Y都有唯一的具体值与之对应,称X决定Y 记作:X→Y
当Y不依赖于X时 记作:X\→ Y
当X→Y且Y→X时,记作X↔Y
- 平凡函数依赖:Y是X的子集
- 非平凡函数依赖:Y不是X的子集,不特殊声明都是非平凡的函数依赖,和真正的完整性约束条件相关
函数依赖于属性之间的联系类型有关:
- 1:1 X↔Y
- M:1 X→ Y
- N:M 无依赖
Armstrong公理
- 自反律 A→A
- 增广律 X→Y 则 XZ→YZ
- 传递律 X→Y,Y→Z,则X→Z
Armstrong公理推论
- 合并律 X→Y,X→Z,则X→YZ
- 伪传递律 X→Y,WY→Z,则XW→Z
- 分解律 X→YZ,则X→Y,X→Z
- 复合律 X→Y,W→Z 则XW→YZ
属性集的闭包
定义:由一个属性直接或者间接的推导出所有属性的集合
属性集U为XYZW,函数依赖集为{X→Y,Y→Z,W→Y}
X+=XYZ , (XW)+=XYZW , (YW)+=YZW
候选码
定义:能决定所有属性
对于给定的关系模式R(A1,A2,A3,.....An)和函数依赖集F
- L类:仅出现在F中的函数依赖左边的左部属性 必
- R类:仅出现在F的函数依赖的右边右部的属性
- N类:在F的函数依赖左右俩边都没出现的属性 必
- LR类:在左右俩边都出现的属性 可能
设有关系模式R(A,B,C,D,E,P) 与它的函数依赖集F={A→D,E→D,D→B,BC→D,DC→A}求R的所有候选码
CEP是R的唯一候选码
关系模式的范式
主属性:所有候选码
非主属性:不存在于候选码
1NF
↓ 消除非主属性对主码的部分函数依赖
2NF
↓ 消除非主属性对主码的传递函数依赖
3NF (没有非主属性)
↓ 消除主属性对主码的部分和传递函数依赖
BCNF
↓ 消除非平凡且非函数依赖的多值依赖
4NF
任一非主属性的候选码都不存在传递依赖
一般3NF已经是一个好的关系模式了
规范化的基本原则:
遵循概念单一化“一事一地”的原则,即一个关系描述一个实体或者实体间的联系。
规范化的投影分解方法不是唯一的,对于3NF的规范化,分解既要具有无损连接性,又要具有函数依赖保护性。