資料庫正規化與E-R Model 簡介 義守大學資管系 張心怡、陶幼慧 2002.9
Normalization(正規化) 定義:對於一個關聯式資料而言,將所有需要的記錄 功能相依:若有一欄位A的值可唯一決定欄位B的值 儲存於同一表格中,會有資料重複的現象,因 此根據功能相依的情況進行表格分割,以減少 資料重複現象的過程,稱之為正規化。 功能相依:若有一欄位A的值可唯一決定欄位B的值 時,則稱B功能相依於A。 範例: “姓名“功能相依於“學號“ 員工編號 姓 名
正規化過程_1NF 去2NF 1NF (一階正規化),條件: 1. 每個欄位不可有空值(null) 2. 主索引可查詢出唯一的資料值。 工作表(專案編號,專案名稱,員工編號,姓名,工作類別,時薪, 工作時數) 專案編號 專案名稱 員工編號 姓名 工作類別 時薪 工作時數
正規化過程_2NF 2NF (二階正規化):需符合1NF,且不允許有部分 部分相依: 相依。 範例: 專案編號,員工編號 專案名稱,姓名,工作類別,時薪, 工作時數 員工編號 姓名,工作類別,時薪 專案編號 專案名稱 專案編號 專案名稱 員工編號 姓名 工作類別 時薪 工作時數
正規化過程_2NF (續 1) 回1NF 去3NF 1NF-to-2NF轉換: 專案表(專案編號,專案名稱) 員工表(員工編號,姓名,工作類別,時薪) 工時表(專案名稱,員工編號,工作時數) 專案編號 專案名稱 員工編號 姓名 工作類別 時薪 專案編號 員工編號 工作時數
正規化過程_3NF 3NF (三階正規化):需符合2NF,且不允許有遞移 遞移相依: 相依。 範例: 員工編號 姓名,工作類別,時薪 員工編號 姓名,工作類別,時薪 工作類別 時薪 員工編號 姓名 工作類別 時薪
正規化過程_3NF (續 1) 回2NF 2NF-to-3NF轉換: 員工表(員工編號,姓名,工作類別) 時薪表(工作類別,時薪) 員工編號
1NF-to-3NF之轉換結果 專案表(專案編號,專案名稱) 時薪表(工作類別,時薪) 工時表(專案名稱,員工編號,工作時數) 員工表(員工編號,姓名,工作類別) 時薪表(工作類別,時薪) 工時表(專案名稱,員工編號,工作時數) 專案編號 專案名稱 員工編號 姓名 工作類別 工作類別 時薪 專案編號 員工編號 工作時數
E_R model(實體關聯模式) 定義: 基本元件圖示: 2. E-R model是一個簡單化的資料庫內實體關係 之圖示。 1. 1976,Peter Chen提出。 2. E-R model是一個簡單化的資料庫內實體關係 之圖示。 3. 透過E-R diagram描述E-R model. 基本元件圖示: :entity(實體),即“表格”。 :attribute(屬性),即“欄位名稱”
E_R model(實體關聯模式) 續1 :relationship(關係),即“表格之間 的關係”。 M:N關係 :bridge entity(橋接實體),適用於 M:N關係
E_R model(實體關聯模式) 續2 實體關係的種類: (1) 1:1 關係,例如: 1 1 妻子 與 丈夫 丈夫ID 妻子姓名 (1) 1:1 關係,例如: 1 1 妻子 與 丈夫 丈夫ID 妻子姓名 妻子ID 丈夫姓名
E_R model(實體關聯模式) 續3
E_R model(實體關聯模式) 續4 (2) 1:M 關係,例如: 1 M 課程 教 教師 教師ID 教師姓名 課程ID 課程名稱
E_R model(實體關聯模式) 續5
E_R model(實體關聯模式) 續6 (3) M:N 關係,例如: M M 1 M M 1 課程 修習 學生 課程 課程名稱 課程ID 學生姓名
E_R model(實體關聯模式) 續7
練習題 xx市立圖書館自動借書系統,原先試算表儲存資料如下: 借書證號碼、姓名、身分證號碼、居住區(公所)、居住地址、電話、工作單位、單位電話、單位地址、書名、書碼、館藏本數、作者、出版商、年份、版數、館員姓名、館員編號、館員地址、館員電話、出借日期、歸還日期、逾期天數、罰款、目前借出本數、分館名稱、分館編號、分館地址、分館電話、分館負責人 請依資料庫正規化設計角度將上述資料設計成資料表至第三正規化並確定Primary Key與Foreign Key,最後以E-R Model表示之