数据库(笔记)——关系模式的范式

范式的是作为评判一个数据表的创建是否符号要求的标准

第一范式

定义:关系模式R中的所有属性都是不可再分的,则R属于第一范式,记作
R∈1NF,简称1NF
所谓的属性可再分,如,假设有个属性叫身材,而身材可以分为身高、体重等属性

  • 缺点:仅仅是属于第一范式的关系模式,在插入、删除、更新数据的时候会存在异常的情况,并且存在大量数据冗余

第二范式

若R∈1NF,且每个非主属性都是完全依赖于R的主关系键(就是主键),则称R属于第二范式,记作R∈2NF

  • 那么第一范式要转化为第二范式,就需要将不分函数依赖去掉,如下是处于第一范式的关系模式
    1NF
    转化为如下模式,就是第二范式了2NF
  • 第二范式的缺点是,由上图也能看到,存在着传递函数依赖,由此也会带来数据操纵的异常,同时会有较多的数据冗余

第三范式

当R∈2NF时,若每个非主属性都不传递依赖于R的主键,则R属于第三范式,记作R∈3NF

在第三范式下,数据冗余大幅度降低,并且几乎不存在数据操纵异常

下面用一个例子来走一遍几个范式递升过程
关系模式R(Sno,Sname,City,State,Pno,Pname,Color,Weight,QTY)

  • 分别是:供应商编号,供应商名,来自城市,国家,零件编号,零件名,零件颜色,零件重量,零件数目

函数依赖:Sno→Sname,Sno→State,Sno→City,City→State,Pno→Pname,
Pno→Color,Pno→Weight,(Sno,Pno)→QTY
主码:(Sno,Pno)
默认加粗为主键

  1. 首先,该关系模式已经是一个第一范式了,观察发现,存在部分函数依赖,因此,先转化为第二范式,得到如下三个关系模式
    R1(Sno,Sname,State,City)
    R2(Pno,Pname,Color,Weight)
    R3(Sno,Pno,QTY)
  2. 在新的关系模式R1中,有Sno→City,City→State,从而State是传递函数依赖于主键Sno的,它还不符合第三范式,应转化为如下
    R1’(Sno,Sname,City)
    R1’’(City,State)
  3. 那么最后得到的几个关系模式都能够满足第三范式
    R1’(Sno,Sname,City)
    R1’’(City,State)
    R2(Pno,Pname,Color,Weight)
    R3(Sno,Pno,QTY)

BC范式

若R∈1NF,且所有的函数依赖X→Y(Y∉X),X都包含有R的一个候选键,则称R属于BC范式,记作R∈BCNF

  • 若R∈BCNF,则一定有R∈3NF,反之不一定成立

总结

在这里插入图片描述