今天用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。
參考:
沒有留言:
張貼留言