420 likes | 511 Vues
資料庫系統導論. 第四組作業報告. 6. 何謂「外來鍵」 ? 它與關聯式資料模式中之參考整合限制的關係為何 ?. ( 一 ) 定義 : (1) 外來鍵本身是個屬性,它的屬性值是參考別的基底關聯表或本身的基底關聯表的候選鍵而得來。 (2) 外來鍵不一定是所屬 relation 之主鍵的一部份 ,如果外來鍵是所屬關聯表之主鍵的一部份,那麼外來鍵的值就不會是虛值 (Null) ,因為如果是虛值的話,則該外來鍵就不可能成為主鍵的一部份。.
E N D
資料庫系統導論 第四組作業報告
6.何謂「外來鍵」?它與關聯式資料模式中之參考整合限制的關係為何?6.何謂「外來鍵」?它與關聯式資料模式中之參考整合限制的關係為何?
(一)定義: (1)外來鍵本身是個屬性,它的屬性值是參考別的基底關聯表或本身的基底關聯表的候選鍵而得來。 (2)外來鍵不一定是所屬relation之主鍵的一部份,如果外來鍵是所屬關聯表之主鍵的一部份,那麼外來鍵的值就不會是虛值(Null),因為如果是虛值的話,則該外來鍵就不可能成為主鍵的一部份。
(3)若外來鍵所參考到之候選鍵為複合(單一)屬性的話,則該外來鍵也一定是複合(單一)屬性,而且兩者的各個相對屬性的值域也都要一樣,但屬性名稱可以不一樣。(3)若外來鍵所參考到之候選鍵為複合(單一)屬性的話,則該外來鍵也一定是複合(單一)屬性,而且兩者的各個相對屬性的值域也都要一樣,但屬性名稱可以不一樣。
(二)舉例: (Ⅰ)說明外來鍵不一定是主鍵的一部分 Departments Employees
(Ⅱ)外來鍵與所參考的候選件都在同一個關 聯表中的例子 Employees
(三)參考整合限制: 定義: • 資料庫中不能有違法的外來鍵值。也就是說,在關聯表R2中的外來鍵FK,若參考到關聯表R1中的候選鍵CK時,則所有R2中非虛值的FK值,一定是R1中某值組的候選鍵值。
(2)若外來鍵有參考到relation的候選鍵時,則該候選鍵的值一定要存在。(2)若外來鍵有參考到relation的候選鍵時,則該候選鍵的值一定要存在。
(四)外來鍵的使用規則 1.外來鍵的虛值規則 : 決定外來鍵的值是否可以是虛值?如果外來鍵是主鍵的一部份,當然是不可以的,因為違反「參考整合限制」。如果外來鍵不是主鍵的一部份,那麼關聯表的設計者,就可以視實際應用,來決定是否允許外來鍵值可以是虛值。
2.外來鍵參考對象的刪除/更新規則: 關於外來鍵參考對象的刪除/更新規則,決定採用何種方法?我們在對外來鍵參考對象的刪除/更新時,如果沒有做好適當的控制,就很有可能會破壞參考整合規則。一般來說,對於外來鍵參考對象的刪除/更新規則,在做法下列幾種:
(1) 限制性做法(RESTRICTED):在刪除/更新某個關聯表中的某一筆值組時,若參考它的外來鍵端沒有相對的匹配值組的話,則可以做刪除/新增,否則不准。
(2) 連鎖反應做法(CASCADES):在刪除/更新某個關聯表中的某一 筆值組時,若參考它的外來鍵端有相對的匹配值組的話,則在刪除/更新後也要一併刪除/更新外來鍵端所有相對的匹配值組;否則,只要直接刪除/更新該筆值組即可。
(3) 虛值化的做法(NULLIFIES):在刪除關聯表中的某一筆值組時若參考它的外來鍵端有相對的匹配值組的話,則在刪除/更新之後,也要一併將外來鍵端所有相對的匹配值組的外來鍵值改成虛值,否則,只要直接刪除/更新該筆值組即可。這個做法的先決條件是:[外來鍵的虛值規則]必須是允許外來鍵值可以是虛值。
Books Orders Bookstors
12.請個舉一個例子說明在E-R diagram中常犯的扇形陷阱(Fan Trap)與斷層陷阱(Chasm Trap)
扇 形 陷 阱 假設員工與業務這兩個個體類型,在「個體-關係圖」中可以找到一條路將它們聯繫起來,而如果存在某些屬於員工中的個體會聯繫到兩個以上屬於業務的個體的話,就會產生扇形陷阱。出現問題:210與211這兩個員工所做的業務是1000或1001,所以問題在於不該把主管當作員工與業務的橋樑
主管 1 1 管理 管理 m m 業務 員工
解 決 方 案 由業務擔任橋樑的角色,結果產生數個員工做一個業務,而主管管理數個業務的現象。所以,員工與主管的關係透過業務仍然是多對一,而扇形陷阱也不會發生了,下列將「個體-關係圖」修正如下:
業 務 m 1 管理 做 m 1 員 工 主 管
斷 層 陷 阱 假設員工與設備這兩個個體類型,在「個體-關係圖」中可以找到一條路將它們聯繫起來,但如果存在某些屬於設備中的個體無法聯繫到屬於員工的任何一個個體時,就會產生斷層陷阱。出現問題:當我們透過員工來統計部門上的設備時,將會遺漏”書櫃”。
員 工 n 1 擁有 管理 m 1 部 門 設 備
解 決 方 案 所以必須為沒有員工管理的設備註明所屬的部門,修正後的圖多了「系別」擁有數個設備的關係,這樣斷層陷阱就不會出現,因為設備屬於何部門的資訊已經很清楚地存在表格中,下列將「個體-關係圖」修正如下:
員 工 n 1 擁 有 管 理 m 1 n 擁有 部 門 設 備
13.請查訪MS SQL Server中所提供的展示資料庫pubs,然後找出其中所有表格中的主鍵、外來鍵及其參考對象,並繪圖說明之?
如圖所示,其中有陰影的部分構成該關聯表中的主鍵(Primary Key),FK代表外來鍵(Foreign Key),所以會有箭頭指向它所參考的關聯表,AK則代表替代鍵(Alternate Key)。
1.「個體類型」 • 書 籍 類 別 • 書 籍 資 料 • 學 生 資 料
2.「關係類型」 每一個書籍類別可以有多本書籍,而每一本書只可以屬於一種書籍類別。 →「一對多」 每一位學生可一借多本書籍,而每一本書只可以被一位學生借。→「一對多」
3.「個體-關聯圖」 分類 書籍資料 m m 借書 1 1 學生資料 書籍類別
4.「個體-關聯圖」中,每個「個體」所需要的特性4.「個體-關聯圖」中,每個「個體」所需要的特性 ●每一個學生,含有學號、姓名、科系等屬 性。 ●每一本書籍,含有書籍編號、書籍名稱、出版社等屬性。 ●每一個類別,含有類別代號、類別名稱等屬性。
5.「個體-關聯圖」中,每個「關係類型」所需的特性5.「個體-關聯圖」中,每個「關係類型」所需的特性 ● 學生借書 ◇ 借書日期
書籍編號 書籍名稱 出版社 書籍資料 借書日期 m m 借 書 分 類 1 1 學生資料 科系 書籍類別 類別編號 學號 姓名 類別名稱 6.「個體-關聯圖」
7.針對「個體-關聯圖」中的每一個「個體類型」產生一個關連聯表7.針對「個體-關聯圖」中的每一個「個體類型」產生一個關連聯表 ● 學生資料 ● 書籍資料 ● 書籍類別
8. 針對「個體-關聯圖」中的每一個「關聯類型」產生一個關聯表 ● 借 書 ● 分 類
◇將「借書」及「分類」兩各關係關聯表,併入「書籍資料」個體關聯表中◇將「借書」及「分類」兩各關係關聯表,併入「書籍資料」個體關聯表中 ● 書籍資料