关于数据库设计的第一、二、三范式

关于数据库设计的第一、二、三范式

第一范式

符合1NF的关系中的每个属性都不可再分

第二范式

2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖

关系中的某个属性或者某几个属性的组合,用于区分每个元组(可以把“元组”理解为一张表中的每条记录,也就是每一行)

函数依赖

若在一张表中,在属性(或属性组)X的值确定的情况下,必定能确定属性Y的值,那么就可以说Y函数依赖于X,写作 X → Y

  • 完全函数依赖

    在一张表中,若 X → Y,且对于 X 的任何一个真子集(假如属性组 X 包含超过一个属性的话),X ' → Y 不成立,那么我们称 Y 对于 X 完全函数依赖,记作 X F→ Y
        
  • 部分函数依赖

    
    假如 Y 函数依赖于 X,但同时 Y 并不完全函数依赖于 X,那么我们就称 Y 部分函数依赖于 X,记作 X P→ Y
        
  • 传递函数依赖

    
    假如 Z 函数依赖于 Y,且 Y 函数依赖于 X (严格来说还有一个X 不包含于Y,且 Y 不函数依赖于Z的前提条件),那么我们就称 Z 传递函数依赖于 X ,记作 X T→ Z
        
        

非主属性

包含在任何一个码中的属性称为主属性,非主属性相反

综上所述,检测是否符合第二范式的步骤为:

第一步:找出数据表中所有的码。

第二步:根据第一步所得到的码,找出所有的主属性。

第三步:数据表中,除去所有的主属性,剩下的就都是非主属性了。

第四步:查看是否存在非主属性对码的部分函数依赖。

第三范式

3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖

BCNF范式

在3NF的基础上消除主属性对于码的部分与传递函数依赖

    原文作者:flyer_dev
    原文地址: https://segmentfault.com/a/1190000007929066
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