2011-08-14 58 views
2

我有兩個表:是否有可能有一個外鍵沒有覆蓋引用表的整個主鍵?

表A:與一個複合主鍵。

CommonID (PK) | Month (PK) | some data... 
----------------------------------------- 
1    | May 2011 | ... 
1    | June 2011 | ... 
2    | May 2011 | ... 
2    | June 2011 | ... 

表B:參照表A

ID (PK) | A_CommonID (FK)| some data... 
----------------------------------------- 
...  | 1    | ... 
...  | 2    | ... 

正如你可以看到表B未引用整個主鍵,但它肯定會總是引用表A一個唯一的入口,因爲有指定使用月份的全局值,將用於SQL查詢中的A.Month

現在我的問題是,是允許還是違反數據庫設計的幾個規則?

我真的很感謝一個很好的答案,因爲我將在最後的文件中使用它,我必須爲我的學士學位寫作。

非常感謝!

+0

我不明白句子*,但它肯定會引用表A中的唯一條目,因爲...... *您能否澄清一下您的問題? – stakx

回答

1

不,這是不允許的。

如果您有由多個列的複合主鍵,你的外鍵也必須複合並引用參與主鍵的所有列

外鍵引用主鍵,整個鍵並沒有什麼,但關鍵(所以幫你科德):-)

你也許能夠做的是有一個單獨的唯一索引A_CommonIDTable A,以便您的Table B可以引用該唯一索引(而不是PK)。

相關問題