Entity-Relationship Data Model(E-R Model)實體關係資料模型
建立資料庫系統的第一步, 就是分析我們要處理的資料有那些, 資料與資料之間
的關係如何. Entity-Relationship Data Model, 簡稱E-R Model, 是一種圖形
化的表示工具, 能讓我們對資料與資料間的關係做精確的描述.
所謂實體(Entity), 係指能由數個 "(屬性,值)對" 來描述的東西. 如俞旭昇這
個人, 我們可用(Name=俞旭昇, Address=國立暨南大學資管系, Age=35,
OfficePhone=49-915225)這幾個 "(屬性,值)對" 來描述. 又如微軟這家公司可用
(Name=Microsoft, Headquarters=Seattle, President=Bill Gates)來描述.
我們可以用任意的 "(屬性,值)對" 來描述一個實體, 但為了便於規納與認知,
通常我們會將這些東西加以分類(Entity Type). 同一類的東西可用一個名字來代表
(Entity Type Name), 它們都具有相同的屬性(Attributes). 同一類東西所組成的集合
稱為Entity Set, 或Extension. 如我們可將某公司內的所有員工歸為同一個Entity Type,
其Entity Type Name為Employee, 其共同屬性有Name,Age,Salary. 假設公司內共有
三名員工, 則
(John Smith,55,80k)
(Fred Brown,40,30k)
(Judy Clark,25,25k)
為"Employee"這個Entity Type的一個Entity Set. 也就是說Entity Type是指抽象的
概念, 而Entity Set則是由某些Entity所組成的集合.
Attribute根據其可能的值, 可以分成下列幾種:
- Simple Attribute(簡單屬性): 如Age這個屬性值的範圍為大於0的整數.
- Multivalued Attribute(多值屬性): 指這個屬性有多個值, 如一個人可以
有多個嗜號, 因此hobby這個屬性的值可為 "籃球,壘球,看電影".
- Composite Attribute(複合屬性): 指這個屬性可細分為多個子屬性, 如Address又可
分為Street,State,Zip Code,Country等部份. 又如Name可分為First Name, Middle Name,
Last Name等部份.
- Derived Attribute(衍生屬性): 指這個屬性的值是由其它屬性計算出來的, 本身
並不存在. 如Corporation這個Entity Type可以有NumberOfEmployee這個屬性, 但
這個屬性的值是由Employee這個Entity目前的Entity Set內的實體數目所決定, 因此
可以把NumberOfEmployee這個屬性視為Derived Attribute.
在E-R Model中, 我們是以屬性值來辨認出某一個Entity. 假設在某一個Entity Type中,
我們可以用某幾個屬性A1--An來找出唯一的Entity, 則我們稱這些屬性為Key Attributes.
例如Student是一個具有(StudentID,Name,Age,Address,Birthday)等屬性的Entity Type,
某一Entity Set是由國企系所有學生所組成, 在沒有學生同名的前提下, 學生姓名Name
這個屬性可視為此Entity Type的Key Attribute. 當然StudentID也是這個Entity Type的
Key Attribute. 特別要強調的是, Key Attribute是由某個Entity Set的資料來決定,
因此Name這個屬性對國企系所有學生所組成的Entity Type是Key Attribute, 但對由
所有暨南大學學生所組成的Entity Type可能就不是Key Attribute了. 若某Entity沒
有Key Attribute, 則稱為Weak Entity Type.
所謂Relationship是指兩個以上Entity之間的關係. 例如Employee(員工)和
Department(部門)之間可以有WorksFor的關係, 也就是說某員工在某部門工作.
Relationship也可以具有一些屬性, 如WorksFor這個Relationship可以有Date
這個屬性, 代表員工調到該部門工作的日期. 注意Date這個屬性不屬於Entity Employee
和Entity Department, 而是屬於Relationship WorksFor. 實體和關係間可以有下列的
特質:
- Partial或Total Participation: 所謂Total是指Entity Set內的
每一個Entity都一定存在有這樣
的關係. 如Employee和WorksFor之間就是Total, 因為每一個員工一定屬於某一
個部門. 而Employee(員工)和Supervision(管理)之間則是Partial, 因為不是每一
個員工都有下屬.
- Cardinality Ratio: 指每一個實體最多可能會有幾個關係. 如每一個
Employee最多有一個WorksFor的關係, 因為一個員工只能隸屬於一個部門, 而
Department則可有多個WorksFor的關係, 因為一個部門可以有多個員工.
- Structure Constraint(min,max): 是指一個實體
最少有min個最多有max個
關係. 如假設一個部門最少有四個員工, 則Department和WorksFor之間的
Structure Constraint為(4,N).
Weak Entity Type中的實體通常依附在另一個Entity Type的實體, 這個被依
附的Entity Type我們稱為identifying owner, 而這兩個Entity Type間的
關係我們稱為identifying relationship. Weak entity type和
identifying relationship之間一定total. 此外具有依附關係的
entity type並不見得一定是weak entity type. 例如DriversLicense(駕照)這
個entity type必須依附在Person這個entity之下, 但DriversLicense卻有
DriversLicenseNo(駕照號碼)這個key attribute. 被依附的entity稱為依附
在其下weak entity type的owner. 在同一個owner下的weak entity type通常
有一組attributes可以用來該weak entity type的key attribute, 我們稱為
partial key.
下面是E-R Model中用來表示本節一些觀念的圖示:
下面是在COMPANY schema的E-R Model表示圖:
下面是本校教務資料庫綱要的E-R Model表示圖: