33
關聯式資料庫系統的規劃

關聯式資料庫系統的規劃

Embed Size (px)

DESCRIPTION

- MySQL實體資料庫檔案結構 - MySQL的資料表與索引結構 - 如何規劃與設計資料庫 - 資料庫正規化

Citation preview

Page 1: 關聯式資料庫系統的規劃

關聯式資料庫系統的規劃

Page 2: 關聯式資料庫系統的規劃

本章內容

• MySQL實體資料庫檔案結構

• MySQL的資料表與索引結構

•如何規劃與設計資料庫

•資料庫正規化

Page 3: 關聯式資料庫系統的規劃

學習本章後,你將會

•瞭解並指出MySQL的實體檔案的預設資料夾位置

•變更預設的MySQL實體檔案存放資料夾位置

•瞭解MySQL的資料表結構及其作用

•瞭解MySQL的索引結構

•瞭解關聯式資料庫規劃的方法

•能夠簡單說明資料庫正規化的用途

•能夠運用第一正規化、第二正規化、第三正規化及Boyce-Codd正規化進行簡單的資料庫規劃

Page 4: 關聯式資料庫系統的規劃

規劃資料庫系統的儲存空間

•資料庫系統會隨著存放的資料量增加而佔用更多硬碟空間

•規劃資料庫系統的第一步是要預估資料量

•按資料量來規劃需要的儲存設備(硬碟)空間

Page 5: 關聯式資料庫系統的規劃

MySQL儲存資料的方法

•指定預設的資料庫檔案儲存資料夾•可以是連線在MySQL Server上的儲存設備

• MySQL Server有權限讀寫資料檔案

•對資料夾要擁有系統管理者權限

•建立附檔名為.frm、.MYD、.MYI的MySLQ資料庫檔案• .frm:紀錄資料表的結構

• .MYD:儲存MyISAM資料表的資料

• .MYI:儲存MyISAM資料表的索引檔

Page 6: 關聯式資料庫系統的規劃

MySQL的資料庫實體檔案

• MySQL 5.6安裝完成的預設資料庫實體檔案資料夾為

C:\ProgramData\MySQL\MySQL Server 5.6\data

•下頁圖示為預設安裝完成後的MySQL資料庫實體檔案資料夾內容

•主檔名為db者,即為系統資料庫

• MySQL資料庫檔案可以複製•最好先停止MySQL資料庫服務再複製

•複製,是遷移MySQL資料庫檔案最直接的方法

Page 7: 關聯式資料庫系統的規劃

MySQL預設的資料庫實體檔案圖示

Page 8: 關聯式資料庫系統的規劃

MySQL的預設資料庫檔案儲存資料夾

•預設的C:\ProgramData資料夾是被Windows隱藏的系統資料夾

•由檔案總管視窗的資料夾選項設定• 點選“顯示隱藏的檔案、資料夾及磁碟機”

• 取消勾選“隱藏保護的作業系統檔案”

• 參見左圖

•再由檔案總管打開C磁碟機資料夾,即可見到系統資料夾C:\ProgramData

Page 9: 關聯式資料庫系統的規劃

變更MySQL預設資料庫檔案資料夾(一)

• MySQL資料庫管理需要進入資料庫檔案資料夾

•為避免破壞Windows作業系統的系統安全,建議變更MySQL的預設資料庫檔案資料夾位置

•由“服務”停止MySQL資料庫系統

Page 10: 關聯式資料庫系統的規劃

變更MySQL預設資料庫檔案資料夾(二)

•建立新的MySQL資料庫檔案資料夾,例如C:\MySQLDBFiles

•將原MySQL資料庫檔案資料夾C:\ProgramData\MySQL\MySQL Server 5.6\data中的所有檔案及子資料夾複製到新的MySQL資料庫檔案資料夾C:\MySQLDBFiles中

•參見左圖複製完後的新MySQL資料庫檔案資料夾內容

Page 11: 關聯式資料庫系統的規劃

變更MySQL預設資料庫檔案資料夾(三)

•複製完成後,以筆記本(Notepad)打開MySQL的系統架構檔My.ini

C:\ProgramData\MySQL\MySQL Server 5.6\My.ini

•找到My.ini的[mysqld]節點,編輯其中datadir參數,將其內容變更為

