|
|
 |
|
資料庫系統為了解決真實世界的問題,將真實世界的情況抽象化。而資料模式(Data Model)
是一種抽象化的方法,用以描述真實世界的情況。利用資料模式來將真實世界抽象化成為資料庫結構的性質。而資料庫結構包括了:
|
 |
資料型態(Data
Types) |
 |
資料關係(Relationships) |
 |
整合性限制(Integrity
Constraints) |

|
運算(Operations) |
|
而在資料庫領域中,資料模式又因不同的目的與用途而可分為以下幾種:
|
 |
概念性資料模式(Conceptual Data Model) |
 |
表示性資料模式(Representational Data
Model) |
 |
實體資料模式(Physical Data Model) |
|
概念設計是將使用者對資料庫的需求,利用概念綱要表示。常用的概念性設計是使用個體-關係模式(Entities-Relational
Model,簡稱E-R Model)為工具。
|
 |
|
資料庫中的資料描述了真實世界的抽象化情形,每個物件在個體-關係模式中被表示成個體。而依其存在條件又可分為兩類: |
 |
弱個體(Weak
Entity) |
 |
一般個體(Regular Entity) |
|
|
|
 |
|
每一個個體都有一些屬性來描述它,而同一類型的個體具有共同的屬性,例如:所有員工都具備員工代碼、姓名、薪資、所屬部門等等屬性。屬性可以是下面的型態: |
 |
單一屬性(Single attributes)
|
 |
多值屬性(Multivalued
attributes) |
 |
複合屬性(Composite attributes) |
 |
衍生屬性(Derived attributes) |
 |
虛值(Null Value)屬性:

|
可適用的虛值(Applicable Null Values) |

|
不可適用的虛值(Inapplicable Null Values) |

|
完全不知道的虛值(Totally Unknown) |
|
|
|
|
 |
|
鍵值是用來識別每一個個體的屬性,其屬性是唯一的,兩個不同的個體不可以有相同的鍵值。例如:身份證號碼為人的鍵值。鍵值可能為單一屬性,但有時可能必須結合兩個或兩個以上的屬性才有唯一性存在,因此鍵值可能是複合屬性。
|
 |
|
關係為不同個體(Entities) 間的一種結合性(Association),定義為參與某一關係的個體型態之個體實例數目。通常我們使用
0,1,N 三個基數來表示。0 表示沒有個體實例參與關係。1
表示一個個體實例參與關係。N
表示有一個以上的個體實例參與關係。在關係中介入的個體稱為該關係的「參與個體」(Participant)。關係中參與個體的個數稱為該關係的階度(Degree)。
假設 R,代表一個關係型態(Relationship Type),個體型態(Entity Type) E 為 R 的參與個體。如果 E
中的每一個實例(Instance) 都至少參與 R 中的一個實例時,稱 E 在 R 中的參與是「完全參與」(Total
Participation);否則稱之「部份參與」(Partial
Participation)。
|
兩個個體之間的關係,可依照參與者參與的關係實例數目,可分為: |
 |
一對一(One-to-one, 1:1) |
 |
一對多(One-to-many, 1:N |
 |
多對多(Many-to-many, M:N) |
|

圖 1 完全參與的例子與部份參與的例子(一對一關係)
|

圖 2
一對多的例子
|

圖 3
多對多的例子 |
 |
|
以不同的角度來看個體時,一個個體可以再細分為多個不同的型態,稱之子型態(Subtype),而原來的個體型態稱為父型態(Supertype)。
|

圖 4 子型態的例子 |
 |
|

圖5
員工、部門與專案的個體-關係圖 |
個體-關係模式可以用“個體-關係圖(E-R Diagram)”來加以完整描述,其規則如下: |

|
個體(Entity) |
|
每一個個體以一個矩形代表。若是一般個體(Regular Entity),則以單框矩形表示;若是弱個體(Weak Entity)
則以雙框矩形表示。
|
|
|
|
|
 |
屬性(attribute) |
|
每一個屬性以一個橢圖形表示,若為主鍵(Primary Key),則在其屬性名稱下加底線;若為多值屬性(Multivalued),則為雙框圖形。複合屬性(Composite
attributes) 與衍生屬性(Derived attributes) 的表示,如下圖所示。
|
|
|
 |
子型態(Subtype) 與父型態(Supertype) |
|
子型態與父型態之間以直線連接。
|
|
 |
|
|
 |
個體與個體之間的關係(Relationship) |
|
個體間的關係以菱形表示,若是一般關係則以單框菱形表示;若為弱關係則以雙框菱形表示。
|
|
|
 |
「完全參與」 (Total Participation) 與
「部份參與」(Partial Participation) |
|
我們以雙橫線來表示
「完全參與」。若是「部份參與」(Partial Participation)則我們以橫線代替。例如:圖 6
為一對一「完全參與」與「部份參與」E-R 圖,圖 7 為一對多「部份參與」E-R 圖,圖 8 為多對多「完全參與」E-R 圖,圖
9 為多對一「完全參與」與「部份參與」E-R 圖。
|
|

圖
6一對一「完全參與」與「部份參與」E-R 圖
|
|

圖 7
一對多「部份參與」E-R 圖
|
|

圖8多對多「完全參與」E-R 圖 |
|

圖 9多對一
「完全參與」與「部份參與」E-R 圖
|
|
 |
|
要如何將使用者的需求繪製成E-R圖(E-R
Diagram)呢?系統開發者通常是以訪談的方式,將問題及需求作成文字型式的記錄。然後再把文字轉成E-R圖通常有以下幾個原則:
|
1.
句子中的「名詞」可對應成「個體」,「動詞」可對應成「關係」,「名詞的集合」可對應成「個體型態」。例如:”供應商 S 供應產品
P”,其中「供應商」和「產品」為名詞,「供應」為動詞,因此可轉成以下的E-R 圖: |

|
2.
句子中描寫名詞的「形容詞」或「所有格」可應成個體型的「屬性」。例如:”供應商 S
的名字為華北企業公司」,其中「供應商」為名詞,「的名字」為所有格,,因此這句子可以轉成以下的E-R 圖: |
 |
3.
句子中描述動詞的「副詞類」可對應成「關係上的屬性」。例如:”供應商 S 供應數量 Q 的產品
P”,其中「數量」為副詞,因此這句子可以轉成以下的E-R 圖: |
 |
|