2012-03-17 79 views
0

無法識別已瞭解的關係主要思想:識別和非識別關係

一個識別關係是當一個子錶行的存在依賴於父表中的一行。這可能會引起混淆,因爲現在很普遍的做法是爲子表創建僞密碼,但不要將子鍵的外鍵設置爲子鍵的父鍵。從形式上來說,這樣做的「正確」方式是將孩子的主鍵作爲外鍵。但邏輯關係是,孩子沒有父母就不能生存。

示例:某人有一個或多個電話號碼。如果他們只有一個電話號碼,我們可以將其存儲在Person的一列中。由於我們希望支持多個電話號碼,因此我們製作第二個表PhoneNumbers,其主鍵包括引用Person表的person_id。

但是,如果person_id是主鍵,Person可以具有多個電話號碼?或者可能的person_id必須是複雜主鍵的一部分,並且不能單獨標識表中的項目?

回答

2

或者可能的person_id必須是複雜主鍵的一部分[…]?

沒錯。在您引用的示例中,PhoneNumbers的主鍵可能與(person_id, number)類似。這意味着沒有兩個記錄PhoneNumbers可能具有相同的person_idnumber;它們可以具有相同的person_id,並且它們可以具有相同的number,但不能同時存在。 (換句話說,person_idnumber合起來就是「唯一標識」PhoneNumbers中的記錄。)

+0

這就是我們所說的複合關鍵ruakh嗎? – Junaid 2012-06-05 11:16:45

+0

@Junaid:是的,確切的。 – ruakh 2012-06-05 14:10:14

+0

嗯,謝謝它清除了我的很多混亂:) – Junaid 2012-06-05 14:39:14