1. 程式人生 > >軟考—關係資料庫的規範化

軟考—關係資料庫的規範化

函式依賴

  1. 函式依賴:設R(U)R(U)是屬性集UU上的關係模式,XYX、YUU的子集。若對R(U)R(U)的任何一個可能的關係rrrr中不可能存在兩個元組在XX上的屬性值相等,而在YY上的屬性值不等,則稱XX函式決定YYYY函式依賴於XX,記作XYX→Y
  2. 非平凡的函式依賴:如果XYX→Y,但YXY⊈X,則稱XYX→Y是非平凡的函式依賴。
  3. 完全函式依賴:在R(U)R(U)中,如果XYX→Y,並且對於XX的任何一個真子集XX'都有XX'不能決定Y
    Y
    ,則稱YYXX完全函式依賴,記作XfYX \xrightarrow{f}{Y}
  4. 部分函式依賴:如果XYX→Y,但YY不完全函式依賴於XX,則稱YYXX部分函式依賴,記作XPYX \xrightarrow{P}{Y}
  5. 傳遞依賴:在R(U)R(U)中,如果XYX→YYXY⊈XYZY→Z,則稱ZZXX傳遞依賴。
  6. 碼:設KKR(U)R(U)中屬性的組合,若KUK→U,且對於KK的任何一個真子集KK'不能決定UU,則KKRR的候選碼。若有多個候選碼,則選一個座位主碼。候選碼通常也稱為候選關鍵字。
  7. 主屬性和非主屬性:包含在任一個候選碼中的屬性稱為主屬性,否則則是非主屬性。
  8. 外碼:若R(U)R(U)中的屬性或者屬性組XXRR到的碼,但XX是另一個關係的碼。,則稱XX為外碼。

規範化

關係資料庫設計的方法之一就是設計滿足適當正規化的模式,通常可以通過判斷分解後的模式達到幾正規化來評價模式規範化的程度。

  1. 1NF1NF(第一正規化) 定義:若關係模式RR的每一個分量是不可再分的資料項,則關係模式RR屬於第一正規化。

例如,供應者和它所提供的零件資訊,關係模式FIRST和函式依賴集FF如下: FIRST(Sno,Sname,Status,City,Pno,Qt

y)FIRST(Sno, Sname, Status, City, Pno, Qty) F=SnoSname,SnoStatus,StatusCity,(Sno,Pno)QtyF={Sno\rightarrow{Sname}, Sno\rightarrow{Status}, Status \rightarrow{City}, (Sno, Pno) \rightarrow{Qty}}

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(第二正規化) 定義:若關係模式R1NFR∈1NF,且每一個非主屬性完全依賴於碼,則關係模式R2NFR∈2NF

換句話說,當1NF1NF消除了非主屬性對碼的部分函式依賴,則稱為2NF2NF

例如,FIRST關係中的碼是Sno,PnoSno, Pno,而SnoStatusSno \rightarrow{Status},因此非主屬性StatusStatus部分函式依賴於碼,故非2NF的。

若此時將FIRST關係分解為FIRST1(Sno,Sname,Status,City)FIRST1(Sno, Sname, Status, City)FIRST2(Sno,Pno,Qty)FIRST2(Sno, Pno, Qty)。其中FIRST2NF,FIRST22NFFIRST∈2NF, FIRST2∈2NF

  1. 3NF(第三正規化) 定義:若關係模式R(U,F)R(U,F)中不存在這樣的碼XX,屬性值YY及非主屬性Z(ZY)Z(Z⊈Y)使得XYX \rightarrow{Y}YZY \rightarrow{Z}成立,則關係模式R3NFR∈3NF

即當2NF消除了非主屬性對碼的傳遞函式依賴,則稱為3NF