网站大量收购独家精品文档,联系QQ:2885784924

资料表正规化.ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
资料表正规化

第 12 章 資料表正規化 本章提要 實體 – 關係圖與正規化的關係 欄位相依 第一階正規化 (1NF) 第二階正規化 (2NF) 第三階正規化 (3NF) Boyce-Codd 正規化 (BCNF) 正規化的另類思考 實體 - 關係圖與正規化的關係 資料表的正規化理論 (Normalization Theory) 其實是一套資料表分割的法則。在資料庫設計之初, 我們可將所有的資料欄位合併成一個大資料表, 然後依尋正規化理論所提出的各個步驟, 逐步分割, 進而形成許多獨立、但彼此關聯的小資料表。 資料庫的正規化 正規化的目的, 則是要避免資料重複或相互矛盾的情形, 並使資料庫在使用時能更有效率、更容易維護。 資料庫的正規化 資料庫的正規化共可分為 1NF (Normal Form)、2NF、3NF、BCNF (Boyce-Codd Normal Form)、4NF、5NF 等多個階段, 不過對於一般資料庫設計來說, 通常只需要執行到 BCNF 即可。 在資料表正規化的過程 (1NF 到 BCNF) 中, 每個階段都是以欄位的相依性, 做為分割資料表的依據之一。 欄位相依 在一個資料表中, 若乙欄位的值必須搭配甲欄位才有意義, 則我們說『乙欄位相依於甲欄位』。舉例來說, 一個員工資料表如下: 欄位相依 員工編號欄為主鍵, 做為唯一辨識該筆記錄的欄位。姓名欄必須要相依於員工編號欄, 對此資料表來說, 姓名欄才有意義。否則同名同姓的陳鐵雄都可對應到該筆記錄;同理可證, 地址欄亦必須相依於員工編號欄, 才有意義。 欄位相依 我們再看看下面的例子: 欄位相依 成績欄本身如果單獨存在是沒有意義的, 因為不曉得是哪一門課、哪個學生的成績。不過, 當成績欄相依於課程編號及學號二欄時, 就可以了解某個學生修某堂課的成績, 這樣的成績資料才有意義。 第一階正規化 (1NF) 正規化的過程是循序漸進的, 資料表必須在滿足第一階正規化的條件之下, 才能進行第二階正規化。也就是說, 第二階正規化必須建立在符合第一階正規化的資料表上, 依此類推。而第一階正規化正是所有正規化的基礎。 第一階正規化 (1NF) 第一階正規化的規則 未符合 1NF 資料表的缺點 建構 1NF 資料表的方法 第一階正規化的規則 如果資料表符合以下條件, 我們就說這個資料表符合第一階正規化的形式(First Normal Form, 簡稱 1NF): 資料表中有主鍵, 而其他所有的欄位都相依於主鍵。 每個欄位中都只有儲存單一值, 例如姓名欄位中不能存放 2 個人的姓名。 資料表中沒有意義相同的多個欄位, 例如姓名1、姓名2...等重複的欄位。 未符合 1NF 資料表的缺點 首先我們來看一個非正規化的資料表: 未符合 1NF 資料表的缺點 『學號』、『學生姓名』及『成績』欄的長度無法確定 由於修課學生的人數可多可少, 所以必須預留很大的空間給這兩個欄位, 如此反而造成儲存空間的浪費。 未符合 1NF 資料表的缺點 降低存取資料的效率 例如要找出『陳鐵雄』的成績, 必須先在學生姓名欄中找出『陳鐵雄』所在的位置, 然後才能從成績欄中擷取出對應的成績資料, 這不僅減緩了資料處理的速度, 而且也增加了程式出錯的機會。 未符合 1NF 資料表的缺點 很明顯的, 此資料表違反了第一階正規化的第 2 個條件。另外, 可能有兩個老師同時都開了『資料庫系統』的課程, 也可能有兩個學生都叫做『王大明』, 因此這個資料表缺少具有唯一性的主鍵, 也違反了第一階正規化的第 1 個條件。 未符合 1NF 資料表的缺點 接下來看一個違反第一階正規化第 3 個條件的例子: 未符合 1NF 資料表的缺點 像學生1、學生2、學生3 這樣一群意義相同的欄位, 其問題同樣是無法確定要有多少個重複的欄位, 而且存取效率低落, 例如要找『陳鐵雄』的成績, 必須在學生群組的每一個欄位中搜尋, 找到後還得要到成績群組中的相同位置欄位中讀取, 相當麻煩。 建構 1NF 資料表的方法 對於不具第一階正規化形式的資料表, 我們可將重複的資料項分別儲存到不同的記錄中, 並加上適當的主鍵: 建構 1NF 資料表的方法 如此一來, 雖然增加了許多記錄, 但每一個欄位的長度及數目都可以固定, 而且我們可用課程編號欄加上學號欄做為主鍵, 那麼在查詢某學生修某堂課的成績時, 就非常方便而快速了。 第二階正規化 (2NF) 在執行符合一階正規化的資料表時, 應該會發覺:我們輸入了許多重複的資料。如此, 不但浪費儲存的空間, 更容易造成新增、刪除或更新資料時的異常狀況。所以, 我們必須進行第二階正規化, 來消除這些問題。 第二階正規化 (2NF) 第二階正規化的規則 建構 2NF 資料表的方法 第二階正規化的規則 如果資料表符合以下的條件, 我

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档