資料庫ER-model

ER-model(實體關聯模式)
以資料為主要考量方向,適當的設計可以解決資料不一致的問題
基本組成為
entity(實體)
relationship(關係)

資料模型分為
Conceptual Data Model(概念資料模型)/High Level Data Model(高階資料模型):適合一般使用者與系統分析師之間溝通
Physical Data Model(實體資料模型)/Low Level Data Model(低階資料模型):提供給程式設計人員來實作

………………………………………………………………………………………………………………………….

ENTITY

entity type會包含
entity type name(實體型態名稱):通常都是table名稱
entity的attribute(屬性):通常都是table內的欄位名稱
entity的attribute value(屬性值):通常都是該欄位的值
ex:一個員工的entity可能會如下
員工(員工代號,姓名,住址)
員工是entity type name,員工代號,姓名,住址是attribute
ps:
Entity Type(實體型態):將數個性質相近的實體,彙整出共同的屬性及實體名稱

entity type分為
[strong entity(強實體)]
具有key attribute的entity
可獨立存在
[[weak entity(弱實體)]]
不具有key attribute的entity
無法獨立存在的entity,需依附在其他entity才可存在的entity

…..

attribute的類型
key attribute(鍵值屬性) 具唯一性質的欄位
 唯一識別該實體的屬性
 不可有重複值產生
 不可有Null Value(空值)的情形
 ex:員工編號
關係屬性
 用在relationshiprt的attribute,常發生在多對多關係

single attribute(單值屬性) ex:性別
multi attribute(多值屬性) ex:電話,學歷,經歷

Atomic Attribute(單元型屬性) 不能再被切割成更小的屬性 ex:縣市
Composite Attribute(複合型屬性) 可再被切割成更小不同屬性的組合
ex:地址,因為可以在被切成縣市,區,路,…等

Stored Attribute(儲存型屬性) ex:生日
Derived Attribute(衍生型屬性) 可從其他屬性值推算出來
ex:年齡,可由生日與目前時間推算出來

………………………………………………………………………………………………………………………….

RELATIONSHIP

relationship依connectivity有以下幾種
1  < R> 1 (一對一關係)
1 < R> n / m < R> 1 (一對多關係/多對一關係)
m < R> 
n (多對多關係)
ex:
一個學生可以選修多個課程,一個課程可以被很多學生修
[學生]—–M<選修>N—–[課程]

R(relationship)可分
< weak R(弱關係)>
[強實體] <弱R> [強實體]
ps:強實體的PK不會也是FK
< < strong R(強關係)>>
[強實體] <<強R/識別R>> [[弱實體]]
ps:實體的PK若也是FK,則為弱實體

參與關係:
部份參與
,該實體的鍵值屬性並不是每一個都會對應到另一個實體的鍵值屬性
peter chain表示法用1條線表示
全部參與,該實體鍵值屬性會完全對應到另一個實體的鍵值屬性
peter chain表示法用2條線表示
ex:
[學生]—===[監護人]
學生部份參與監護人 ,因為並非所有學生都有監護人
監護人全部參與學生 ,只要有監護人一定會對應到學生

cardinality(基數)
參與數的限制
[Entity]–{min,max}–< R>–{min,max}–[Entity]
min代表參與數,若是部份參與則為0,全部參數則為1
ex:以peter chain為例
[學生]-{1,4}–{5,30}-[課程]
學生 最少1課程,最多4課程
課程 最少5學生,最多30學生


………………………………………………………………………………………………………………………….

[entity1]—< R>===[entity2]
eq
[entity1]–{0,x}–< R>=={1,y}==[entity2]
部份參與則min是0,全部參與則min是1
eq
[entity1]–{0,x}–y< R>x=={1,y}==[entity2]
在peter chain,本地entity的max代表對方entity的connectivity
若entity1的max為1則該entity只對應1個到entity2
若entity1的max為n則該entity可對應n個到entity2
ex:
以下以peter chain表示法為例
一個學生不一定要有監護人,但只能有一位監護人,而一位監護人可監護多位學生
[學生]—===[監護人] eq
[學生]–{0,1}–< R>=={1,n}==[監護人] eq
[學生]–{0,1}–n< R>1=={1,n}==[監護人]
一個學生不一定要有監護人,但可同時有多位監護人,而一位監護人只可監護一位學生
[學生]—< R>===[監護人] eq
[學生]–{0,n}–< R>=={1,1}==[監護人] eq
[學生]–{0,n}–1< R>n=={1,1}==[監護人]
ex:
每一個科系僅會有一個學生代表,參與該科系的科系會議,並且不需要將歷年的學生代表記錄,只要記錄目前的學生代表即可
換句話說,學生只能代表一個科系,一個科系只能讓一個學生當代表
[學生]–{0,1}–1<代表>1=={1,1}==[科系]
ex:
每一門課程必須限制學生的修課人數,最少必須達到五人,最高不得高於五十人選修該課程,而學生不一定每個都要修課
換句話說,學生可以修多個課程,一個課程可以被很多學生修
[學生]–{0,n}–m<選修>n=={5,50}==[課程]

……………………

爪圖表示法
{0,n} = 圖示 o< 或 >o
{0,1} = 圖示 o| 或 |o
{1,1} = 圖示 | |
{1,n} = 圖示 |<
ps:
{x,y}意義如下
y=peter chain的connectivities
x表示參與關係,若為| 表示部份參數,若為o表示全部參與

爪圖表示法和peter chain表示法比較
[E1]o| {0,1} ——– {1,1} | | [E2] = [E1]—{1,1}—1< R>1—{0,1}—[E2]
[E1]o| {0,1} ——– {1,N} |< [E2] = [E1]—{1,N}—1< R>N—{0,1}—[E2]