背景
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。
在实际开发中最为常见的设计范式有三个:
第一范式(确保每列保持原子性)
第二范式(确保表中的每列都和主键相关)
第三范式(确保每列都和主键列直接相关,而不是间接相关)
函数依赖
函数依赖关系:
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称"X函数确定Y"或"Y函数依赖于X",记作X -> Y。
几个概念:
函数依赖
平凡函数依赖和非平凡函数依赖。
完全函数依赖和部分函数依赖
传递函数依赖
码
定义:
设K为R<U,F>中的属性或属性组合。若k ->(F) U,则K称为R的一个候选码(Candidate Key)。
如果U部分函数依赖于K,即K ->(P) U,则K称为超码(Surpkey)。候选码是最小的超码,即K的任意一个真子集都不是候选码。
若关系模式R有多个候选码,则选定其中的一个作为主码(Primary key)。
候选码的属性 就是 主属性
范式
2NF
3NF
BCNF
多值依赖
4NF
规范化小结