【发布时间】:2009-04-16 19:44:58
【问题描述】:
我有两个表:job 带有 jobid、jobdescription 等,user 带有 userid、jobid、name 等。
将两个 jobid 链接到表 user 中的同一 userid 的最佳做法是什么?
我可以使用存储同一用户的作业条目的中间表来做到这一点,但我认为这是一个更优雅的解决方案。
谢谢。
【问题讨论】:
标签: database-design
我有两个表:job 带有 jobid、jobdescription 等,user 带有 userid、jobid、name 等。
将两个 jobid 链接到表 user 中的同一 userid 的最佳做法是什么?
我可以使用存储同一用户的作业条目的中间表来做到这一点,但我认为这是一个更优雅的解决方案。
谢谢。
【问题讨论】:
标签: database-design
三个表 - 用户、工作、用户工作
Users 表包含与用户有关的信息
作业表描述了各个作业
UserJobs 表使用 UserID/JobID 的组合 PK/FK 充当多对多关系之间的桥梁。
示例
Users
UserID Name
---------------------------------
1 Doogie Howser
2 Steve Urkel
3 Forest Gump
Jobs
JobID JobDescription
---------------------------------
1 TV Character
2 Movie Character
3 Nerd
UserJobs
UserID JobID
---------------------------------
1 1
1 3
2 1
2 3
3 2
【讨论】:
这称为many-to-many 关系,在RDBMS 中实现该关系的方法是拥有junction table。
你会有 3 张桌子:
【讨论】:
我看到TheTXI已经给了你一个很好的答案,在他说的基础上再补充一点: 您所拥有的是用户 作业之间的多对多映射。每当遇到这种情况时,您都必须使用映射用户和作业的映射表。大多数情况下,会创建一个名为 UserJobs 的表,其中包含一个包含 jobid 和 userid 的复合键。希望对您有所帮助。
【讨论】: