关系范式之我理解

来源:互联网 发布:php xml 转json 编辑:程序博客网 时间:2024/05/26 02:21

关系范式:规范化的关系模式。
          不同的规范化程度,产生不同的范式。
规范化:一个低一级的范式,经过模式分解转换成若干高一级的关系模式集合,这一过程叫做关系模式的规范化。

一、第一范式(1 NF)—First Normal Form:

在关系模式R的每一个具体关系r中,如果每个属性值都是不可再分的最小数据单位,则称R是第一范式的关系。记为R∈l NF。
不属于1NF的关系称为非规范化关系。必须转化成规范化的关系。

即不要把不相关的东西放到一个表里面。

如:
SC(学号,课程号,成绩,学分);SC∈1 NF
组合关键字:(学号,课程号)
函数依赖:
(学号,课程号) ----> 成绩
               课程号 ----> 学分
满足1NF仍可能出现问题:

1、数据冗余:学分重复存储次数=选修该科的学生人数
2、更新异常:调整学分时容易发生数据不一致。
3、插入异常:下期的新开课不能插入。
4、删除异常:老生毕业而新生未选某课时,会删除该课程。

产生原因:

(学号,课程号)  ---->   学分

二、第二范式(2 NF)

定义:设R∈1NF,若R(U)中的所有非主属性都完全函数依赖于任一候选关键字,则称R属于第二范式。

将关系SC规范成 2 NF
     ——消除部分函数依赖,
SC(学号,课程号)
   SC1(学号,课程号,成绩);
     C1(课程号,学分)
  则SC1∈2 NF;C1∈2 NF;
消除了存储异常。


记作:R∈2 NF。

再如:
S1(学号,姓名,所在系,系主任)
主关键字:学号(单属性)
函数依赖:学号函数决定各个属性,S1∈2 NF。

存在问题:存储异常
造成原因:存在传递依赖
            学号         所在系;
          所在系         学号 ;
          所在系       系主任;
            学号         系主任

三、第三范式(3 NF)

定义:若R∈2 NF,且R的任一非主属性都不传递依赖于任何候选关键字,则称R为第三范式的关系模式,记作
   R∈3 NF。

将S1规范成3 NF

S1(学号,姓名,所在系,系主任)            S2(学号,姓名,所在系); D1(所在系,系主任)
则S2,D1均无部分依赖与传递依赖,所以,S1∈3NF, D1∈
3NF;消除了存储异常。

再如:
WPE(仓库号,配件号,职工号,数量)
语义分析与函数依赖:
(1)一个仓库有多个职工;一个职工仅在一个仓库工作。
   职工号         仓库号

(2)每个仓库里一种型号的配件由专人负责,但一个人可以管理几种配件;
(仓库号,配件号)           职工号
(职工号,配件号)           数量
(3) 同种型号的配件可以分放在多个仓库中,每个仓库可以放多种配件。
(仓库号,配件号)           数量    

候选关键字:
(仓库号,配件号);(职工号,配件号)
主属性:仓库号、配件号、职工号。
非主属性:数量
规范化程度:非主属性直接完全依赖于组合关键字,
             WPE ∈3 NF

存在问题:存储异常

1)数据冗余;
2)插入异常;
3)删除异常;
4)更新异常;

造成原因:

∵职工号          仓库号
  ∴(职工号,配件号)         仓库号
又∵(职工号,配件号)         职工号
        职工号          仓库号
    ∴(职工号,配件号)          仓库号                             (传递依赖)

四、 BC范式

定义:如果关系模式R(U,F)
(F:R(U)中的函数依赖集)的所有属性(包括主属性和非主属性)都不传递依依赖于R的任何候选关键字,那么称关系R是属于BCNF的。记为R∈BC NF。

等价定义:关系模式R,如果每个决定因素都包含关键字,则是BCNF的关系模式。
投影分解WPE成两个关系
EP(职工号,配件号,数量)
EW(职工号,仓库号)
则EP∈BCNF;EW∈BCNF,消除了存储异常

原创粉丝点击