第七章 關聯式資料庫設 計
許明宗
大綱
o
建立關聯式資料庫的步驟
o
關聯式資料庫及其組成要件
o
正規化
o
使用 Access 建立關聯式資料庫
o
資料表的關聯以及資料庫關聯圖
建立關聯式資料庫的步驟
系統規格/需求定義
概念設計
邏輯設計
實體建置
資料庫
資料關聯性(實體-關係)模型
實體資料型態定義 需求及資料的搜集
轉換為資料表及正規化
1
3
2 4
5 6
以實際的資料來建置資料庫
c
依據搜集到的資料以及使用需求,建立資料表
d
將資料輸入資料表中,檢查資料表的欄位、資 料類型等設計是否能夠滿足實際上的使用需求
e
分析資料表的內容,執行正規化
f
分析正規化後資料表之間的關聯性
g
建立正規化後的所有資料表以及關聯
h
檢查是否滿足資料特性以及使用需求
關聯式資料庫及其組成要件
為何要使用關聯式資料庫
使用單一資料表的缺點
關聯式資料庫
鍵(Key)
索引(Index)
資料完整性
使用單一資料表的缺點
50 10
$500
$300
李華山 開發史
大學路15號 大鳥書局
95/3/2 002
趙得勝 15
$250 北游記
民生路6號 北大書城
95/2/27 001
趙得勝 20
$500 開發史
民生路6號 北大書城
95/2/27 001
20
$300
數量 訂價
李華山 台北雜誌
大學路15號 大鳥書局
95/3/2 002
趙得勝 台北雜誌
民生路6號 北大書城
95/2/27 001
業務 代表 書籍
連絡地址 名稱 訂書 客戶名稱
日期 訂單
編號
訂單及客戶 資料會重複
業務員資料 書籍資料會 會重複
重複
使用單一資料表的缺點 (cont’d)
浪費儲存空間:資料被重複記錄,浪費儲存空間
增加資料輸入錯誤的可能性
不同的時間輸入相同的資料,產生輸入錯誤(北大書城 Æ北大 書堿)
資料的修改不方便
修改資料時(台北雜誌 Æ 臺北雜誌),需要逐筆記錄去尋找、
修改,容易造成更新異常
資料的遺失
北大書城若只有一筆訂購記錄,刪除該筆記錄則北大書城的資料 也會被刪除(刪除異常)
不易新增資料
若以訂單編號和書籍名稱為主索引鍵時,當大鳥書局沒有訂購記 錄時,無法將大鳥書局的資料記錄新增到資料表中(新增異常)
關聯式資料庫
基於關聯式資料模型(Relational Data Model)理 論,所設計的資料庫
其中資料表是由「資料行」(Column)和「資料 列」(Row)所組成
資料行
又稱為欄位(Field) 、屬性(Attribute)
同一個欄位裡的資料都具有相同的特性以及資料類型
可用來做為分類以及識別
資料列
又稱為記錄(Record)
一筆記錄代表一個完整的資料個體,由一個以上的欄位組成
關聯式資料庫 (cont’d)
從使用者的角度來看
資料表中資料的「關聯」
一筆記錄代表一個資料個體
一個欄位代表不同個體間具有的相同特性
透過列和欄的關聯,可以找到資料個體的某個特性
資料表間的「關聯」
不同的資料表可能本身就有密不可分的關係
訂貨資料表有業務人員
,
和員工資料表產生關聯
為避免使用單一資料所造成的問題,而將資料表分割
為許多不同的資料表(正規化);這些分割出來的資
料表間,也存在著「關聯」
資料表中資料的關聯
50 10
$500
$300 開發史
大學路15號 大鳥書局
95/3/2 002
15
$250 北游記
民生路6號 北大書城
95/2/27 001
20
$500 開發史
民生路6號 北大書城
95/2/27 001
20
$300
數量 訂價
台北雜誌 大學路15號
大鳥書局 95/3/2
002
台北雜誌 民生路6號
北大書城 95/2/27
001
書籍 連絡地址 名稱
訂書 客戶名稱 日期
訂單 編號
一筆記錄代 表一個資料 個體
一個欄位代 表不同個體 間具有的相 同特性
透過列和欄 的關聯,可 以找到資料 個體的特性
資料表間的關聯
鍵(Key)
關聯式資料庫由「鍵」來識別資料,而且資料表間也是由「鍵」來 建立彼此的關聯
候選鍵(Candidate Key):具有唯一性、最簡性的欄位或欄位組合
唯一性( Uniqueness ):在候選鍵的欄位中,不會有重複的資料
最簡性(Irreducibility):由多個欄位組成的候選鍵,當中的任何欄位 組合,都不具有唯一性
資料表中的一個(一組)候選鍵,被用來做為識別記錄的唯一性,
稱為主索引鍵或主鍵(Primary Key)
其他沒被選上的候選鍵,則稱為「替代鍵(Alternate Key )」
外來鍵(Foreign Key)
資料表的欄位資料是來自於其它資料表的某一個欄位資料,則稱該欄位 為「外來鍵」
主索引鍵
主索引鍵是用來辨識記錄的欄位
具有唯一性(不允許重複)
當資料表中沒有一個欄位具有唯一性時,可以 利用多個欄位組合起來做為主索引鍵
具有唯一值的
「員工編號」可 做為主索引鍵
「姓名」可能會有 同名同姓,不適合 做為主索引鍵
「科目」加上「學 號」具有唯一值,
可做為主索引鍵
繼安 S2
大熊 S1
廠商名稱 廠商編號
供應商
P2 麵包 P1 牛奶
產品名稱 產品編號
產品種類
45 P2
S2
25 P1
S2
30 P2
S1
25 P1
S1
售價 產品名稱
廠商編號
產品售價表 主索
引鍵
外來鍵的值來自參照的主索引鍵
外來鍵(Foreign Key)
建立欄位間的「參照」關係
被參照欄位通常是被參照資料表的主索引鍵
查詢多個資料表的資料時,需要透過外來鍵聯結資料表
需要對外來鍵建立索引,加快查詢速度
參照資料表為被參照資料表的子資料工作表
索引(Index)
加快讀取資料的速度
適當的索引可以縮短讀取資料的時間
資料量越大,索引的效益越明顯
不當的索引會增加新增、修改、刪除資料時所須的時 間(因為這些異動也要一併更新索引)
需要建立索引的欄位
主索引鍵、外來鍵、以及其它需要經常作為查詢使用 的欄位
常用的索引技術有
B 樹索引 (B-tree Index)
雙向連結串列 (Doubly-Linked List)
資料完整性(Data Integrity)
保持資料的完整性(正確、可靠、一致)
是一件重要的事
多個資料表的資料庫(例如,分割後的資 料表),資料會被分散到不同的資料表 中;必須要確保分散到各個資料表中的資 料仍保持完整性
例如,在某一個資料表中更新了一筆資料,則
所有用到此資料的地方也都要更新
資料完整性的種類
個體完整性(Entity Integrity)為確保資料 表記錄的唯一性(單一資料表)
藉由主索引鍵可以達成
不可重複的索引欄位也可以達成
區域完整性(Domain Integrity)為確保資 料在允許範圍內(單一資料表)
欄位的值必須限制在某一範圍內或是欄位的值 必須受某些條件的約束
藉由驗證規則與文字可以達成
資料完整性的種類 (cont’d)
參考完整性(Referential Integrity)為確保兩個資 料表間的資料一致;避免改變某一資料表的記錄
,造成另一資料表的內容失效
藉由建立主索引鍵和外來鍵間的強迫參考完整性關 係,可以達成
使用者定義的完整性(User-defined Integrity)為 依據使用者的實際需求或商業邏輯來規範資料的 完整性
設定欄位之間的關係(資料表的驗證規則)可以達成 單一資料表的使用者定義完整性
透過條件約束、預存程序、觸發程序則可以達成多個
資料表間的使用者定義完整性
參考完整性
變成無效 的記錄 S2 繼安
S3 競香 S1 大熊
廠商 名稱 廠商
編號
供應商
P2 麵包
果汁 P3
P1 牛奶
產品 名稱 產品
編號
產品種類
25 P2
S3
20 P1
S3
45 P3
S2
25 P1
S2
50 P3
S1
30 P2
S1
25 P1
S1
售價 產品
名稱 廠商
編號
產品售價表
繼安 S2
大熊 S1
廠商 名稱 廠商
編號
供應商
麵包 P2
果汁 P3
牛奶 P1
產品 名稱 產品
編號
產品種類
25 P2
S3
20 P1
S3
45 P3
S2
25 P1
S2
50 P3
S1
30 P2
S1
25 P1
S1
售價 產品
名稱 廠商
編號
產品售價表
刪除這 筆記錄
正規化(Normalization)
欄位的相依性
要何要「正規化」
第一階正規化型式
第二階正規化型式
第三階正規化型式
正規化後資料表間的關聯
「正規化」的其它考量
成績欄位相依於科 目及學號兩個欄位 姓名等欄位相依
於員工編號欄位
欄位的相依性
在一個資料表中,若是 A 欄位的值必須依據 B 欄位才有意義,則稱:A 欄位相依於B 欄位
或稱 B 欄位決定 A 欄位,表示為 B Æ A
相依性指的是資料表內欄位(屬性)之間的關係
欄位的相依性 (cont’d)
10
$300
趙得勝 20
$500 開發史
民生路6號 北大書城
95/2/27 001
20
$300
數量 訂價
李華山 台北雜誌
大學路15號 大鳥書局
95/3/2 002
趙得勝 台北雜誌
民生路6號 北大書城
95/2/27 001
業務 代表 書籍
連絡地址 名稱 訂書 客戶名稱
日期 訂單
編號
訂單編號 書籍名稱 訂書日期
訂價 數量 業務代表
客戶名稱 箭號代表(起點)欄 客戶地址
位可以決定另一個
(終點)欄位 訂單編號 書籍名稱 訂書日期
訂價 數量 業務代表
客戶名稱 客戶地址
實際的欄 位關係
正規化 - 功能
設計資料庫時,為降低資料的重覆性以及 避免更新異常;所進行的分割資料表動 作,就稱為正規化
主要以欄位的相依性,做為分割資料表的依據
做為資料庫邏輯設計的依據,可以
更正資料表中不合理的安排
減低資料的重複性
確認資料表間的關聯
避免設計出來的資料庫運作產生異常
正規化 - 型式
正規化型式(Normal Form) :依據資料表所符 合的正規化規定(定義、條件),可以將資料表 區分為
第一階正規化型式(1st Normal Form,1NF)
第二階正規化型式(2nd Normal Form,2NF)
第三階正規化型式(3rd Normal Form,3NF)
Boyce/Codd 正規化型式(Boyce/Codd Normal Form,
BCNF)或稱廣義 3NF
第四階正規化型式( 4th Normal Form,4NF)
第五階正規化型式( 5th Normal Form,5NF)
一般而言,正規化只要執行至 3NF 或 BCNF 即可
正規化 - 定義及條件
消除遞移相關性 1、資料表為 2NF
2、欄位不具有遞移相關性
(廣義)第三階 正規化
消除和主索引鍵只有部份 功能相依的欄位
1、資料表為 1NF
2、欄位都完全相依於主索 引鍵
第二階正規化
1、去除性質相同的欄位 2、將有多個值的欄位分
成多筆記錄 3 、建立主索引鍵 1、欄位只存放單一資料值
2、沒有重複出現的欄位 3、欄位都和主索引鍵相依 第一階正規化
操作方式 定義及條件
正規化型式
正規化步驟
未經正規化的資料表
第一階正規化型式
第二階正規化型式
第三階正規化型式
除去重複群
除去部份相依
除去遞移相依
第一階正規化(1NF)
符合下列條件的資料表,為具有第一階正 規化形式(First Normal Form,1NF)
每個欄位中都只能存放單一值
沒有重複出現(意義相同)的欄位
所有的欄位都相依於一個或一組欄位(主索引 鍵)
不符合 1NF 資料表的缺點
欄位的大小無法確定
降低查詢資料的效率
不符合 1NF 的資料表
台北雜誌 $300 10本 李華山 開發史 $500 50本 三峽鎮大
學路15號 大鳥書局
95/3/2 002
趙得勝 台北雜誌 $300 20本
北游記 $250 15本 開發史 $500 20本 北市民生
北大書城 東路6號 95/2/27
001
業務 書籍資料 代表
連絡地址 訂書 客戶名稱
日期 訂單
編號
一個欄位中有多個值(或由多個 屬性組成),欄位的大小無法確 定,不容易找到要的資料
不符合 1NF 的資料表 (cont’d)
$500
$250 訂價2
開發 50 史
$300 10 天下
雜誌 三峽鎮大
學路15號 大鳥
002 書局
東游
記 15
20 天下 $300
雜誌 北市民生
東路6號 北大
001 書城
數量2 書籍2
數量1 訂價1
連絡 書籍1 地址 客戶
名稱 訂單
編號
書籍、訂價和數量各 用一個欄位代表即可
建構 1NF 資料表的方法
將具有意義相同的欄位合併
將有多個屬性的欄位分割
重複的資料項分別儲存到不同的記錄中
將資料表加上適當的主索引鍵
符合 1NF 的資料表
50 10
$500
$300
李華山 開發史
大學路15號 大鳥書局
95/3/2 002
趙得勝 15
$250 北游記
民生路6號 北大書城
95/2/27 001
20
$300
數量 訂價
李華山 台北雜誌
大學路15號 大鳥書局
95/3/2 002
趙得勝 台北雜誌
民生路6號 北大書城
95/2/27 001
業務 代表 書籍
連絡地址 名稱 訂書 客戶名稱
日期 訂單
編號
以訂單編號和書籍編號 為主索引鍵
資料重複:訂書日期、客戶名稱、連絡地址等資料會大量的重複 更新異常:包含更改異常、新增異常、刪除異常等
更改異常:「台北雜誌」改為「北大記事」,要同時更改多筆記錄 新增異常:新的書籍除非有人訂購,否則無法將書籍的資料輸入 刪除異常:當只有北大書城訂購北游記時;若北大不想訂購北游記
時,北游記的資料會被刪除
第二階正規化(2NF)
符合第一階正規化形式的資料表因為沒有檢查非 候選鍵欄位和具有多欄位主索引鍵中個別欄位間 的關係,而會有更改、新增、刪除等異常存在
符合以下條件的資料表,具有第二階正規化形式
(Second Normal Form,2NF)
符合 1NF 的格式
所有的非候選鍵欄位都要完全功能相依於主索引鍵
(「非候選鍵」與「主索引鍵」間沒有「部分相依
性」 )
部分相依
主索引鍵由多個欄位組成時,欄位只與主索引鍵 中的部分欄位有相依性,而與另一部分的欄位沒 有相依性
訂價和書籍名稱有相依性,和訂單編號沒有相依性
訂書日期、業務代表、客戶名稱、客戶地址和訂單編 號有相依性,和書籍名稱沒有相依性
訂單編號 書籍名稱 訂書日期
訂價 數量 業務代表
客戶名稱
客戶地址 主索引鍵
訂單編號 書籍名稱 訂書日期
訂價 數量 業務代表
客戶名稱
客戶地址 主索引鍵
建構 2NF 資料表的方法
主索引鍵有多個欄位時,找出主索引鍵部份欄位和其它欄位間的相 依關係
欄位可以被那個(些)主索引鍵欄位所識別、決定
由欄位和個別主索引鍵間的關係,將資料表分割成可個別識別的資料表
書籍名稱 訂價 書籍資料
訂書日期 業務代表
連絡地址 客戶名稱
訂單號碼
訂單記錄
書籍名稱
訂單號碼 數量
訂購數量
重複的資料和異常減少了(沒有「書籍」的更新異常),但是還是有 下列的異常情況
更改異常:地址改為民生東路17號,需同時更改多筆記錄 新增異常:新客戶除非該客戶訂購書籍,否則無法輸入資料
刪除異常:北大書城只有一筆訂單;刪除訂單會把它的資料刪除
第三階正規化(3NF)
符合第二階正規化形式的資料表因為沒有檢查非 主索引鍵欄位間的關係,所以還會有更改、新 增、刪除等異常存在
資料表符合以下的條件,則稱該資料表符合第三 階正規化的形式(Third Normal Form,3NF)
符合 2NF 的格式
而且所有的非候選鍵都不能彼此功能相依(「非候選
鍵欄位」與「候選鍵」間沒有遞移相依性)
遞移相依
遞移相依是指在二個欄位間並非直接相 依,而是借由第三個欄位來達成資料的相 依關係
客戶地址和訂單編號之間有遞移相依性
訂單編號 訂書日期
業務代表 客戶名稱 客戶地址
主索引鍵 訂單編號
訂書日期 業務代表 客戶名稱 客戶地址
主索引鍵
建構 3NF 資料表的方法
找出非主索引鍵欄位間的關係(遞移相依 性)
分割可由非主索引鍵欄位識別的欄位,可消除 資料表中的遞移相依性
95/02/27 訂書日期 業務代表
趙得勝 001 北大書城
客戶名稱 訂單號碼
訂單記錄
民生路6號 北大書城
連絡地址 客戶名稱
客戶資料
符合 3NF 的資料表
95/02/27 訂書日期 業務代表
趙得勝 北大書城
001
客戶名稱 訂單號碼
訂單記錄
民生路6號 北大書城
連絡地址 客戶名稱
客戶資料
書籍名稱 訂價 台北雜誌 300
書籍資料 台北雜誌
書籍名稱
訂單號碼 數量
20 001
訂購數量
正規化後資料表間的關聯
「正規化」的其它考量 - 過多的分割
過多的分割
過多的資料表會降低系統執行的效能
例如,要查詢某一個訂單的客戶地址,需要透過 兩個資料表才能夠找到
95/02/27 趙得勝
訂書日期 業務代表
連絡地址 大學路15號 北大書城
台北雜誌 001
客戶名稱 書籍名稱
訂單號碼
訂單記錄
大學路15號 連絡地址 客戶名稱
北大書城
客戶資料
將訂單資料和 客戶記錄合併 為訂書記錄
「正規化」的其它考量 - 再分割
再分割正規化的資料表
有時為了增加資料處理的效率,可以將正規化 後的仍具有過多欄位的資料表再做分割
資料表擁有許多的欄位,其中有些欄位很少用到
;可以將很少用到的欄位分離出來,存放到另外 一個資料表中
資料表的欄位可以區分為不同的群組
「正規化」的其它考量 - 資料表關聯
正規化的資料表和資料庫中其它資料表間 的關聯
例如,資料庫中有管理員工設計的資料表,這 些資料表會和為了管理訂購所設計的資料表產 生關聯
建立這些資料表間的關聯
利用查詢的方式來建立外來鍵欄位的值
例如,訂單資料表中業務代表欄位的值,可以利用查詢 員工資料表中具有業務性質的員工而得到
藉由查詢欄位建立外來鍵值
小技巧:多個欄 位的查閱,把欄 寬設為「0」,
則只會顯示最後 一欄
將訂單資料表的 業務代表欄位和 員工資料表的員 工編號欄位結合
「正規化」的其它考量 - 重複的欄位
正規化的資料表和資料庫中其它資料表有 重複的欄位
檢查不同的資料表間是否具有相同的欄位,並 且刪除「外來鍵」資料表(一對多關聯中的
「多」 )中的相同欄位
例如:員工資料表和訂單資料表中,都有業務
代表的連絡電話;可以刪除訂單資料表中業務
代表電話的欄位
使用 Access 建立關聯式資料庫
建立符合正規化條件的資料表
分割資料表
使用Access 建立資料表
建立資料表間的關聯
資料庫關聯圖
輸入資料
正規化
建立沒有重複值、欄位的資料表,並找出 其主索引鍵(1NF)
找出欄位和主索引鍵間的相依關係及非主 索引鍵欄位間的相依關係
判斷欄位是否真的需要分割成為新的資料表
只有一個欄位的部份、遞移相依
建立資料表
欄位間的相依關係
10
$300
趙得勝 15
$250 北游記
民生路6號 北大書城
95/2/27 001
20
$300
數量 訂價
李華山 台北雜誌
大學路15號 大鳥書局
95/3/2 002
趙得勝 台北雜誌
民生路6號 北大書城
95/2/27 001
業務 代表 書籍
連絡地址 名稱 訂書 客戶名稱
日期 訂單
編號
訂單編號 書籍名稱 訂書日期
訂價 業務代表 數量
客戶名稱
客戶地址 主索引鍵
分割成可個別識別的資料表
訂單編號 訂書日期
業務代表 客戶名稱 客戶地址
主索引鍵
訂單資料
書籍名稱 訂價
主索引鍵
書籍資料
訂單編號 書籍名稱
數量
主索引鍵
訂單數量
分割由非主索引鍵欄位識別的資料 表
訂單編號 訂書日期
業務代表 客戶名稱 客戶地址
主索引鍵
訂單資料
訂單編號 訂書日期
業務代表
客戶名稱 主索引鍵
訂單資料
客戶名稱 客戶地址
主索引鍵 客戶資料
判斷欄位是否真的需要分割
資料表欄位值非常簡單(例如,資料類型 為「是/否」的欄位)時,雖然欄位值會重 複出現,可以考慮不要再分割該資料表
訂單編號 訂書日期
業務代表
客戶名稱 主索引鍵
性別
性別欄位內容非 常的簡單,可以 不用再分割
使用 Access 建立資料表
為避免「命名」
重複,新增「編 號」欄位
使用 Access 建立資料表 - 小祕訣
要分割的資料表中已經有大量資料時,為避免重 新輸入資料及重設欄位屬性,可以複製原始資料 表,再修改資料表的內容
移除複製資料表的主索引鍵
刪除不要的欄位及新增主索引鍵的編號欄位
避免重複命名造成無法識別記錄
外來鍵資料表中的名稱欄位要改用編號欄位
開啟複製資料表的資料工作表,依新資料表的主索引 鍵排序,刪除主索引鍵中的重複資料,新增編號欄位 的資料
以新增的編號欄位為新的主索引鍵
複製原始資料表
移除資料表的主索引鍵
刪除不要的欄位及新增編號欄位
排序主索引鍵、刪除重複資料及新
增編號欄位資料
建立主索引鍵
資料庫關聯圖以及資料表的關聯
資料庫關聯圖
資料庫關聯圖視窗及建立資料表關聯
欄位查閱與關聯
子資料工作表
編輯、刪除關聯
資料表的關聯
一對多關聯
一對一關聯
永久性關聯
暫時性關聯
子資料工作表
資料庫關聯圖視窗
第一次執行資料 庫關聯圖時,會 出現「顯示資料 表」視窗
要再顯示「顯示 資料表」視窗,
可以按工具列上 的按鈕
選取要建 立關聯的 資料表
資料庫關聯圖視窗 (cont’d)
資料庫關聯圖太過複 雜時,可以將部份的 資料表隱藏(快顯功 能表的「隱藏資料 表」,或按
「Delete」鍵刪除)
按下工具列上的按 鈕可以再次顯示資 料表的關聯(個別 或是全部)
建立一對一關聯
1、將「書籍資料表」的
「書籍名稱」拖曳到「書 籍資料表2」的「書籍名 稱」,會出現「編輯關 聯」視窗
這裡可以選擇要 建立關聯的欄位 2、因為兩個欄位都是
主索引鍵,所以建立的 是一對一的關聯
連接類型會 在查詢物件 中介紹
因為是由「書籍資 料表」拖曳到「書 籍資料表2」,所 以「書籍資料表 2」為參照資料表
外來鍵 - 強迫參考完整性
當「書籍資料表2」的
「書籍名稱」為外來鍵 時,要達到「參考完整 性」可以勾選此選項
更改(或刪除) 「書籍資料 表」資料表的「書籍名稱」欄 位資料時, 「書籍資料表2」
資料表的「書籍名稱」欄位是 否要一起更改(或刪除)
沒有勾選這兩個選項,將不允許 更改(或刪除)「書籍資料表」
的「書籍名稱」中已經被「書籍 資料表2」使用的資料
要勾選「強迫參考完整 性」時,欄位的資料型 態要一致;參照資料表 中不可以有被參照資料 表中沒有的值
資料庫關聯圖 - 強迫參考完整性
勾選「強迫參考完 整性」選項,會顯 示出資料表間的對 應關聯關係
沒有勾選「強迫參 考完整性」選項,
不會顯示出資料表 間的對應關聯關係 被選取的
關聯線會 變為粗線
建立一對多關聯
1、將「客戶資料」的
「客戶名稱」欄位拖曳到
「訂單資料」的「客戶名 稱」欄位,會出現「編輯 關聯」視窗
2、因為「客戶資料」
的「客戶名稱」欄位是 主索引鍵, 「訂單資 料」的「客戶名稱」欄 位則不是;所以會建立 一對多的關聯
欄位的查閱與關聯 - 查閱精靈
查閱精靈會 建立資料表 當欄位間有 間的關聯
關聯時,可 以利用「查 閱精靈」來 建立查閱
欄位的查閱與關聯 - 查閱精靈 (cont’d)
具有永久關聯的欄 位,無法再使用查 閱精靈,只能夠用 手動方式設定查閱
欄位的查閱與關聯 - 資料庫關聯圖
由查閱精靈所建立 的關聯,並不會勾 選「強迫參考完整 性」選項
如果資料表間具有 參考完整性關係,
要自己勾選「強迫 參考完整性」選項
子資料工作表
點選此處可以 展開或是關閉 子資料工作表
子資料 工作表 建立資料表間的關聯
後,有多個值的資料表 會成為有一個值的資料 表的子資料工作表(不 論是否具有參考完整性 關係)
子資料工作表 - 多資料表關聯
資料表和多個資料表間有關聯時,只有一個資料表會成為預設的子 資料工作表
「插入/子資料工作表」,可以選擇要使用的子資料工作表
一次只能顯示 一個子資料工 作表
子資料工作表 - 插入子資料工作表
選擇對應 的欄位
「插入/子資 料工作表」
子資料工作表 - 產生關聯
插入子資料工作表 時,若兩資料表間 沒有關聯,會詢問 是否要建立關聯
建立資料表間的 關聯(較少選擇 不建立關聯)
子資料工作表的子資料工作表
客戶會有多筆訂 單,訂單會有多 種不同的書
編輯、刪除關聯
被選取的 關聯線會 變為粗線
資料表的關聯 - 一對多關聯
資料表的主索引鍵和另一個資料表非主索引鍵欄 位間的關聯
「一」,因為主索引鍵只會有一個值
「多」,因為非主索引鍵欄位可以有多個不同的值
當關聯中的「非主索引鍵」為資料表的外來鍵 時,兩者間存在參照關係
「一」是被參照資料表,「多」是參照資料表
參照資料表為被參照資料表的子資料工作表
設定「強迫參考完整性」,可以確保資料的參考完整 性
主索引鍵可以做為外來鍵的「查閱」欄位
一對多關聯 - 參照與外來鍵
臺北發展史 250
書籍名稱 訂價 台北雜誌 300
書籍資料表
台北雜誌 台北雜誌 書籍名稱
15 002
訂單號碼 數量
20 001
訂購數量表
訂購數量表的「書籍」一定 是來自書籍資料表的資料;
所以,訂購數量表的「書籍 名稱」欄位參照了書籍資料 表的「書籍名稱」欄位,為 外來鍵
主索 引鍵
外來 鍵
一對多關聯 - 子資料工作表
點選此處可以 展開或是關閉 子資料工作表
子資料 工作表 建立資料表間的關聯
後,有多個值的資料表 會成為有一個值的資料 表的子資料工作表(不 論是否具有參考完整性 關係)
資料表的關聯 - 一對一關聯
資料表的主索引鍵(具有唯一值)和另一個資料 表主索引鍵(具有唯一值)間的關聯,常見的原 因為
分割不常用(或是群組)欄位所產生的資料表
主索引鍵同時為資料表的外來鍵時,兩者間存在 參照關係
在資料關聯圖中,拖曳的起始資料表是被參照資料 表,結束的資料表是參照資料表
勾選「強迫參考完整性」時,參照資料表將無法任意新增被 參照資料表中沒有的資料
兩個資料表可互為子資料工作表
參照資料表可以查詢被參照資料表中關聯欄位的值
一對一關聯
發展史 250
書籍名稱 訂價 台北雜誌 300
書籍資料表1
書號 450g
500g 重量 陳小風
臺北發展史
書籍名稱 作者 林小台 台北雜誌
書籍資料表2
主索
引鍵 主索
引鍵
一對一關聯 - 子資料工作表
子資料工 作表
子資料工作 表的子資料 工作表
資料表的關聯 - 永久性關聯
資料庫關聯圖中的關聯稱為永久性關聯
可由資料庫關聯圖、子資料工作表或是查閱精 靈等方式建立、產生
可直接套用在查詢、資料表等資料庫物件上
設定「強迫參考完整性」選項,可以維護資料
表間的參考完整性
資料表的關聯 - 暫時性關聯
執行多資料表的查詢時,若資料表間具有 關聯性,但是並未在資料關聯圖中建立永 久性關聯時,則可以在該查詢建立資料表 間的暫時性關聯
僅會作用在該查詢上,使用該查詢時關聯才存 在
當資料表間的欄位名稱相同時,查詢會自動建立
資料表間的暫時性關聯
暫時性關聯
欄位名稱不同時,
需要自行建立資料 表的暫時性關聯
欄位名稱相同時,
會自動建立資料表 間的暫時性關聯 暫時性關聯在介紹查詢物件時,還會再詳細說明