我有哪些需要記錄的人的過去和現在的職業數據的人員表。我有一個佔領表和職業名稱和代碼列表。由於在Person表中,我不能將current_occupation作爲引用Occupation的外鍵,並且將past_occuption作爲引用Occupation的外鍵,我該如何解決這個問題?即使我添加一個輔助表來記錄Person和Occupation之間的關係,但我仍然遇到同樣的問題,即需要爲每個Person提供來自Occupation的兩個數據。如何解決需要兩個外鍵引用同一個表
0
A
回答
0
爲什麼沒有PersonOccupation
表附加字段建立索引他們的「最近」或者乾脆日期從他們申請。那麼從那個派生出current
和past_occupation
?
然後你只需要一個外鍵,OccupationId
在PersonOccupation
和Occupation
之間。
1
在Person表,你可以有current_occupation作爲一個外鍵引用職業,也past_occuption作爲一個外鍵引用職業。在關係窗口中,添加佔位表的第二個副本。然後創建一條關係線,從current_occupation到Occupation的一個副本,另一個從past_occuption到另一個副本。
但是,這種方法會限制你只有一個每個人past_occuption。如果你想記錄每個人以前的多個職業,Widor的設計建議會更好。
+0
設計只要求要記錄一個past_occupation,但想到我會按照Widor的建議,並添加一個額外的列來記錄無論是過去或現在的職業。我很感激幫助。 – 2012-02-14 09:01:00
1
SELECT Person.PersonId, Person.Name,
CurrentOccupation.OccupationName AS CurrentOcc,
PreviousOccupation.OccupationName AS PrevOcc
FROM (Person INNER JOIN Occupation AS CurrentOccupation ON Person.CurrentOccId = CurrentOccupation.OccupationId)
INNER JOIN Occupation AS PreviousOccupation ON Person.PreviousOccId = PreviousOccupation.OccupationId;
此代碼有職業表兩次在SQL中使用一次currentOcc外鍵,一次使用了previousOcc外鍵然而,上述的建議,以創建一個名爲PersonOccupations新表是一種更加靈活和強大的解決方案因爲它允許任何人數的職業。
相關問題
- 1. 兩個外鍵引用一個表
- 2. 如何製作需要兩個外鍵之一的表格?
- 3. 引用同一個表的兩個外鍵的mysql查詢
- 4. 引用相同列的兩個外鍵
- 5. CakePHP的兩個外鍵在同一表
- 6. 如何引用同一個表兩次?
- 7. POSTGRESQL外鍵引用兩個不同表格的主鍵
- 8. 從兩個外鍵引用到兩個不同的表使複合鍵錯誤
- 9. Mysql外鍵引用兩個列,它們是兩個不同表中的主鍵
- 10. 我需要一個或兩個唯一鍵索引用於此表嗎?
- 11. 一個主鍵列外鍵到另外兩個表列。如何解決數據錄入問題
- 12. 可以使用一個外鍵引用兩個不同的表嗎?
- 13. 在同一個表中兩次引用一個主鍵
- 14. 分解表與外鍵的兩個表
- 15. 同一個表和外鍵上的兩個主鍵
- 16. Django的:如何有多個外鍵,引用相同的表中的一個表
- 17. 有兩個外鍵約束引用同一個主鍵,都使用ON UPDATE CASCADE
- 18. VB.Net與訪問 - 設置兩個外鍵,引用同一個表/場
- 19. 如何引用外鍵到多個表?
- 20. MySQL:在一個表中引用另一個表的兩個外鍵
- 21. 使用兩個不同的外鍵創建一個表
- 22. 用兩個外鍵創建模型到同一個表
- 23. 我如何引用外鍵表兩次?
- 24. 瞭解爲什麼外鍵引用主鍵在同一個表中?
- 25. 如何刪除一個記錄時,兩個表的外鍵互相引用?
- 26. 對另一個表上的一個主鍵的兩個表主要引用
- 27. 如何使一個表的主鍵,同一表的外鍵
- 28. 來自一個表的同一列上的兩個外鍵
- 29. 兩個外鍵請參考另一個表的同一列?
- 30. 來自一個表的兩個外鍵
什麼讓你覺得你不能有2只個人不同的列有外鍵職業?這是什麼數據庫? – bohica 2012-02-13 16:48:09