3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
資料庫-正規化   資料來源:http://elearn.bljcchen.twgg.org/home1012/database/db10 正規化(Normalization) 「資料模式」建構所運用的一個技術,其目的是為了降低資料的「重覆性」與避免「更新異常」的情況發生   一般而言,正規化的精神就是: 1.檢少資料庫中重複的欄位資料 2.維持資料庫的整合性 3.提高關聯性資料庫的效能   正規化共可分為6個階段,分別是: 1. 1NF(First Normal Form) 2. 2NF(Second Normal Form) 3. 3NF(Third Normal Form) 4. BCNF(Boyce-Codd Normal Form)  ← 大多數資料庫只需執行到 BCNF就足夠 5. 4NF(Fourth Normal Form) 6. 5NF(Fifth Normal Form)   底下將分階段簡單敘明:   1. 1NF 重點在於將每個欄位中的多筆資料轉換為單一資料 以下表為例: 學號 姓名 性別 課程代碼 課程名稱 學分數 必選修 成績 教師編號 教師姓名 001 A001 男 X001X002 程式語言網頁設計 33 必選 8872 T001T002 Te001Te002 002 A002 男 X002X003X005 網頁設計計概網路教學 323 選必選 788176 T002T005T007 Te002Te005Te007 可以發現,每筆資料都含有2筆以上的結果,這就違反了一階正規化。 經過一階正規化後,上表會變成 學號 姓名 性別 課程代碼 課程名稱 學分數 必選修 成績 教師編號 教師姓名 001 A001 男 X001 程式語言 3 必 88 T001 Te001 001 A001 男 X002 網頁設計 3 選 72 T002 Te002 002 A002 男 X002 網頁設計 3 選 78 T002 Te002 002 A002 男 X003 計概 2 必 81 T005 Te005 002 A002 男 X005 網路教學 3 選 76 T007 Te007 好,至此第一階正規化就完成了。 所以,一階正規化的規則如下: (1)每筆資料的每個欄位(field)只能有一筆資料。 (2)沒有任何兩筆或兩筆以上資料是完全重複。 (3)資料表中有「主鍵」,而且其他所有欄位都依附於主鍵。   以上表為例,此時的主鍵是由(學號+課程代碼)組合而成。   2. 2NF 完成1NF後,發現資料表中有許多重複性的資料,不但浪費儲存空間,而且會造成資料處理時的異常狀況。所以,必須進行2NF來處理上述問題。 二階正規化的規則如下: (1)符合1NF。 (2)每一個非鍵值欄位必須「完全相依」於主鍵。   備註: 相對於完全相依的稱為「部分相依」,部分相依的發生狀況通常在於主鍵由多個欄位組成時發生,也就是說某些資料只與主鍵中的部分欄位有關,而與另一部份的欄位無關。 以上表為例,課程的必選修與與課程代碼有關,而與學號無關。   (3)分割資料表。   備註:就是將部分相依的欄位分割,另外組成新的資料表。   由表 學號 姓名 性別 課程代碼 課程名稱 學分數 必選修 成績 教師編號 教師姓名 001 A001 男 X001 程式語言 3 必 88 T001 Te001 001 A001 男 X002 網頁設計 3 選 72 T002 Te002 002 A002 男 X002 網頁設計 3 選 78 T002 Te002 002 A002 男 X003 計概 2 必 81 T005 Te005 002 A002 男 X005 網路教學 3 選 76 T007 Te007 主鍵是由(學號+課程代碼)組成,但是, 1.姓名和性別只與學號有關, 2.課程名稱(包含學分數、必選修、教師編號、教師姓名)與課程代碼有關。 所以,必須將部分相依的欄位切割成為另張表格。 因此,上表將變成下列表格: 表一:學生資料表(學號、姓名、性別),其中學號為主鍵 學號 姓名 性別 001 A001 男 002 A002 男 表二:成績資料表(學號、課程代碼、成績) ,其中(學號+課程代碼)為主鍵 學號 課程代碼 成績 001 X001 88 001 X002 72 002 X002 78 002 X003 81 002 X005 76 表三:課程資料表(課程代碼、課程名稱、學分數、必選修、教師編號、教師姓名),其中,課程代碼為主鍵 課程代碼 課程名稱 學分數 必選修 教師編號 教師姓名 X001 程式語言 3 必 T001 Te001 X002 網頁設計 3 選 T002 Te002 X003 計概 2 必 T005 Te005 X005 網路教學 3 選 T007 Te007 此時可以發現,除了表三外,表一及表二已經無法再進行資料切割,因此表一及表二都已經符合2NF、3NF及BCNF。   3.3NF 三階正規化的規則如下: (1)符合2NF。 (2)各欄位與主鍵之間沒有遞移相依的關係。   備註: 遞移相依 ─ 資料表中有「與主鍵無關」的相依性   (3)分割資料表。 以上表三為例 表三:課程資料表(課程代碼、課程名稱、學分數、必選修、教師編號、教師姓名),其中,課程代碼為主鍵 課程代碼 課程名稱 學分數 必選修 教師編號 教師姓名 X001 程式語言 3 必 T001 Te001 X002 網頁設計 3 選 T002 Te002 X003 計概 2 必 T005 Te005 X005 網路教學 3 選 T007 Te007 可以發現,教師姓名只與教師編號有關,而與課程代碼無關。也就是說,教師姓名直接相關於教師編號,且間接相關於課程代碼。   因此,必須將表三分割成兩個資料表,並利用外部鍵(Foreign Key,FK)來連接兩個資料表。 此時表三將變成 表三-1:課程資料表(課程代碼、課程名稱、學分數、必選修、教師編號*),其中,課程代碼為主鍵 課程代碼 課程名稱 學分數 必選修 教師編號* X001 程式語言 3 必 T001 X002 網頁設計 3 選 T002 X003 計概 2 必 T005 X005 網路教學 3 選 T007 表四;教師資料表(教師編號、教師姓名),其中,教師編號為主鍵 教師編號 教師姓名 T001 Te001 T002 Te002 T005 Te005 T007 Te007 至此,從原始資料表到最後的四張表格(表一、表二、表三-1及表四),就算是已經完成1NF到3NF的動作。   4.BCNF(Boyce-Codd NF) 使用時機:如果資料表的主鍵是由多個欄位組成的,則有可能再執行BCNF。 BCNF規則: (1)符合3NF。 (2)主鍵中的欄位不可相依於其他欄位。 以表二為例, 表二:成績資料表(學號、課程代碼、成績) ,其中(學號+課程代碼)為主鍵 學號 課程代碼 成績 001 X001 88 001 X002 72 002 X002 78 002 X003 81 002 X005 76 成績相依於(學號+課程代碼),但是學號沒有相依於成績,課程代碼也沒有相依於成績,表示表二有符合BCNF的形式。      

本文由jashliaoeuwordpress提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