2012-05-11 138 views
2

您是否可以將SQL中的表中的外鍵設置爲具有2列主鍵的另一表中的外鍵僅引用其中一個主鍵列Oracle?具有包含2列的主鍵的表的外鍵引用

+3

你的意思是一個兩列主鍵嗎?你不能在一個表上有兩個主鍵...... –

+0

是的,這就是我的意思 – Spektor

+0

外鍵可以定義爲多列。但是,複合外鍵必須引用具有相同列數和相同數據類型的複合主鍵或唯一鍵。因爲複合主鍵和唯一鍵限制爲32列,所以組合外鍵也限制爲32列。 (在9i中,但我認爲它不同於更高版本。http://docs.oracle.com/cd/B10500_01/server.920/a96524/c22integ.htm) –

回答

1

外鍵必須引用整個主鍵或其他唯一約束。如果父表需要兩列來唯一標識一條記錄,那麼它的依賴者必須在其結構中包含兩列。

通過使用替代或合成主鍵(通常用序列生成)來避免複合外鍵的擴散是非常常見的。外鍵引用單列代理鍵。

複合商業密鑰仍應在父表中使用唯一約束強制執行。

有時候複合主鍵包含一個也是唯一的列。例如,這是一種強制執行弧的方式(超類型和子類型關係)。因此,PERSONS表將具有(PERSON_ID)作爲主鍵和(PERSON_ID,PERSON_TYPE)作爲唯一鍵。在這種情況下,依賴表可能會根據特定關係引用(PERSON_ID)或(PERSON_ID,PERSON_TYPE)。

1

PK-FK關係規則規定,列的數量必須相同,數據類型也應該相同。

+1

關於搜索引擎的事情是他們可以很容易地找到剽竊答案的原始來源:technet.microsoft.com/en-us/library/cc917573.aspx請不要試圖通過批發報價來爭取代表:這不是SO的精神。 – APC

相關問題