Your SlideShare is downloading. ×
Relation3正規化
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Relation3正規化

2,105
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,105
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 資料正規化
    • 巨匠電腦 葉建榮整理 [email_address]
  • 2. 資料來源
    • 本份簡報是由旗標出版「挑戰資料庫管理系統第二版 」簡報整理。
  • 3. 資料正規化
    • 資料庫正規化 (Normailzation) 技術
      • 專門用來設計邏輯資料庫架構
    • 邏輯資料庫架構設計
      • 將 資料項 (Data Item) 分門別類後
      • 將 資料項 分別安排在不同的資料表中
      • 建立起彼此的 關聯 (Relation)
    • 合併 (Join) 運算
    • 反正規化 (De-Normalization)
  • 4. 資料庫正規化的型式
    • 正規化型式
      • 第一正規化型式 (First Normal Form ,
      • 簡稱 1NF)
      • 第二正規化型式 (Second Normal Form ,
      • 簡稱 2NF)
      • 第三正規化型式 (Third Normal Form ,
      • 簡稱 3NF)
  • 5. 資料庫正規化的型式與義涵
  • 6. 第一正規化
    • 第一正規形式 (First Normal Form ,簡稱 1NF)
      • 表格 沒有重複 出現的欄位,且表格中每一筆記錄的每一個欄位只能存放單一的資料值
  • 7. 第一正規化目的
    • 第一正規化乃在 消除 資料表上的 重複資料
      • 一個表格中若有重複的欄位,應該將之分割,放置在不同的資料表中
      • 一個欄位若有多個資料值,也應該將之分割,放置在不同的紀錄裡
    • 除了 供應商代號 及 供應商姓名 兩個欄位外,其餘欄位均有兩個資料值,因此不符合第一正規形式,必須將之分割到不同的紀錄上
  • 8. 刪除新增修改異常處理
    • 考慮供貨紀錄表 ( 表 6.2)
      • 刪除異常
        • 倘若 S04 結束營業,其供貨紀錄將被刪除,則連同 SM05 的相關資訊也會被一併刪除,因而造成資料的流失
      • 新增異常
        • 若有一家新超市開業,它尚未找到合適的供應商,這時若硬要將超市的資訊加入到供貨紀錄 資料 表,則會因有些鍵值是空白而產生異常
      • 修改異常
        • 例如 SM01 的助理由 MARY 換成 LINDA , 若只更新了 R2 而忘了更新 R3 及 R8 , 也會造成資料的不一致
  • 9. 功能相依
    • 功能相關 ( Functional Dependency) , 或稱 「相依」
      • 供貨紀錄表 ( 表 6.2) 上十個欄位屬性間之相依關係
      • QTY 完全功能相關 (Fully Functional Dependency) 於
      • 「 SNO 、 PNO 、 SMNO 」
  • 10. 屬性間的相依關係
  • 11. 第一正規化之後
  • 12. 第一正規化之後
  • 13. 第二正規化
    • 【定義】 第二正規化 (Second Normal Form , 簡稱 2NF)
      • 若且唯若關聯 R 為 1NF 且紀錄中的每一非鍵欄位都完全相關於主鍵 (PK)
      • 每一個欄位只能與 主鍵 相依
      • 每一個欄位只能由 主鍵 來 唯一識別 ,但不可其中某些欄位可由主鍵的一部份來識別
      • 將 1NF 轉化為 2NF 之過程即在 消除非鍵欄位與主鍵間之部份功能相依 。
  • 14. 第二正規化之後
      • 2NF 很明顯地改善了 1NF 的缺點
        • 例如 S04 突然宣告倒閉,它的資料從「供應商資料表」剔除之後, SM05 的資訊依然完整的保存在「超市經理資料表」裡
        • 然而如果 SM05 關門大吉,自「超市經理資料表」將整筆記錄刪除之後,我們就無法查出北區的區長是誰了?
  • 15. 第三正規化
    • 【定義】 第三正規化 (Third Normal Form ,簡稱 3NF)
      • 若且唯若關聯 R 為 2NF 且紀錄中的每一非鍵欄位之屬性
      • 都不具有遞移相關於主鍵 (PK) 之特性
      • 將 2NF 轉化為 3NF 之過程即在 消除遞移相依
  • 16. 第三正規化之後
  • 17. 多重值相關
      • 多重值相關 Multi-Valued Dependency)
        • 超市助理資料表
        • 一家超市 均有可能對應到 多位助理 以及 多支電話 ( 例如 SM04 超市擁有 JOHN 和 JANE 兩位超市助理,而 SM01 超市擁有 22514172 和 22514173 兩支電話 )
  • 18. 多重值相關
      • 多重值相關 Multi-Valued Dependency)
        • 「超市助理」多重值相關於「超市代號」
        • 「電話」也多重值相關於「超市代號」
        • 表示這張資料表中有太多重複資料
        • 這對於資料的更新異動會產生許多異常現象
        • 需將超市助理資料表分割成兩張資料表
  • 19. 多重值相關處理後
  • 20. 另一個正規化例子
    • 設計一個「銷售資料庫」
    • 資料項
      • 訂單序號
      • 訂貨日期
      • 單價
      • 庫存量等
  • 21. 另一個正規化例子
    • 原始資料
  • 22. 另一個正規化例子
    • 正規化的過程
      • 【步驟 1 】
        • 去除重複資料,將表 6.5 分割成表 6.6 及表 6.7
  • 23. 另一個正規化例子
  • 24. 另一個正規化例子
      • 【步驟 2 】
        • 先由表 6.7 下手
        • 由「訂單序號」 + 「產品代號」可以決定出「訂購數量」
        • 由「產品代號」可以決定出「產品名稱」、「單價」及「庫存量」
        • 須滿足:「每一非鍵欄位都完全相關於主鍵 (PK) 」
        • 將表 6.7 分割成分別以「訂單序號」 + 「產品代號」以及「產品代號」為主鍵的兩張資料表,即表 6.8 及表 6.9
  • 25. 另一個正規化例子
  • 26. 另一個正規化例子
      • 【步驟 3 】
        • 從表 6.6 得知
        • 由「訂單序號」可以決定出「訂貨日期」、「送貨日期」及「客戶代號」
        • 由「客戶代號」可以決定出「客戶名稱」及「客戶地址」
        • 去除遞移相依
          • 將表 6.6 分割成表成分別以「訂單序號」及「客戶代號」為主鍵的兩張資料表,即 6.10 及表 6.11
  • 27. 另一個正規化例子
  • 28. 一個簡易方法–類聚檢查法
    • 物 以 類 聚
      • 物 :資料項
      • 類 :實體 (Entity) 、資料表
    • 檢查是否符合第一、第二及第三正規化型式
  • 29. 一個簡易方法–類聚檢查法
    • 【步驟 1 】
    • 分析問題,收集所有資料項
      • 訂單序號
      • 訂貨日期
      • 送貨日期
      • 客戶代號
      • 客戶名稱
      • 客戶地址
      • 產品代號
      • 訂購數量
      • 產品名稱
      • 單價
      • 庫存量等
  • 30. 一個簡易方法–類聚檢查法
    • 【步驟 2 】
    • 分析問題,找出 實體 (Entity)
      • Product( 產品 ) 實體
        • 存放所有與產品有關的資料
      • Customer ( 客戶 ) 實體
        • 存放所有與客戶有關的資料
      • Orders ( 訂單 ) 實體
        • 存放客戶的訂購資訊
  • 31. 一個簡易方法–類聚檢查法
    • 【步驟 3 】
    • 將資料項分類,逐一擺放到適當的實體裡,並且須滿足:
      • 每一個實體都有 一個主鍵
      • 實體與實體間必須至少有一 關連 互相聯繫,使實體不致於成為孤島
    • 因此,我們得到以下結果:
  • 32. 一個簡易方法–類聚檢查法
  • 33. 一個簡易方法–類聚檢查法
    • 【步驟 4 】
    • 檢查每一個實體是否符合 1NF 、 2NF 、 3NF
      • 我們發現「 Orders 」實體中,一個訂單序號可能訂購好幾項產品,因而造成訂貨日期、送貨日期及客戶代號等資料會大量地重複
      • 下表中陰影部分的資料皆重複了
  • 34. 一個簡易方法–類聚檢查法
    • 很自然地我們將「 Orders 」實體分割成「 Orders 」實體和「 Orderslist 」實體,兩者以 訂單序號 相互聯繫,即
  • 35. 一個簡易方法–類聚檢查法
    • 【步驟 5 】
    • 畫出實體關係圖