AdSense

網頁

2018/3/28

ER-Model identifying relationships 與 non-identifying relationships的差別

今天用MySQL Workbench的EER Diagram正要畫ER-Model時,發現實體關係的連結線分成兩種,一種是實線(Identifying Relationships),另一種是虛線(Non-Identifying Relationships),兩者的區別如下。




Identifying Relationships

Identifying Relationships 是指子表(child table)的每一列資料必須依賴於母表(parent table)的資料而存在。母表的主鍵(primary key)欄位必須為子表的主鍵的一部分

例如一個人(PERSON)有多支電話號碼(PHONE_NUMBER),兩者是一對多的關係如下。


PHONE_NUMBER的主鍵除了電話號碼(phone_number)本身外,還必須加上外鍵(foreign key)人的編號(person_id)來組成。如果人不存在,當然就沒有屬於那個人的電話號碼。子表(PHONE_NUMBER)的一列資料必須依賴於母表(PERSON)的資料而存在,這就是Identifying Relationships,兩實體間的關係強烈。


Non-Identifying Relationships

Non-Identifying Relationships 是指子表的資料必須不依賴於母表的資料而存在。母表的primary key欄位不為子表primary key的一部分。

例如一個團體(GROUP)可有多個人(PERSON),兩者是一對多的關係如下。


但人(PERSON)可以不屬於任何團體,一個人的存在與否與團體是否存在無關,PERSON的團體編號(group_id)雖然是參照GROUP的外鍵,但不屬於PERSON主鍵的一部分。子表(PERSON)的一列資料不依賴於母表(GROUP)的資料而存在,這就是Non-Identifying Relationships。而兩實體的關係可以是選擇性或強制的,差別在於外鍵欄位是否允許null。


參考:

沒有留言:

AdSense