Download presentation
Presentation is loading. Please wait.
1
第四章 關聯模式 目的 關聯模式的定義 關聯模式的限制 完整的範例關聯模式(線上購物系統) 關聯模式的資料更新
實體關係圖轉成關聯模式的資料庫綱目 黃三益2007 資料庫的核心理論與實務第三版
2
目的 實體關係模式適合來描述迷你世界的資料需求,但在理論上卻不夠嚴謹,不方便用來當成DBMS的資料模式
關聯模式是1970年由英國裔的Codd博士所提出,該模式的定義嚴謹卻簡單易懂 黃三益2007 資料庫的核心理論與實務第三版
3
關聯模式的定義 關聯模式裡的最基本的組成元素稱為關聯 一個關聯就好像一個資料表
表中的每一列記載一串資料值,稱為一筆序列值 表中的每一行則用來記載一個屬性的屬性值 一筆序列值是描述真實世界裡的一個實體或一個關係的各個屬性值 一個關聯必須有一個相對應的定義,稱為關聯綱目(Relation schema),一個關聯綱目包括了關聯名稱和關聯的屬性,表示法為R(A1, A2, …, An) 黃三益2007 資料庫的核心理論與實務第三版
4
關聯模式的定義(Cont.) 黃三益2007 資料庫的核心理論與實務第三版
5
關聯模式的定義(Cont.) 一個資料庫是由數個關聯所成的集合 一個資料庫綱目是由數個關聯綱目所成的集合
一個關聯必須有一個關聯綱目,一個關聯綱目包括一個關聯名稱和數個屬性的定義 一個屬性包括一個屬性名稱和一個定義域 一個關聯是由數個n-序列值(n-tuple)所成的集合, 其中n為該關聯之關聯綱目的屬性個數 一筆序列值記載一串屬性值 每一個屬性值都是簡單且單值 黃三益2007 資料庫的核心理論與實務第三版
6
關聯模式的定義(Cont.) 由以上的定義裡,我們可以得出以下關聯模式的特性:
在一個關聯中,序列值是沒有順序的。因此不能說“請找出Student關聯的第二個序列值”(Why?) 在一個關聯中,不可以有兩筆序列值是一模一樣的(Why?) 一筆序列值中的屬性值是有順序的(依關聯綱目定義時的屬性順序) 。不過在觀念上,只要能對應序列值中的值和它們相對應的屬性,次序其實並不重要的 複合與多值的屬性不能出現在關聯中 黃三益2007 資料庫的核心理論與實務第三版
7
關聯模式的限制 序列值必須滿足某些限制(constraint)。如果一資料庫的所有關聯裡的序列值都滿足這些限制,我們就稱該資料庫是”一致的”
定義域限制:資料庫裡每一個關聯的每一筆序列的每一屬性值必需是其屬性定義域裡的單一值 pId=‘D123F45678’和phone={ , } 都違反定義域限制 關聯鍵限制 實體完整限制 參考完整限制 語意完整限制 迷你世界裡所需的一些其他的限制 黃三益2007 資料庫的核心理論與實務第三版
8
關聯模式的限制(Cont.) 關聯鍵限制 超級鍵(Superkey):由關聯綱目的數個屬性所組成,而且沒有任何兩筆序列值的這些屬性值完全相同
圖4-1的Student關聯為例,{ sId, name, bDate}﹑{ pId, bDate, address}﹑{ sId}﹑{ pId}都是超級鍵 關聯鍵是該關聯的一個最小超級鍵 以圖4-1的Student關聯為例,雖然{ sId, name, bDate}﹑{ pId, bDate, address}﹑{ sId}﹑{ pId}都是超級鍵。但只有{ sId}和{ pId}才是關聯鍵 一個關聯可有多個關聯鍵,但至少要有一個關聯鍵 黃三益2007 資料庫的核心理論與實務第三版
9
關聯模式的限制(Cont.) 對於每一個關聯,選定一個最具識別意義的關聯鍵稱為主鍵 (Primary key) , 其他的關聯鍵則稱為次要鍵
主鍵以底線標示。比如,Student關聯的表示法如下: 所謂關聯鍵限制指的是資料庫裡的每一關聯,沒有任兩個序列值的關聯鍵值是相同的 如果Student關聯裡有兩筆序列值的學號(sId)或身份證字號(pId)相同,即違反關聯鍵限制 學號 sId 姓名 name 生日 bDate 住址 address 主修 major 身分證字號 pId 黃三益2007 資料庫的核心理論與實務第三版
10
關聯模式的限制(Cont.) 實體完整限制 參考完整限制 資料庫裡的每一關聯的每一筆序列值的主鍵值不得為空值(但次要鍵值得為空值)
關聯模式裡最重要的一個限制,用來表示關聯間的關係 關聯間的關係是透過某些稱為外部鍵的屬性來表示,外部鍵必須參考到某一個關聯的主鍵,如下頁圖所示 參考完整限制指的是序列值裡的外部鍵值,如果不是空值,則該值必須存在於其所參考的關聯之主鍵值裡 黃三益2007 資料庫的核心理論與實務第三版
11
線上購物系統資料庫綱目 黃三益2007 資料庫的核心理論與實務第三版
12
練習4-2 參考上頁圖的資料庫綱目,請指出所有的外部鍵和其相對應的主鍵 關聯 外部鍵 對應之主鍵 Member introducer
Member的mId Author pNo Product的pNo Transaction transMid Cart mId tNo Transaction的tNo Browse Order mId+cartTime Cart的mId+cartTime Record 參考上頁圖的資料庫綱目,請指出所有的外部鍵和其相對應的主鍵 黃三益2007 資料庫的核心理論與實務第三版
13
關聯模式的限制(Cont.) 參考下頁圖的線上購物系統的範例資料庫,它是一致的,也就是說它滿足我們到目前所定義的所有限制。假設我們想插入以下三筆序列值到交易(Transaction)關聯裡會違反限制嗎? <’92001’, null,’cart’,null, ’070’,’sb’,’visa’,’ ’,’ ’> <’90112’,’c ’,’cart’, null, ’020’,’fb’,’master’,’ ’,’ ’> <’920101’,’d ’,’cart’, null, ’010’,’tb’,’visa’,’ ’,’ ’> 第三筆序列值違反參考完整限制 黃三益2007 資料庫的核心理論與實務第三版
14
黃三益2007 資料庫的核心理論與實務第三版
15
黃三益2007 資料庫的核心理論與實務第三版
16
練習4-3 參考圖4-4的資料庫,請問新增以下記錄到會員(Member)關聯後,會不會造成(i)關聯鍵限制 (ii)實體完整限制 (iii)參考完整限制被違反? (null, ‘C ’, ‘Dave’, , ’ ’, ‘高雄市蓮海路70號’, ‘b ’) (’c ’, ‘C ’, ‘Dave’, , ’ ’, ‘高雄市蓮海路70號’, ‘b ’) (’c ’, ‘A ’, ‘Dave’, , ’ ’, ‘高雄市蓮海路70號’, ‘b ’) (’c ’, ‘C ’, ‘Dave’, , ’ ’, ‘高雄市蓮海路70號’, null) (’c ’, ‘C ’, ‘Dave’, , ’ ’, ‘高雄市蓮海路70號’, ‘b ’) OK OK 黃三益2007 資料庫的核心理論與實務第三版
17
關聯模式的資料更新 所謂更新(Update)資料庫,包括以下三種運算: 不管是何種運算,都不可以違反任何關聯模式的限制
新增(Insert)一筆序列值 刪除(Delete)一筆序列值 修改(Modify)一筆序列值裡的某個屬性值 不管是何種運算,都不可以違反任何關聯模式的限制 如果參考完整限制因新增一筆序列值而違反,解決之道有二: 不允許該筆序列值的新增。 修改造成違反參考完整限制的外部鍵值。比如,若因新增<’920101’,’D ’,’cart’,….>至交易而造成參考完整限制被違反,則DBMS可改新增<’920101’,null,’cart’,….>至資料庫以維持參考完整限制 黃三益2007 資料庫的核心理論與實務第三版
18
關聯模式的資料更新(Cont.) 刪除一筆序列值時,如不考慮語意完整限制,則只可能違反參考完整限制(Why?)
如果參考完整限制因刪除一筆序列值而違反,解決之道有三: 不允許該筆序列值的刪除。 修改參考到該序列值的序列值之外部鍵值。比如如果刪除了主鍵值為’92666’ 的序列值 ,可將所有外部鍵值為’92666’的修改成空值(null)。 將有參考到該序列值的序列值也一併刪除(可能造成連鎖刪除) 至於該採取哪一種處裡的方式,在實作上DBMS可允許設定 黃三益2007 資料庫的核心理論與實務第三版
19
關聯模式的資料更新(Cont) 練習4-4:參考圖4-4的資料庫,請問若刪除會員編號為’b ’和’c ’的會員序列值,是否會違反參考完整限制? ANS: b 存在於會員、交易、瀏覽和購物車的外部鍵,所以會違反參考完整限制。 c 存在於交易、瀏覽和購物車的外部鍵,所以會違反參考完整限制。 黃三益2007 資料庫的核心理論與實務第三版
20
ERD轉成關聯資料庫綱目 為每一個實體型態產生一個關聯綱目,此關聯綱目的屬性及主鍵如下:
屬性:所有簡單和單值屬性┼所有複合屬性的展開成簡單屬性 主鍵:挑選一個關鍵屬性 黃三益2007 資料庫的核心理論與實務第三版
21
ERD轉成關聯資料庫綱目(Cont.) 為每個多值屬性,產生一個關聯綱目,此關聯綱目的屬性及主鍵如下:
屬性:所有組成屬性和一個外部鍵(參考到原隸屬實體型態之關聯綱目的主鍵) 主鍵:所有屬性 黃三益2007 資料庫的核心理論與實務第三版
22
ERD轉成關聯資料庫綱目(Cont.) 為每一個弱實體型態產生一個關聯綱目,此關聯綱目的屬性及主鍵如下:
屬性:所有組成屬性和(數個)外部鍵(參考到每一主實體型態之關聯綱目的主鍵) 主鍵:部分鍵屬性和所有外部鍵的組合 黃三益2007 資料庫的核心理論與實務第三版
23
ERD轉成關聯資料庫綱目(Cont.) 如果將預算此一弱實體型態當成計畫的多值複合屬性, 則可得到的ERD及其關聯模式如右圖所示
為什麼會有這樣的差別?那個較好? 黃三益2007 資料庫的核心理論與實務第三版
24
ERD轉成關聯資料庫綱目(Cont.) 對每一個1:1 之關係型態(R與S)
選擇一個完全參與此關係型態之實體型態(假定選R),在R的關聯綱目中加上一個參考到S關聯綱目主鍵的外部鍵 ,若此關係型態有屬性,則將這些屬性加到R中 假設線上購物系統裡規定每一筆交易一定要有購物車,則其ERD和相對應的關聯綱目如下頁圖所示 黃三益2007 資料庫的核心理論與實務第三版
25
ERD轉成關聯資料庫綱目(Cont.) 黃三益2007 資料庫的核心理論與實務第三版
26
ERD轉成關聯資料庫綱目(Cont.) 對每一個1:N 之關係型態(R與S)
選擇基數為N的實體型態(假定選R),並在R的關聯綱目中加上一個參考到S的外部鍵,若此關係型態有屬性,則將這些屬性加到R中 黃三益2007 資料庫的核心理論與實務第三版
27
ERD轉成關聯資料庫綱目(Cont.) 對每一個M:N 之關係型態(R與S),產生一個關聯綱目,此關聯綱目的屬性及主鍵如下:
主鍵:兩個外部鍵的組合 黃三益2007 資料庫的核心理論與實務第三版
28
實體關係模式轉成關聯模式(Cont.) 對每一個n元的關係型態(n > 2),
主鍵 若各實體型態上的基數比全為N,則n個外部鍵組合成主鍵。 若各實體型態上的基數比不全為N,則選定一個基數比為1的實體型態,其他n-1個實體型態外部鍵組合成主鍵。 黃三益2007 資料庫的核心理論與實務第三版
29
ERD轉成關聯資料庫綱目(Cont.) N:N:N 載運 Carries 進貨時間 cargoTime 供應商識別號 sId 商品編號
pNo 載運數量 loadAmount 黃三益2007 資料庫的核心理論與實務第三版
30
ERD轉成關聯資料庫綱目(Cont.) N:N:1 供應 Supplies 機器識別號 mId 零件識別號 pId 供應商識別號 sId
載運數量 loadAmount 黃三益2007 資料庫的核心理論與實務第三版
Similar presentations