datadir="C:/MySQLDBFiles\“

•參見左圖

Page 12: 關聯式資料庫系統的規劃

變更MySQL預設資料庫檔案資料夾(四)

•重新啟動MySQL資料庫服務,如左圖,狀態必須為“執行中”

•檢查新的MySQL資料檔案資料夾中的各個資料庫檔案是否變更為最新系統時間• 如變更,完成預設資料夾

• 沒有變更,請重新由步驟(一)進行

Page 13: 關聯式資料庫系統的規劃

變更MySQL預設資料庫檔案資料夾(五)

•恢復Windows作業系統資料夾安全性• 點選“不顯示隱藏的檔案、資料夾及磁碟機”

• 勾選“隱藏保護的作業系統檔案”

• 參見左圖

•進入C磁碟機資料夾,確定無法點選C:\ProgramData資料夾

Page 14: 關聯式資料庫系統的規劃

回顧MySQL預設資料庫檔案資料夾

•本節說明MySQL資料庫系統的資料庫檔案預設資料夾

•說明在Windows作業系統中變更MySQL資料庫檔案預設資料夾的原因

•說明在Windows作業系統中變更MySQL資料庫檔案預設資料夾的操作步驟

•在Linux作業系統中,變更MySQL資料庫檔案預設資料夾的操作步驟類似

Page 15: 關聯式資料庫系統的規劃

MySQL資料庫系統的資料表結構

• MySQL資料庫系統的資料表,由下列要素構成

•資料表的名稱

•資料表中的欄位(Field),由下列要素構成• 欄位名稱(Field Name)

• 可存放的資料型別(Data Type)

• 存放資料的限制條件,例如不可存放空值(Null)

•索引鍵(Index Key)

Page 16: 關聯式資料庫系統的規劃

綱要(Schema)

•綱要是指資料庫系統中,資料儲存架構的定義

•由一群有關聯的資料表,及其相關的引索鍵與控制程式組成

•綱要的應用視不同的資料庫管理系統(DBMS)的設計而異

• MySQL資料庫管理系統對綱要的應用主要是在資料庫層級• 資料庫 = 綱要

• Oracle資料庫管理系統對綱要的應用主要是在使用者帳號層級• 資料庫 -> 使用者帳號 = 綱要

• Microsoft SQL Server則是提供獨立的綱要層級,不一定會用到• 資料庫 -> 綱要

Page 17: 關聯式資料庫系統的規劃

MySQL資料庫系統的索引

• MySQL資料庫系統的索引有以下數種

• INDEX,或稱為Key,是種直接、非惟一值的索引

• Unique,惟一值索引,限制索引值必須是惟一

• Primary,主索引,每個資料表只能有一個主索引,其索引值惟一

• FullText,全文檢索,這是用來建立搜尋功能的索引

Page 18: 關聯式資料庫系統的規劃

MySQL資料庫系統的索引結構

• MySQL資料庫系統提供兩種索引結構

• B-Tree,二元樹索引結構,預設使用

• Hash,雜湊索引結構,只用在Memory/Heap Table

• Memory/Heap Table是比較特殊的資料表結構,和一般儲存在碟硬上的資料表不同,主要是以記憶體為儲存設備,講求速度、效能的情況下可運用這種特殊的資料表結構

Page 19: 關聯式資料庫系統的規劃

B-Tree索引結構•如左圖,先以13為比較基礎,小於13的數字放左邊,大於13的數字放右邊

•依此類推小於4,介於4和7,及大於7的數字分別存放

•當搜尋數字1,先比較13,再比較4,只要比較兩次即可找到數字1,大幅縮減搜尋資料時的比較次數及時間

Page 20: 關聯式資料庫系統的規劃

回顧MySQL資料庫系統的資料表及引索

•資料表主要由:欄位名稱、資料型別及限制條件構成

•資料表中有索引鍵的結構,來簡化搜尋資料的過程

• MySQL的索引鍵結構有B-Tree和Hash兩種

•預設使用B-Tree索引結構

• Hash是用在特殊的Memory/Hash Table中

Page 21: 關聯式資料庫系統的規劃

如何規劃與設計資料庫

•規劃一個資料庫,和建立資料庫的目的有直接關聯

•例如• 購物網站資料庫

• 學生學籍資料庫

