第二章 概念設計與關聯式資料模式 黃仁鵬 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 1
2-1 個體 - 關係模式 (E-R Model) 資料庫結構包括 : 1. 資料型態 (Data Types) 2. 資料關係 (Relationships) 3. 整合限制 (Integrity Constraints) 4. 運算 (Operations) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 2
資料模式種類 概念性資料模式 (Conceptual Data Model) 個體 - 關係模式 物件資料模式 表示性資料模式 (Representational Data Model) 階層式資料模式 (Relational Data Model) 網路式資料模式 (Network Data Model) 關聯式資料模式 (Relational Data Model) 實體資料模式 (Physical Data Model) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 3
2-1-1 個體 (Entities) 資料庫中的資料描述了真實世界的抽象化情形, 每個物件在個體 - 關係模式中被表示成個體 依其存在條件又可分為兩類 : 1. 弱個體 (Weak Entity) 2. 一般個體 (Regular Entity) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 4
2-1-2 屬性 (attributes) 屬性可分為下列五種型態 : 1. 單一屬性 (Single attributes) 2. 多值屬性 (Multivalued attributes) 3. 複合屬性 (Composite attributes) 4. 衍生屬性 (Derived attributes) 5. 虛值 (Null Value) 屬性可分為 : 可適用的虛值 (Applicable Null Values) 不可適用的虛值 (Inapplicable Null Values) 完全不知道的虛值 (Totally Unknown) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 5
2-1-3 鍵值 (Key): 鍵值是用來識別每一個個體的屬性, 其屬性是唯一的, 兩個不同的個體不可以有相同的鍵值 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 6
2-1-4 關係 (Relationship) 關係為不同個體 (Entities) 間的一種結合性 (Association) 依參與者參與的關係實例數目, 可分為 : 一對一 (One-to-one, 1:1) 一對多 (One-to-many, 1:N) 多對多 (Many-to-many, M:N) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 7
一對一 (One-to-one, 1:1) 一對一關係是指參與關係的兩個個體之基數都為一 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 8
一對多 (One-to-many, 1:N) 一對多關係是指關係一邊的一個個體實例與關係的另一邊的多個個體實例有參與關係 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 9
多對多 (Many-to-many, M:N) 多對多關係是指參與關係的兩個個體之基數都大於一 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 10
2-1-5 子型態 (Subtypes) 子型態會繼承所有父型態的屬性與關係, 除此之外, 各個子型態可以產生比父型態多出數個特有的屬性與關係 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 11
2-1-6 個體 - 關係圖 個體 - 關係模式可以用 個體 - 關係圖 (E-R Diagram) 來加以完整描述 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 12
個體 (Entity) Employee Dependent 一般個體 弱個體 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 13
屬性 (attribute) Dno Locations Fname Lname Age 一般屬性多值屬性複合屬性衍生屬性 Name 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 14
子型態 (Subtype) 與父型態 (Supertype) 教師 專任 兼任 教授 副教授 助理教授 講師 教授 副教授 助理教授 講師 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 15
關係 (Relationship) N Works_on M 1 N dependents_of 一般關係 弱關係 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 16
一對一 完全參與 與 部分 參與 的 E-R 圖 Employee 員工 (empno) Manages 管理 Department 部門 (deptno) 1001 1002... 10 2001 2002 3001 3002 20 30 40 50 員工 1 1 管理 部門 4001 5001... 部份參與 (Partial Participation) 完全參與 (Total Participation) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 17
一對多 部分參與 的 E-R 圖 Customer 客戶 (accountid) Rents 租借 Videotape 錄影帶 (videotapeid) 101 102 103 104 101 123 145 90987 99787 客戶 1 N 租借 錄影帶 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 18
多對多 完全參與 的 E-R 圖 Customer 客戶 (accountid) PreviouslyRented 以前租借 Videotape 錄影帶 (videotapeid) 101 102 103 104 101 123 145 90987 99787 客戶 M 以前租借 N 錄影帶 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 19
多對一 完全參與 與 部分 參與 的 E-R 圖 Employee 員工 (empno) Works for 工作於 Department 部門 (deptno) 1002... 2001 10 20... 3001 3002... 30 40 50 員工 N 1 工作於 部門 4001... 完全參與 (Total Participation) 部份參與 (Partial Participation) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 20
2-1-7 利用 ER Model 概念設計 的步驟 1. 根據客戶的需求定義有興趣的個體與關 係 2. 定義這些關係的基數 (Cardinality) 3. 細部定義這些個體與關係的屬性 4. 定義這些屬性的基數 (Cardinality) 5. 定義這些屬性的資料型態 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 21
2-1-8 如何繪製 E-R 圖 系統開發者通常是以訪談的方式, 將問題及需求作成文字型式的記錄 然後再把文字轉成 E-R 圖 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 22
繪製 E-R 圖通常有以下幾個原則 : 1. 句子中的 名詞 可對應成 個體, 動詞 可對應成 關係, 名詞的集合 可對應成 個體型態 2. 句子中描寫名詞的 形容詞 或 所有格 可對應成個體型態的 屬性 3. 句子中描述動詞的 副詞類 可對應成 關係上的屬性 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 23
例如 : 供應商 S 供應產品 P, 其中 供應商 和 產品 為名詞, 供應 為動詞, 因此可轉成以下的 E-R 圖 : 供應商 供應 產品 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 24
例如 : 供應商 S 的名字為華北企業公司, 其中 供應商 為名詞, 的名字 為所有格, 因此這句子可以轉成以下的 E-R 圖 : 供應商 名字 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 25
例如 : 供應商 S 供應數量 Q 的產品 P, 其中 數量 為副詞, 因此這句子可以轉成以下的 E-R 圖 : 供應商 供應 產品 數量 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 26
2-2 關聯式資料模式簡介 1970 年 E.F. Codd 提出關聯式資料模式理論, 關聯式資料模式的理論基礎來自數學的集合論 (Set Theory), 藉由關聯式資料模式達到以下的目標, 並且達到減少資料的重覆性與資料的一致性 : 1. 資料獨立 (Data Independence) 2. 便於溝通 (Communicability) 3. 集合處理 (Set Processing) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 27
關聯式資料庫系統的基礎理論基於資料 的關聯式模式理論, 使得關聯式資料庫 系統具有以下的特性 : 1. 資料結構 (Data Structures) 2. 整合限制條件 (Integrity Constraints) 3. 資料操作 (Data manipulation) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 28
2-2-1 資料結構 屬性名稱 (Attribute Name) 關聯表名稱 Emp 值組 (tuples) 屬性值 (Attribute values) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 29
鍵值有關的名詞 : 1. 超鍵 (Superkey) 2. 候選鍵 (Candidate Key) 3. 主鍵 (Primary Key) 4. 替代鍵 (Alternate Key) 5. 外來鍵 (Foreign Key) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 30
關聯表具備四個性質 1. 關聯表的值組是沒有順序的 2. 關聯表的屬性是沒有順序的 3. 關聯表中的屬性值是單元值 4. 關聯表中不含重複的數值 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 31
2-2-2 整合限制條件 (Integrity Constraints) 其目的是為了確保資料庫內部資料的一致性與完整性, 以避免因為新增 刪除與修改等操作而所造成的異常現象 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 32
關聯表格內的整合限制的種類 1. 個體整合限制 (Entity Integrity Constraints) 2. 值域整合限制 (Domain Integrity Constraints), 3. 參考整合限制 (Referential Integrity Constraints) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 33
個體中 屬性 (attributes) 的轉換 單值 (Single-valued) 多值 (Multivalued) 複合屬性 (Composite attributes) 衍生屬性 (Derived attributes) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 34
單值屬性 (Single-valued attributes) Project Pno Pnam e Location Project(Pno, Pname, Location) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 35
多值屬性 (Multivalued attributes) Dname Dno Locations Department Dept_Location(Dno, Location) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 36
複合屬性 (Composite attributes) Fnam e Lname Name (Fname, Lname) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 37
衍生屬性 (Derived attributes) 因為衍生屬性會因時間的改變而改變, 因此一個設計良好的資料庫並不會儲存衍生屬性 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 38
一般個體 的轉換 Fname Lname Address Project Name Sex Salary Bdate Pno Pname Location Ssn Employee Employee(Ssn, Bdate, Fname, Lname, Sex, Address, Salary) Project(Pno, Pname, Location) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 39
弱個體 的轉換 Fname Lname Address Name Sex Salary Bdate Employee 1 N Dependents_of Dependent Ssn Name Sex Bdate Relationship Dependent(Ssn, Name, Sex, Bdate, Relationship) 參考 Employee(Ssn,, ) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 40
多對多關係 的轉換 Fname Lname Address Name Sex Salary Bdate Ssn Employee N Works_on M Project Hours Pno Pname Location Works_on(Ssn, Pno, Hours) 參考 Employee(Ssn,, ) 參考 Project(Pno,, ) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 41
多對一 關係轉換 Fname Lname Address Name Sex Salary Dname Dno Lcations Bdate Ssn Employee N 1 Works_for Department Employee(Ssn, Bdate, Fname, Lname, Sex, Address, Salary, Dno) Department(Dno,, ) 參考 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 42
一對一關係的轉換 Fname Lname Address Name Sex Salary Dname Dno Locations Bdate Ssn Employee 1 Manages 1 Department StartDate Department(Dno, Dname, MgrSsn, StartDate) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 43
子型態 與 父型態 的轉換 子型態 (Subtype) 與 父型態 (Supertype) 轉換成 外來鍵參考 子型態與父型態的個體均會產生一個關聯表格 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 44
2-4 關係轉換 除了可依關係分類外, 又可以依關係的兩端的個體是否為 完全參與 (Total Participation) 或 部份參與 (Partial Participation), 可以分為 (1) 關係兩端都為 完全參與 (2) 一端為 完全參與 而另一端為 部份參與 (3) 關係兩端都為 部份參與 等三種對應方式 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 45
2-4-1 二元關係 (Binary relationships) (1) 一對一關係 (one-to-one relationship) R_no R_name Reprot 1 Has_abbr 1 Abbreviation Abb_no 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 46
(2) 一對多關係 (one-to-many relationship) Deptno Dname Department 1 Has N Employee Empno Ename 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 47
(3) 多對多關係 (many-to-many relationship) Empno Engineer M belongs_to N Prof_assoc Assoc_no Assoc_name 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 48
(4) 遞迴關係 (recursive relationships) 二元關係中如果關係兩端的個體為同一個體, 則我們稱為遞迴關係 (Recursive relationship) 無論是 完全參與 (Total Participation) 或是 部分參與 (Partial Participation) 都不會影響其轉換方法 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 49
一對一遞迴關係 Empno Ename Employee 1 1 is_married_to 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 50
一對多遞迴關係 Empno Engineer 1 N is_ group_leader_ of 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 51
多對多遞迴關係 Empno Ename Employee M N is_ coauthor_with 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 52
2-4-2 三元關係 (Ternary relationships) 轉換方式為將關係中所有的個體都轉換成關聯表格, 再將三元關係轉成一個關聯表格表示, 並以三元關係端的主鍵加入新產生的表格, 而新表格的候選鍵與主鍵由表格中的屬性 (attribute) 中產生 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 53
2-4-3 多元關係 (N-ary relationships) 將關係中所有的個體都轉換成關聯表格, 再將多元關係轉成一個關聯表格表示, 並以多元關係端的主鍵加入新產生的表格, 而新的表格的候選鍵與主鍵由表格中的屬性 (attribute) 中產生 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 54
2-5 擴充性個體 - 關係模式 擴充性個體 - 關係模式也可以稱為補強性個體 - 關係模式 (Enhanced E-R Model) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 55
2-5-1 特殊化和一般化 一般化 是用來強調各個體類型間的共同性 特殊化 是用來強調各個體類型間的差異性 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 56
特殊化 或 一般化 的個 體關係圖 姓氏 名字 身份證字號 住址 員工 IS_A 時薪員工 月薪員工 時薪 月薪 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 57
特殊化 關係的限制 非連結性限制 (Disjointness constraints) 完整性限制 (Completeness constraints) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 58
非連結性限制 滿足 非連結性限制 : 做 特殊化 處理後, 在低層次的子類別個體類型間, 交集的結果一定是空集合 d 來表示所有子類別皆滿足 非連結性限制 若不滿足 非連結性限制 時, 用 o 來表示所有子類別間有發生重疊的情形 (Overlap allowed) 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 59
完整性限制 完全特殊化 (Total specialization) : 對某一個個體類型做 特殊化 處理時, 在該個體類型中, 每一個個體都會出現在該個體類型的子類別個體類型中 用 雙線段 代表 完全特殊化 部份特殊化 (Partial specialization) : 對某一個個體類型做 特殊化 處理時, 在該個體類型中, 並非每一個個體都會出現在該個體類型的子類別個體類型中 以 單線段 代表 部份特殊化 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 60
非連結限制 與 完全特殊 化 的例子 姓氏 名字 身份證字號 住址 員工 非連結性限制 完全特殊化 定義屬性值 " 時薪 " d 薪資型態 " 月薪 " 定義屬性 定義屬性值 時薪員工 月薪員工 時薪 月薪 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 61
部份特殊化 與 允許重 覆 的例子 姓氏 名字 身份證字號 住址 員工 部份特殊化 o 允許重覆 收銀員 秘書 採購人員 倉管人員 會計技能 打字技能 採買技能 倉管技能 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 62
部份特殊化 與 非連結限 制 的例子 員工 d 主管 工程師 技術人員 秘書 部份特殊化 與 非連結限制 的例子 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 63
完全特殊化 與 允許重 覆 的例子 直銷會員 o 員工 顧客 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 64
2-5-2 特殊化和一般化的轉換 1. 對上層的父類別個體類型建立一個關聯式綱要 R; 此時, 關聯式綱要 R 包含了上層個體類型中所有的屬性 而對於每一個低層的子類別個體類型而言, 都另外再建立一個新的關聯式綱要 R i 而在 R i 中, 除了包含該低層個體類型中所有的屬性外, 同時亦包含了該個體類型的父類別個體類型中的主鍵 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 65
2. 第二種轉換法與前一種轉換方式最大不同的地方是直接對上層的父類別個體類型建立一個關聯式綱要 R, 而不另外分別再對下層子類別個體類型建立其所屬的關聯式綱要 R i 而在關聯式綱要 R 中, 除了包含該類別個體類型中所有的屬性外, 尚須包含該個體類型的子類別個體類型中所有的屬性 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 66
3. 第三種轉換法與前兩種轉換方式最大不同的地方是直接對每一個低層的子類別個體類型都建立一個關聯式綱要 R i, 而不另外再對上層父類別個體類型建立其所屬的關聯式綱要 R 而在關聯式綱要 R i 中, 除了包含該個體類型中所有的屬性外, 尚須包含該個體類型的父類別個體類型中所有的屬性 2009/3/26 資料庫系統理論與實務 - 使用 Oracle 67