第二章 規劃關連式資料庫
章節概覽 規劃關連式資料庫前的準備工作 開始規劃關連式資料庫 資料庫的三個正規化 資料表與資料表的關連建立 資料庫正規化的檢查 減少儲存空間 降低輸入錯誤 增進資料庫效率 規劃資料庫目的
2.1 規劃關連式資料庫前的準備工作 第一步驟:系統使用者的訪談 第二步驟:可行性分析 第三步驟:將系統所需儲存的資訊欄位寫出來 第四步驟:資料庫的正規化 正規化 資料表關聯 商業邏輯規則與限制式
2.1.1 第一步驟:系統使用者的訪談 系統建立前的準備工作 主要了解應用系統的主要功能為何 了解商業流程的走向
2.1.2 第二步驟:可行性分析 分析完成這個專案所需耗費的時間與所使用的技 術 將專案所需的技術列出 依照訪談內容評估需要的技術及估計完成的時間 (如:甘特圖)
2.2 開始規劃關連式資料庫 第三步驟:將系統所需儲存的資訊欄位寫出來 第四步驟:資料庫的正規化
第三步驟:將系統所需儲存的資訊欄位寫出來 將可能會用到的資料列舉出來 設定資料的格式與資料型別 可利用實際的報表、表單、歷史資料
資料表列法 Notation : 主鍵有底線 Table columns Table name Customer(CustomerID, Phone, Name, Address, City, State, ZipCode) Primary key is underlined CustomerID Phone LastName FirstName Address City State Zipcode 1 502-666-7777 Johnson Martha 125 Main Street Alvaton KY 42122 2 502-888-6464 Smith Jack 873 Elm Street Bowling Green KY 42101 3 502-777-7575 Washington Elroy 95 Easy Street Smith’s Grove KY 42171 4 502-333-9494 Adams Samuel 746 Brown Drive Alvaton KY 42122 5 502-474-4746 Rabitz Victor 645 White Avenue Bowling Green KY 42102 6 616-373-4746 Steinmetz Susan 15 Speedway Drive Portland TN 37148 7 615-888-4474 Lasater Les 67 S. Ray Drive Portland TN 37148 8 615-452-1162 Jones Charlie 867 Lakeside Drive Castalian Springs TN 37031 9 502-222-4351 Chavez Juan 673 Industry Blvd. Caneyville KY 42721 10 502-444-2512 Rojo Maria 88 Main Street Cave City KY 42127
第四步驟:資料庫的正規化 將大資料表切割成小資料表 資料表與資料表之間有關連性 用來維護資料的一致性
2.3 資料庫的三個正規化 資料庫的第一正規化: 避免重覆群組 First Normal Form , 1NF 資料庫的第二正規化: 欄位與主鍵有相依性與建立關連 Second Normal Form , 2NF 資料庫的第三正規化: 檢查欄位與欄位間是否有從屬關係 Third Normal Form , 3NF E.F. Codd 1970年
資料庫的第一正規化:避免重覆群組 避免重覆群組 每個資料表要找尋主索引鍵 利用主索引鍵可以將資料表中唯一的一筆資料取 出
1NF 範例: 原始資料: 訂單 (訂單編號 ,訂單日期, 項目1, 書籍名稱1,價格1,數量1, 項目2, 書籍名稱2,價格2,數量2, 項目3 ,書籍名稱3,價格3,數量3… ,送貨地點,連絡人) 1NF資料(1張訂單有很多筆訂貨資料) 訂單 (訂單編號 , 訂單日期 , 總金額 , 送貨地點 , 連絡人) 訂單項目表 (訂單編號 , 項目編號 , 書籍名稱 , 價格 , 數量) 一對多關聯
資料庫的第二正規化:欄位與主鍵有相依性 與建立關連 主索引鍵與其他欄位之間,有沒有直接的關連性 若沒有直接關連性,必需要拆成另一個資料表 非PRIMARY KEY的欄位 不能 只與PK中的部份欄位 有關係
2NF 範例: ∞ 1 原始資料: 訂單項目表 (訂單編號 , 項目編號 , 書籍名稱 , 價格 , 數量) 2NF資料: 訂單項目表 (訂單編號 , 項目編號 , 書籍編號 , 數量) 書籍資料表 (書籍編號 ,書籍名稱 , 價格 ) ∞ 一對多關聯 1
2.4 欄位與主鍵有相依性與建立關連
一對一的資料表關連性
一對多的資料表關連性
建立關連的方式
關連的建立成功
多對多的資料表關連性(一)
多對多的資料表關連性(二)
多對多的資料表關連性(三)
2.5 資料庫正規化注意事情 2.5.1 資料庫的第三正規化:檢查欄位與欄位間是否有從屬關係 非主索引鍵的欄位間不應該有相依的從屬關係
3NF 範例: 1 ∞ 原始資料: 訂單 (訂單編號 , 訂單日期 , 總金額 , 送貨地點 , 連絡人) 3NF資料: 客戶 ( 客戶編號 ,連絡人 , 送貨地點 ) 訂單 (訂單編號 ,訂單日期 , 總金額 , 客戶編號) 1 一對多關聯 ∞
2.5.2 資料庫正規化要注意的事項 避免過度的正規化 正規化後應試著新增、修改、刪除幾筆資料看看
本章學習成果 一個專案在開發時的步驟。 資料庫正規化的目的。 第一正規化的目的。 第二正規化的目的。 第三正規化的目的。 資料庫的正規化適可而止,因為在現實社會中 ,還要搭配商業邏輯規則。