• 國家地理資訊資料庫

• 戶政資料庫

•設計資料庫是將資料庫的細節,如資料表結構、索引結構等資料庫物件的實際結構,予以詳細的設計

Page 22: 關聯式資料庫系統的規劃

規劃資料庫的考量

•資料量大小

•資料的型態,文字、圖形、多媒體

•資料被存取的方法

•資料庫反應速度的要求

•資料庫的存取權限及資訊安全

•資料庫的服務水準的要求,例如一週7天每天24小時不能停頓

•儲存設備的要求

•備援機制的設計,異地備援的要求

•建置資料庫的預算

Page 23: 關聯式資料庫系統的規劃

設計資料庫的要求

•遵循資料庫正規化的步驟,適當移除資料表結構中重覆資料欄位

•根據查詢資料表內容的條件,設計適當的主鍵及相關索引鍵

•注意資料型別應用的限制,例如整數可容納數字大小

•儘量保存與設計資料庫相關的原始文件,以利日後瞭解設計的考量何在

Page 24: 關聯式資料庫系統的規劃

資料庫正規化(Database Normalized)

•正規化是為關聯式資料庫系統的設計而發展出來的方法

•由下而上評估關聯表綱要是否符合正規化型式(Normal Form)

•正規化型式的目的在• 去除資料表結構中的重覆性(Redundancy),例如學生姓名只要出現在學籍基本資料表中,不用在成績資料表與選課資料表中出現

• 去除不一致相依性(Inconsistent Dependency),例如學生王大同在成績資料表中,有五個不同課程的成績,對照學籍基本資料表中,兩個課程對照記錄A,三個課程對照記錄B,記錄A與B均指向相同的王大同,發生資料不一致的情形。

Page 25: 關聯式資料庫系統的規劃

正規化型式(Normal Form)

•正規化型式是用來設計資料庫中資料表結構的方法

•有六個正規化型式• 第一正規化型式(First Normal Form)

• 第二正規化型式(Second Normal Form)

• 第三正規化型式(Third Normal Form)

• Boyce-Codd正規化型式(Boyce-Codd Normal Form)

• 第四正規化型式(Fifth Normal Form)

• 第五正規化型式(Sixth Normal Form)

•通常做到第三正規化型式或Boyce-Codd正規化型式即可

Page 26: 關聯式資料庫系統的規劃

正規化型式的步驟

Page 27: 關聯式資料庫系統的規劃

未正規化的關聯表

Page 28: 關聯式資料庫系統的規劃

第一正規化型式(1NF)

Page 29: 關聯式資料庫系統的規劃

第二正規化型式(2NF)

Page 30: 關聯式資料庫系統的規劃

第三正規化型式(3NF)

Page 31: 關聯式資料庫系統的規劃

Boyce-Codd正規化型式(BCNF)

•對大多數應用,執行到第三正規化型式即可,不用再執行BCNF及其後的第四、第五正規化型式

•如果資料表的主鍵是由多個欄位構成(又稱為複合欄位)時,就要再執行Boyce-Codd正規化型式。

•其步驟• 檢查第三正規化型式後的關聯表

• 若主鍵只有一個欄位,符合BCNF。

• 若主鍵有多個欄位,則需檢查主鍵中的各欄位不可以相依於其他非主鍵的欄位。

•上頁中的各個關聯表的主鍵均只有一個欄位,故均符合BCNF。

Page 32: 關聯式資料庫系統的規劃

BCNF舉例

• 下圖最右方成績關聯表主鍵有兩個欄位:學號、課程編號

• 成績欄位相依於學號及課程編號欄位:對課程編號欄位而言,並沒有相依於成績欄位;對

學號欄位而言,, 也沒有相依於「成績」欄位。

• 所以成績資料表是符合BCNF的資料表。。

Page 33: 關聯式資料庫系統的規劃

回顧資料庫正規化

•資料庫正規化有六個的步驟

•一般做到第三正規化型式即可算是完成資料庫正規化

• BCNF主要是檢查• 關聯表的主鍵是否有多個欄位構成

• 若主鍵有多個欄位,主鍵中的欄位不可相依於非主鍵的欄位

• 只有一個欄位的主鍵,即符合BCNF,不用再檢查

•商業應用的資料庫設計,很少用到第四、第五正規化型式