Upload
simon-huang
View
1.681
Download
0
Embed Size (px)
DESCRIPTION
- MySQL實體資料庫檔案結構 - MySQL的資料表與索引結構 - 如何規劃與設計資料庫 - 資料庫正規化
Citation preview
關聯式資料庫系統的規劃
本章內容
• MySQL實體資料庫檔案結構
• MySQL的資料表與索引結構
•如何規劃與設計資料庫
•資料庫正規化
學習本章後,你將會
•瞭解並指出MySQL的實體檔案的預設資料夾位置
•變更預設的MySQL實體檔案存放資料夾位置
•瞭解MySQL的資料表結構及其作用
•瞭解MySQL的索引結構
•瞭解關聯式資料庫規劃的方法
•能夠簡單說明資料庫正規化的用途
•能夠運用第一正規化、第二正規化、第三正規化及Boyce-Codd正規化進行簡單的資料庫規劃
規劃資料庫系統的儲存空間
•資料庫系統會隨著存放的資料量增加而佔用更多硬碟空間
•規劃資料庫系統的第一步是要預估資料量
•按資料量來規劃需要的儲存設備(硬碟)空間
MySQL儲存資料的方法
•指定預設的資料庫檔案儲存資料夾•可以是連線在MySQL Server上的儲存設備
• MySQL Server有權限讀寫資料檔案
•對資料夾要擁有系統管理者權限
•建立附檔名為.frm、.MYD、.MYI的MySLQ資料庫檔案• .frm:紀錄資料表的結構
• .MYD:儲存MyISAM資料表的資料
• .MYI:儲存MyISAM資料表的索引檔
MySQL的資料庫實體檔案
• MySQL 5.6安裝完成的預設資料庫實體檔案資料夾為
C:\ProgramData\MySQL\MySQL Server 5.6\data
•下頁圖示為預設安裝完成後的MySQL資料庫實體檔案資料夾內容
•主檔名為db者,即為系統資料庫
• MySQL資料庫檔案可以複製•最好先停止MySQL資料庫服務再複製
•複製,是遷移MySQL資料庫檔案最直接的方法
MySQL預設的資料庫實體檔案圖示
MySQL的預設資料庫檔案儲存資料夾
•預設的C:\ProgramData資料夾是被Windows隱藏的系統資料夾
•由檔案總管視窗的資料夾選項設定• 點選“顯示隱藏的檔案、資料夾及磁碟機”
• 取消勾選“隱藏保護的作業系統檔案”
• 參見左圖
•再由檔案總管打開C磁碟機資料夾,即可見到系統資料夾C:\ProgramData
變更MySQL預設資料庫檔案資料夾(一)
• MySQL資料庫管理需要進入資料庫檔案資料夾
•為避免破壞Windows作業系統的系統安全,建議變更MySQL的預設資料庫檔案資料夾位置
•由“服務”停止MySQL資料庫系統
變更MySQL預設資料庫檔案資料夾(二)
•建立新的MySQL資料庫檔案資料夾,例如C:\MySQLDBFiles
•將原MySQL資料庫檔案資料夾C:\ProgramData\MySQL\MySQL Server 5.6\data中的所有檔案及子資料夾複製到新的MySQL資料庫檔案資料夾C:\MySQLDBFiles中
•參見左圖複製完後的新MySQL資料庫檔案資料夾內容
變更MySQL預設資料庫檔案資料夾(三)
•複製完成後,以筆記本(Notepad)打開MySQL的系統架構檔My.ini
C:\ProgramData\MySQL\MySQL Server 5.6\My.ini
•找到My.ini的[mysqld]節點,編輯其中datadir參數,將其內容變更為
datadir="C:/MySQLDBFiles\“
•參見左圖
變更MySQL預設資料庫檔案資料夾(四)
•重新啟動MySQL資料庫服務,如左圖,狀態必須為“執行中”
•檢查新的MySQL資料檔案資料夾中的各個資料庫檔案是否變更為最新系統時間• 如變更,完成預設資料夾
• 沒有變更,請重新由步驟(一)進行
變更MySQL預設資料庫檔案資料夾(五)
•恢復Windows作業系統資料夾安全性• 點選“不顯示隱藏的檔案、資料夾及磁碟機”
• 勾選“隱藏保護的作業系統檔案”
• 參見左圖
•進入C磁碟機資料夾,確定無法點選C:\ProgramData資料夾
回顧MySQL預設資料庫檔案資料夾
•本節說明MySQL資料庫系統的資料庫檔案預設資料夾
•說明在Windows作業系統中變更MySQL資料庫檔案預設資料夾的原因
•說明在Windows作業系統中變更MySQL資料庫檔案預設資料夾的操作步驟
•在Linux作業系統中,變更MySQL資料庫檔案預設資料夾的操作步驟類似
MySQL資料庫系統的資料表結構
• MySQL資料庫系統的資料表,由下列要素構成
•資料表的名稱
•資料表中的欄位(Field),由下列要素構成• 欄位名稱(Field Name)
• 可存放的資料型別(Data Type)
• 存放資料的限制條件,例如不可存放空值(Null)
•索引鍵(Index Key)
綱要(Schema)
•綱要是指資料庫系統中,資料儲存架構的定義
•由一群有關聯的資料表,及其相關的引索鍵與控制程式組成
•綱要的應用視不同的資料庫管理系統(DBMS)的設計而異
• MySQL資料庫管理系統對綱要的應用主要是在資料庫層級• 資料庫 = 綱要
• Oracle資料庫管理系統對綱要的應用主要是在使用者帳號層級• 資料庫 -> 使用者帳號 = 綱要
• Microsoft SQL Server則是提供獨立的綱要層級,不一定會用到• 資料庫 -> 綱要
MySQL資料庫系統的索引
• MySQL資料庫系統的索引有以下數種
• INDEX,或稱為Key,是種直接、非惟一值的索引
• Unique,惟一值索引,限制索引值必須是惟一
• Primary,主索引,每個資料表只能有一個主索引,其索引值惟一
• FullText,全文檢索,這是用來建立搜尋功能的索引
MySQL資料庫系統的索引結構
• MySQL資料庫系統提供兩種索引結構
• B-Tree,二元樹索引結構,預設使用
• Hash,雜湊索引結構,只用在Memory/Heap Table
• Memory/Heap Table是比較特殊的資料表結構,和一般儲存在碟硬上的資料表不同,主要是以記憶體為儲存設備,講求速度、效能的情況下可運用這種特殊的資料表結構
B-Tree索引結構•如左圖,先以13為比較基礎,小於13的數字放左邊,大於13的數字放右邊
•依此類推小於4,介於4和7,及大於7的數字分別存放
•當搜尋數字1,先比較13,再比較4,只要比較兩次即可找到數字1,大幅縮減搜尋資料時的比較次數及時間
回顧MySQL資料庫系統的資料表及引索
•資料表主要由:欄位名稱、資料型別及限制條件構成
•資料表中有索引鍵的結構,來簡化搜尋資料的過程
• MySQL的索引鍵結構有B-Tree和Hash兩種
•預設使用B-Tree索引結構
• Hash是用在特殊的Memory/Hash Table中
如何規劃與設計資料庫
•規劃一個資料庫,和建立資料庫的目的有直接關聯
•例如• 購物網站資料庫
• 學生學籍資料庫
• 國家地理資訊資料庫
• 戶政資料庫
•設計資料庫是將資料庫的細節,如資料表結構、索引結構等資料庫物件的實際結構,予以詳細的設計
規劃資料庫的考量
•資料量大小
•資料的型態,文字、圖形、多媒體
•資料被存取的方法
•資料庫反應速度的要求
•資料庫的存取權限及資訊安全
•資料庫的服務水準的要求,例如一週7天每天24小時不能停頓
•儲存設備的要求
•備援機制的設計,異地備援的要求
•建置資料庫的預算
設計資料庫的要求
•遵循資料庫正規化的步驟,適當移除資料表結構中重覆資料欄位
•根據查詢資料表內容的條件,設計適當的主鍵及相關索引鍵
•注意資料型別應用的限制,例如整數可容納數字大小
•儘量保存與設計資料庫相關的原始文件,以利日後瞭解設計的考量何在
資料庫正規化(Database Normalized)
•正規化是為關聯式資料庫系統的設計而發展出來的方法
•由下而上評估關聯表綱要是否符合正規化型式(Normal Form)
•正規化型式的目的在• 去除資料表結構中的重覆性(Redundancy),例如學生姓名只要出現在學籍基本資料表中,不用在成績資料表與選課資料表中出現
• 去除不一致相依性(Inconsistent Dependency),例如學生王大同在成績資料表中,有五個不同課程的成績,對照學籍基本資料表中,兩個課程對照記錄A,三個課程對照記錄B,記錄A與B均指向相同的王大同,發生資料不一致的情形。
正規化型式(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正規化型式即可
正規化型式的步驟
未正規化的關聯表
第一正規化型式(1NF)
第二正規化型式(2NF)
第三正規化型式(3NF)
Boyce-Codd正規化型式(BCNF)
•對大多數應用,執行到第三正規化型式即可,不用再執行BCNF及其後的第四、第五正規化型式
•如果資料表的主鍵是由多個欄位構成(又稱為複合欄位)時,就要再執行Boyce-Codd正規化型式。
•其步驟• 檢查第三正規化型式後的關聯表
• 若主鍵只有一個欄位,符合BCNF。
• 若主鍵有多個欄位,則需檢查主鍵中的各欄位不可以相依於其他非主鍵的欄位。
•上頁中的各個關聯表的主鍵均只有一個欄位,故均符合BCNF。
BCNF舉例
• 下圖最右方成績關聯表主鍵有兩個欄位:學號、課程編號
• 成績欄位相依於學號及課程編號欄位:對課程編號欄位而言,並沒有相依於成績欄位;對
學號欄位而言,, 也沒有相依於「成績」欄位。
• 所以成績資料表是符合BCNF的資料表。。
回顧資料庫正規化
•資料庫正規化有六個的步驟
•一般做到第三正規化型式即可算是完成資料庫正規化
• BCNF主要是檢查• 關聯表的主鍵是否有多個欄位構成
• 若主鍵有多個欄位,主鍵中的欄位不可相依於非主鍵的欄位
• 只有一個欄位的主鍵,即符合BCNF,不用再檢查
•商業應用的資料庫設計,很少用到第四、第五正規化型式