我有哪些需要记录的人的过去和现在的职业数据的人员表。我有一个占领表和职业名称和代码列表。由于在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