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

除了我們前面所提的關係外,我們可以再依關係端的個體數細分為二元關係、三元關係與多元關係等三種關係。此外,兩個個體之間的關係,可依照參與者參與的關係實例數目可分為一對一關係(one-to-one)一對多關係(one-to-many)多對多關係(many-to-many) 等三種關係。除了可依關係分類外,又可以依關係的兩端的個體是否為必要對應(mandatory) 或非必要對應(optional),可以分為關係兩端都為必要對應(both entities mandatory)、一端為必要對應而另一端為非必要對應(one entity optional, one mandatory) 與兩端都為非必要對應(both entities optional) 等三種對應方式。此處的必要對應(mandatory)相當於我們以前提到的 ”完全參與” (Total Participation),而非必要對應(optional)相當於「部份參與」(Partial Participation)。
 

(1)一對一關係(one-to-one relationship)

 

假設每一個報告(Report) 有一個簡介(Abbreviation),而且每一個簡介都只對應一個報告。(One-to-one, both entities mandatory 的例子)

 
   

每一個部門(Department) 必須有一個主管(Manager),但是每一個員工最多只能當一個部門的主管。(one-to-one, one entity optional, one mandatory 的例子)

 
   

一些桌上型電腦(Desk_top) 被授予某些工程師(Engineer),但不是每一位工程師都必須有電腦。(one-to-one, both entities optional 的例子)

 
   

(2) 一對多關係(one-to-many relationship)

 

在一對多關係中,無論是必要對應(mandatory) 或是非必要對應(optional) 都不會影響其轉換方法。也就是將“1 端”個體中的主鍵當作“N 端”個體所轉換成的表格中的外來鍵。
 

每一位員工(Employee) 都只能為一個部門(Department) 工作,而且每個部門都至少有一位員工。(One-to-many, both entities mandatory 的例子)

 
   

每一個部門(Department) 出版一篇或多篇報告(Report)。但是並不是只有部門才能出版報告。(One-to-many, one entity optional, one unknown 的例子)

 
   

(3) 多對多關係(many-to-many relationship)

 

每一個專業組織(Prof-assoc) 可以有零位、一位或多位工程師(Engineer) 會員,每一位工程師可以參加零個、一個或多個專業組織。(Many-to-many, both entities optional 的例子)

 
   

(4) 遞迴關係(recursive relationships)

 

公司中任一員工(Employee) 允許與其他員工結婚。(One-to-one, both sides optional 的例子)

 
   

工程師(Engineer) 因專案不同而分組,每一組都有一位組長(Leader)。(One-to-many, “one” side mandatory, “many” side optional 的例子)

 
   

每一位員工(Employee) 可以與另一位或多位員工合寫一篇報告(Report),或是自己獨力完成一篇報告。(Many-to-many, both sides optional 的例子)

 
   
 

以下我們以例子說明三元關係中的一對一對一關係(one-to-one-to-one)、一對一對多關係(one-to-one-to-many)、一對多對多(one-to-many-to-many) 與多對多對多關係(many-to-many-to-many)。其轉換方式為將關係中所有的個體都轉換成關聯表格,再將三元關係轉成一個關聯表格表示,並以三元關係端的主鍵加入新產生的表格,而新的表格的候選鍵與主鍵由表格中的屬性(attribute) 中產生。關係中的“1 端”的數目可以決定功能相依性的個數,有關於功能相依性與主鍵的選擇將於後面章節介紹。
 

每一位技術人員(Technician) 對每一個專案只使用一台筆記型電腦(Notebook)。但是一位技術人員仍可以接不同的專案並且對於不同的專案使用不同的筆記型電腦。(One-to-one-to-one relationship 的例子)

 
   

每一位員工(Employee) 只能在單一地點(Location) 被指派一件專案(Project),不同的地點指派不同的專案。也就是說,員工在某一特定地點只能接一件專案;在某一特定的地點,能有多位員工同時為同一件專案工作。(One-to-one-to-many ternary relationships 的例子)

 
   

任一工程師(Engineer) 為某一特定專案(Project) 工作時會有唯一的直屬專案主管(Manager),但是一個專案主管可以有多個專案而且一位工程師可以接不同的專案,並且有其專案的直屬專案主管。(One-to-many-to-many ternary relationships 的例子)

 
   

每一位員工(Employee) 可以在不同的專案(Project) 中使用不同的才能(Skill),每一個專案可以有多位員工使用多種不同的才能。(Many-to-many-to-many ternary relationships 的例子)

 
   

其轉換方式很類似三元關係,也就是將關係中所有的個體都轉換成關聯表格,再將多元關係轉成一個關聯表格表示,並以多元關係端的主鍵加入新產生的表格,而新的表格的候選鍵與主鍵由表格中的屬性(attribute) 中產生。關係中的“1 端”的數目可以決定功能相依性的個數。