范式
满足最低要求的称为第一范式 每个属性不可拆分
2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖。接下来对这句话中涉及到的四个概念——“函数依赖”、“码”、“非主属性”、与**“部分函数依赖”**进行一下解释。
在一张表中,若 X → Y,且对于 X 的任何一个真子集(假如属性组 X 包含超过一个属性的话),X ’ → Y 不成立,那么我们称 Y 对于 X 完全函数依赖,记作 X FY。(那个F应该写在箭头的正上方,没办法打出来……,正确的写法如图1)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V0R6LOwV-1647226541265)(D:\document\typora文件\SQL.assets\12513de20079d12b99d946072df7311a_1440w.jpg)]
部分函数依赖
假如 Y 函数依赖于 X,但同时 Y 并不完全函数依赖于 X,那么我们就称 Y 部分函数依赖于 X,记作 X P→ Y,如图2。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3cINb0s0-1647226541267)(D:\document\typora文件\SQL.assets\10b52b39b18b8ea9fb17b46babf4d20f_1440w.jpg)]
根据2NF的定义,判断的依据实际上就是看数据表中是否存在非主属性对于码的部分函数依赖。若存在,则数据表最高只符合1NF的要求,若不存在,则符合2NF的要求。判断的方法是:
第一步:找出数据表中所有的码。
第二步:根据第一步所得到的码,找出所有的主属性。
第三步:数据表中,除去所有的主属性,剩下的就都是非主属性了。
第四步:查看是否存在非主属性对码的部分函数依赖。存在就是第一范式
第三范式(3NF) 3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。也就是说, 如果存在非主属性对于码的传递函数依赖,则不符合3NF的要求。
BCNF
- 所有非主属性对每一个码都是完全函数依赖
- 所有主属性对每一个不包含它的码也是完全函数依赖
- 没有任何属性完全函数依赖于非码的任何一组属性
1万+

被折叠的 条评论
为什么被折叠?



