我想如果這個簡單的數據庫建模是好的。特別是賬單表。 你們可以提出你的意見嗎?數據庫設計 - 與主鍵相同的外鍵?
1
A
回答
3
我想你問是否可以在EmployeeProject中的主鍵由兩個外鍵組成。如果我已經正確理解你的問題,那很好。
在結算中,使外鍵由兩個引用EmployeeProject的列組成是沒有問題的。 (在SQL中,foreign key (empNo, projectNo) references EmployeeProject (empNo, projectNo)
。)幾乎可以肯定不需要希望在這裏引用Employee和Project的兩個獨立外鍵。
賬單中的三列主鍵(SQL,primary key (billingNo, empNo, projectNo)
)允許這樣的數據。
billingNo empNo projectNo hoursBilled
--
1003 13 7 3
1003 13 6 2
1003 17 7 8
1004 13 7 3
1004 13 6 2
如果這是您的意圖,那麼您的方向是正確的。
3
它是完全可以接受的有一個外鍵列是一個表的主鍵的一部分。例如,這經常發生在相交表中,其實現了多對多關係。
有人發現用替代鍵代替複合鍵更好。當您使用外鍵列作爲主鍵時,您幾乎總是使用複合鍵,這些鍵可能會變得龐大而複雜。
如果您在此處搜索StackOverflow和其他地方,您可以找到關於自然與化合物與替代關鍵字的相對優點的廣泛和熱情的討論。如果您閱讀這些內容,您會發現有很多人會支持您在模型中定義主鍵的方式。
相關問題
- 1. 外鍵相同的主鍵
- 2. 數據庫設計中的外鍵 - 數據庫設計
- 3. 好的設計:2個表與一個外鍵到相同的主鍵
- 4. MySQL 2外鍵到相同的主鍵
- 5. Mysql數據庫...主鍵和外鍵
- 6. 數據庫規範化:外鍵=主鍵?
- 7. SQL數據庫設計外鍵
- 8. 數據庫設計 - NULL外鍵
- 9. 數據庫設計:外鍵困境
- 10. 數據建模兩個引用相同主鍵的外鍵
- 11. 訪問數據庫 - 同一表中的兩個外鍵與相同的主鍵相關
- 12. 數據庫設計:兩個表相同的列,但不同的外鍵
- 13. 涉及指向不同表的外鍵的數據庫設計
- 14. 數據庫設計欄命名約定;主要和外鍵
- 15. 與外鍵相同的表
- 16. 數據庫設計外鍵是在我的數據庫
- 17. 簡單的數據庫設計與外鍵
- 18. kendo grid與數據庫設計中沒有關係的外鍵
- 19. 數據庫設計:需要複合鍵+外鍵
- 20. 數據庫設計:需要複合鍵+外鍵部分2
- 21. 數據庫設計 - 如何加強對錶的外鍵約束與代理鍵
- 22. 取決於相同主鍵的多個外鍵
- 23. 數據庫派生值與外鍵相同?
- 24. 數據庫設計問題:歧視性列與外鍵
- 25. 將一個或多個數據庫與主數據庫同步 - 外鍵
- 26. 數據庫設計:從多個數據源的主鍵
- 27. 主鍵和外鍵?
- 28. 與關聯表相同的外鍵?
- 29. 與主鍵不同
- 30. Nhibernate:外鍵必須與引用的主鍵具有相同的列數
除非你的外國人是獨一無二的,但你必須檢查i =在索引問題 –
它是但它可以在一個表中超過一個。我的問題是,如果在這個模型中有任何問題,因爲我在EmployeeProject中的主鍵,它也是外鍵和帳單相同的情況 – Camus