|
|
|
|
擴充性個體-關係模式也可以稱為補強性個體-關係模式(Enhanced E-R
Model)。因為個體-關係模式並不能完全表現現實中的所有個體間的關係,例如:父/子類別(Superclass/Subclass)
與屬性繼承(Attribute inheritance) 關係,因此有人提出擴充性個體-關係模式來解決。這裡作者只提出部份的特點來介紹。
|
|
|
特殊化(Specialization)
和一般化(Generalization)
可說是一體兩面的觀念。一般化是用來強調各個體類型間的共同性;而特殊化則正好相反,特殊化是用來強調各個體類型間的差異性。在個體關係圖中,特殊化和一般化的關係都是利用倒三角形圖形和『IS_A』關係來表示。
|
圖 1 特殊化或一般化的個體關係圖
|
所以IS_A
關係又被稱之為父類別/子類別關係(superclass/subclass
relationship)。從父類別和子類別的觀點來說,特殊化可說是用來定義某一個個體類型中所有的子類別,而一般化正好相反,它是依據數個個體類型的共通性來定義這些個體類型的父類別。
|
有關於特殊化關係的限制可分為: |
|
|
|
「非連結性限制」(Disjointness constraints) |
|
「完整性限制」(Completeness constraints) |
|
圖 2 非連結限制與完全特殊化的例子
圖 3 部份特殊化與允許重覆的例子
|
我們可以把以上圖 2 與圖 3 的員工個體關係圖合併成為一個個體關係圖,如圖 4 所示: |
圖 4 員工的特殊化個體關係圖
|
圖 5 部份特殊化與非連結限制的例子
|
圖 6 完全特殊化與允許重覆的例子
|
|
將一般化和特殊化的關係類型轉換成關聯式綱要的最常見三種方法為: |
|
|
|
對上層的父類別個體類型建立一個關聯式綱要R;此時,關聯式綱要R包含了上層個體類型中所有的屬性。而對於每一個低層的子類別個體類型而言,都另外再建立一個新的關聯式綱要
Ri。而在 Ri 中,除了包含該低層個體類型中所有的屬性外,同時亦包含了該個體類型的父類別個體類型中的主鍵。以圖 2
的個體關係圖而言,我們可以轉換出下列的三個關聯式綱要:
員工(身分證字號,姓氏,名字,住址,薪資型態)
月薪員工(身分證字號,月薪)
時薪員工(身分證字號,時薪)
|
|
|
|
第二種轉換法與前一種轉換方式最大不同的地方是直接對上層的父類別個體類型建立一個關聯式綱要
R,而不另外分別再對下層子類別個體類型建立其所屬的關聯式綱要 Ri。而在關聯式綱要 R
中,除了包含該類別個體類型中所有的屬性外,尚須包含該個體類型的子類別個體類型中所有的屬性。以圖 2
的個體關係圖而言,我們可以轉換出下列的關聯式綱要:
員工(身分證字號,姓氏,名字,住址,薪資型態,月薪,時薪)
|
|
|
|
第三種轉換法與前兩種轉換方式最大不同的地方是直接對每一個低層的子類別個體類型都建立一個關聯式綱要 Ri,而不另外再對上層父類別個體類型建立其所屬的關聯式綱要
R。而在關聯式綱要 Ri 中,除了包含該個體類型中所有的屬性外,尚須包含該個體類型的父類別個體類型中所有的屬性。以圖 2
的個體關係圖而言,我們可以轉換出下列的關聯式綱要:
月薪員工(身分證字號,姓氏,名字,住址,薪資型態,月薪)
時薪員工(身分證字號,姓氏,名字,住址,薪資型態,時薪)
|
|
|