非规范化的关系模式
可能存在问题:数据冗余,更新异常(修改操作一致性的问题)、插入异常、删除异常
若没有达到第3范式 都会存在以上问题
函数依赖:
X决定Y x->y y依赖x
求候选键
1 将关系模式的函数依赖关系用“有向图”的方式表示
2找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键
3若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一些中间节点(既有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能所遍历所有结点,集合为候选键
函数依赖
部分函数依赖:依赖候选键的一部分
传递依赖
A->b->C A ->C
规范化理论公理
A 1自反律:大集合决定小集合
A2增广律:附加上的集合也成立
A3传递律:x->y y->z x->z
1合并规则 x->y x->z 有x->yz
A2 A3
2伪传递规则:x->y wy->z 有xw->z
3分解规则 x->y 及z属于y 有x->z (a1,a3)
范式判断(主属性:出现在候选键中的属性都是主属性)
范式解决:插入异常、删除异常、数据冗余 (哪里不符合拆哪里)
1NF:属性值都是不可分的原子值
2NF:消除非主属性对候选键的部分依赖
3NF:消除非主属性对候选键的传递依赖 A->B(非主属性) B->C(非主属性) A->C (不可以)
BCNF:消除主属性对候选键的部分和传递依赖(当且仅当每个依赖的决定因素必定包含R的某个候选码(全含))