關係範式

範式也叫關係範式,因為範式存在於關係中。範式是關係模式滿足不同程度的規範化要求的標準。滿足最低程度要求的範式屬於第一範式,簡稱1NF;在第一範式中進一步滿足一些要求的關係屬於第二範式,簡稱2NF,依次類推,還有3NF、BCNF、4NF、5NF,這些都是關係範式。對關係模式的屬性間的函式依賴加以不同的限制就形成了不同的範式。這些範式是遞進的,即如果是一個關係是1NF的,它比不是1NF的關係要好;同樣,2NF的關係比1NF的關係要好等等,範式越高、規範化程度越高,關係模式就越好。

基本介紹

  • 中文名關係範式
  • 出現學科:資料庫
  • 分類:第一範式,第二範式等
  • 存在:關係中
簡介,第一範式,第二範式,第三範式,

簡介

關係資料庫中的關係要滿足一定的要求。若關係滿足不同程度的要求,就稱它屬於不同的範式(Normal Form)。

第一範式

定義 設 R 是一個關係模式,如果 R 中的每一個屬性 A 的值域中的每個值都是不可分解的,則稱 R 是屬於第一範式的,記作 R ∈ 1NF。
例如:在關係 SA(姓名,工資)中,屬性“工資”還可再分為基本工資,獎金還有補貼 3 個數據項,這違背了第一範式中元組的每個屬性不可再分的原則,所以它不滿足第一範式。
將非第一範式的關係轉換為第一範式的關係非常簡單,只需要將所有數據項都分解成不可再分的最小數據項就可以了。例如上面的關係改為 SA(姓名,基本工資,獎金,補貼)即可。

第二範式

定義如果關係 R ∈ 1NF,並且 R 中每一個非主屬性完全函式依賴於任一個候選碼,則 R ∈ 2NF。
從定義可以看出,若某個 1NF 的關係的主碼只由一個列組成,那么這個關係就是 2NF 關係。但是,如果主碼是由多個屬性列共同組成的複合主碼,並且存在非主屬性對屬性的部分函式依賴,則這個關係不是 2NF 關係。
例如:在關係 SB(學號,姓名,系名,系主任,課號,成績)中,、
非主屬性“姓名”僅函式依賴於“學號”,也就是“姓名”部分函式依賴於主碼(學號,課號)而不是完全依賴;
非主屬性“系名”僅函式依賴於“學號”,也就是“系名”部分函式依賴於主碼(學號,課號)而不是完全依賴;
非主屬性“系主任”僅函式依賴於“學號”,也就是“系主任”部分函式依賴於主碼(學號,課號)而不是完全依賴。
所以 SB 不滿足第二範式,不是 2NF 關係。可以用模式分解的方法將非 2NF 的關係模式分解為多個 2NF 的關係模式。去掉部分函式依賴關係的分解過程如下:
1. 用組成主碼的屬性集合的每一個子集作為主碼構成一個表。
2. 對於每個表,將依賴於此主碼的屬性放置到此表中。
例如:將 SB 分解為兩個關係模式
SC(學號,課號,成績),主碼為(學號,課號)
SD(學號,姓名,系名,系主任),主碼為 學號。

第三範式

定義 如果關係 R ∈ 2NF,並且 R 中每一個非主屬性對任何候選碼都不存在傳遞函式依賴,則 R ∈ 3NF 。
從定義中可以看出,如果存在非主屬性對主碼的傳遞依賴,則相應的關係模式就不是 3NF。
接著上面的例子,關係模式 SC 和 SD 均是 2NF 的,但在關係 SD(學號,姓名,系名,系主任)中,存在如下函式依賴:
學號 → 系名
系名 → 系主任
系名 -\→ 學號
那么,存在著一個傳遞函式依賴“學號 → 系主任”成立。
從上面的分析可以知道,因為在 SD 中存在傳遞函式依賴,所以 SD 不滿足 3NF。因此需要對其進行下一步的分解。去掉傳遞函式依賴的分解過程如下:
1. 對於不是候選碼的每個決定因子,從關係模式中刪除依賴於該決定因子的屬性。
2. 新建一個關係模式,新的關係模式中應包含在原表中所有依賴於該決定因子的屬性。
3. 將決定因子作為新關係模式的主碼。
例如:將 SD 分解為
SE(學號,姓名,系名)
SF(系名,系主任)
這兩個關係模式不再存在傳遞依賴,它們均為第三範式。在通常的資料庫設計中,一般要求要達到 3NF。3NF 是一個實際可用的關係模式應滿足的最低範式。

相關詞條

熱門詞條

聯絡我們