软考—关系数据库的规范化

函数依赖

  1. 函数依赖:设 R ( U ) R(U) 是属性集 U U 上的关系模式, X Y X、Y U U 的子集。若对 R ( U ) R(U) 的任何一个可能的关系 r r r r 中不可能存在两个元组在 X X 上的属性值相等,而在 Y Y 上的属性值不等,则称 X X 函数决定 Y Y Y Y 函数依赖于 X X ,记做 X Y X→Y
  2. 非平凡的函数依赖:若是 X Y X→Y ,但 Y X Y⊈X ,则称 X Y X→Y 是非平凡的函数依赖。
  3. 彻底函数依赖:在 R ( U ) R(U) 中,若是 X Y X→Y ,而且对于 X X 的任何一个真子集 X X' 都有 X X' 不能决定 Y Y ,则称 Y Y X X 彻底函数依赖,记做 X f Y X \xrightarrow{f}{Y}
  4. 部分函数依赖:若是 X Y X→Y ,但 Y Y 不彻底函数依赖于 X X ,则称 Y Y X X 部分函数依赖,记做 X P Y X \xrightarrow{P}{Y}
  5. 传递依赖:在 R ( U ) R(U) 中,若是 X Y X→Y Y X Y⊈X Y Z Y→Z ,则称 Z Z X X 传递依赖。
  6. 码:设 K K R ( U ) R(U) 中属性的组合,若 K U K→U ,且对于 K K 的任何一个真子集 K K' 不能决定 U U ,则 K K R R 的候选码。如有多个候选码,则选一个座位主码。候选码一般也称为候选关键字。
  7. 主属性和非主属性:包含在任一个候选码中的属性称为主属性,不然则是非主属性。
  8. 外码:若 R ( U ) R(U) 中的属性或者属性组 X X R R 到的码,但 X X 是另外一个关系的码。,则称 X X 为外码。

规范化

关系数据库设计的方法之一就是设计知足适当范式的模式,一般能够经过判断分解后的模式达到几范式来评价模式规范化的程度。html

  1. 1 N F 1NF (第一范式)
    定义:若关系模式 R R 的每个份量是不可再分的数据项,则关系模式 R R 属于第一范式。

例如,供应者和它所提供的零件信息,关系模式FIRST和函数依赖集 F F 以下:
F I R S T ( S n o , S n a m e , S t a t u s , C i t y , P n o , Q t y ) FIRST(Sno, Sname, Status, City, Pno, Qty)
F = S n o S n a m e , S n o S t a t u s , S t a t u s C i t y , ( S n o , P n o ) Q t y F={Sno\rightarrow{Sname}, Sno\rightarrow{Status}, Status \rightarrow{City}, (Sno, Pno) \rightarrow{Qty}} web

Sno Sname Status City Pno Qty
S1 精益 20 天津 P1 200
S1 精益 20 天津 P2 300
S1 精益 20 天津 P3 480
S2 盛锡 10 天津 P2 168
S2 盛锡 10 北京 P3 500
S3 东方红 30 北京 P1 300
S3 东方红 30 北京 P2 280
S4 泰达 40 上海 P2 460

从表中可看出1NF存在4个问题:数据库

  1. 冗余度大。
  2. 引发修改操做的不一致性。
  3. 插入异常。
  4. 删除异常。

  1. 2NF(第二范式)
    定义:若关系模式 R 1 N F R∈1NF ,且每个非主属性彻底依赖于码,则关系模式 R 2 N F R∈2NF

换句话说,当 1 N F 1NF 消除了非主属性对码的部分函数依赖,则称为 2 N F 2NF app

例如,FIRST关系中的码是 S n o , P n o Sno, Pno ,而 S n o S t a t u s Sno \rightarrow{Status} ,所以非主属性 S t a t u s Status 部分函数依赖于码,故非2NF的。数据库设计

若此时将FIRST关系分解为 F I R S T 1 ( S n o , S n a m e , S t a t u s , C i t y ) FIRST1(Sno, Sname, Status, City) F I R S T 2 ( S n o , P n o , Q t y ) FIRST2(Sno, Pno, Qty)。其中 F I R S T 2 N F , F I R S T 2 2 N F FIRST∈2NF, FIRST2∈2NF ide


  1. 3NF(第三范式)
    定义:若关系模式 R ( U , F ) R(U,F) 中不存在这样的码 X X ,属性值 Y Y 及非主属性 Z ( Z Y ) Z(Z⊈Y) 使得 X Y X \rightarrow{Y} Y Z Y \rightarrow{Z} 成立,则关系模式 R 3 N F R∈3NF

即当2NF消除了非主属性对码的传递函数依赖,则称为3NFsvg