2-1個體-關係模式(E-R Model) 2-2關聯式資料模式簡介  
2-3個體-關係模式與關聯式綱要的轉換 2-4關係轉換 2-5擴充性個體-關係模式
   
 

由個體-關係模式利用規則,可以快速地規劃資料庫的關聯性(Relation)。利用一些轉換規則將個體-關係模式中的個體或關係一一建立新的關聯式綱要或是將新的屬性加入已存在的關聯式綱要中。
 

這裡的個體-關係模式中的關係,我們先以二元關係為例說明,至於多元關係將於後面章節中再詳加介紹,因此,由個體-關係模式轉換成關聯式綱要規則如下:
 

個體中的「屬性」(attributes) 的轉換

 

(1) 若屬性是單值(Single-valued),則以個體所產生的關聯表格中的一個屬性表示。
(2) 若屬性為多值(Multivalued),則無法單純地用屬性表示。我們應增加一個關聯表格來記錄屬性的值,並利用外來鍵參考其原屬個體所產生的表格。此時新產生的關聯表格的主鍵,通常由原屬個體所產生之表格的主鍵與屬性的值合併而成。
(3) 若屬性為複合屬性(Composite attributes),所謂複合屬性是指該屬性是由幾個其他單值屬性(Single-valued attributes)所組成的,則由該複合屬性中的構成屬性取代原屬性。
(4) 若為衍生屬性(Derived attributes),因為衍生屬性會因時間的改變而改變,因此一個設計良好的資料庫並不會儲存衍生屬性,因為這樣子會減低系統的效能,所以不用表示於所屬的表格的關聯式綱要中。
 

「一般個體」的轉換

 

「一般個體」轉換成「表格」。每一個一般個體都以一個關聯表格表示,表格內的屬性(Attributes) 則由個體型態的屬性決定,決定方法如同前面介紹的。表格的主鍵則由屬性中挑選或利用人工增加一個屬性作為主鍵。
 

「弱個體」的轉換

 

「弱個體」轉換成「具有外來鍵的表格」。「弱個體」的轉換就是將「弱個體」所依附的個體的主鍵加入「弱個體」所產生的關聯表格中當作外來鍵。
 

「多對多關係」的轉換

 

「多對多關係」轉換成「具有外來鍵的表格」。對於多對多關係須轉換成一個關聯表格表示,而表格內的主鍵則由所有參與個體的主鍵合併組成,但須符合以下規定:
(1) 組合後,對每一個實例(Instance),都有一個唯一值。
(2) 不能存在有虛值(Null)。
若是不符合以上的條件時,必須利用人工的方式增加一個屬性作為主鍵。
 

「多對一關係」的轉換

 

「多對一關係」轉換成「關係中的“N 端”所產生的關聯表格中加入一個外來鍵參考到關係中“1 端”的表格」。
二元關係中如果關係的兩端的個體為同一個體,則我們稱為遞迴關係(Recursive relationship)。一對多遞迴關係,我們可以看做一對多關係的中特例,只是關係的兩端的個體為同一個體,轉換方法與原一對多關係的轉換方法相同。
 

一對一關係的轉換

 

因為一對一關係可以視為多對一關係的特例,所以「一對一關係」的轉換很類似一對多的轉換,也就是轉換成「把一端個體 P 的主鍵當成外來鍵並且連同關係上的屬性加入另一端個體 T 中」。選擇關係中的一端為 P 或 T 的原則如下:

(1). 如果只有一端為「完全參與」(Total Participation),則選擇具有「完全參與」的一端為 T。
(2). 如果兩端都不是「完全參與」,則選擇其中「基數」較少者(個數實例數目較少者)的個體為 T,另一端個體為 P。換句話說,也就是選擇資料記錄較少者的個體為 T,另一端個體為 P。
(3). 如果兩端都是「完全參與」,則表示兩端的個體的「基數」相同,因此可以將兩個個體與關係結合成一個關聯表格。如此可以省略兩個表格間的關聯查詢時間。
 

「子型態」(Subtype) 與「父型態」(Supertype) 的轉換

 

「子型態」(Subtype) 與「父型態」(Supertype) 轉換成「外來鍵參考」。子型態與父型態的個體均會產生一個關聯表格。因此,在子型態所產生的關聯表格中,增加一個外來鍵屬性來參考所屬的父型態之個體所產生的關聯表格。
 

 

個體-關係模式轉換成關聯式綱要的大致規則整理如下表:

個體-關係模式(E-R Model)

關聯式綱要(Relational Schema)

一般個體型態(Regular Entity Type)

關聯表格(Table)

弱個體型態(Weak Entity Type)

關聯表格+外來鍵(Foreign Key)

一對一與一對多關係型態(二元關係)

外來鍵(Foreign Key)

多對多關係型態(二元關係)

關聯表格+兩個外來鍵(Foreign Key)

鍵屬性(Key Attribute)

主鍵(Primary Key)

單值屬性(Single-valued Attribute)

屬性(Attribute)

複合屬性(Composite Attribute)

多個屬性

多值屬性(Multivalued Attribute)

關聯表格+外來鍵(Foreign Key)

衍生屬性(Derived Attribute)

不用表現在關聯式綱要中


雖然多元關係將在後面章節中才介紹,但是基本上轉換成關聯式綱要的規則很類似二元關係的轉換規則。
 


 

Employee(Ssn, Bdate, Fname, Lname, Sex, Address, Salary, SuperSsn, Dno)
主鍵:Ssn,外來鍵:SuperSsn, Dno。
Department(Dno, Dname, MgrSsn, StartDate)
主鍵:Dno,外來鍵:MgrSsn。
Project(Pno, Pname, Location, Dno)
主鍵:Pno,外來鍵:Dno。
Works_on(Ssn, Pno, Hours)
主鍵:(Ssn, Pno),外來鍵:Ssn, Pno。
Dependent(Ssn, Name, Sex, Bdate, Relationship)
主鍵:(Ssn, Name),外來鍵:Ssn。
Dept_Location(Dno, Location)
主鍵:(Dno, Location),外來鍵:Dno。
其資料庫關聯圖如下: