连接两个表

时间:2009-04-16 11:28:03

标签: database-design

我有两个表:作业包含jobid,jobdescription等,用户包含userid,jobid,name等。

将两个jobid链接到表用户中的同一用户标识的最佳做法是什么?

我可以使用存储同一用户作业条目的中间表来执行此操作,但我认为这是一种更优雅的解决方案。

谢谢。

3 个答案:

答案 0 :(得分:7)

三个表 - 用户,工作,用户工作

用户表包含与用户相关的信息

作业表描述了各个作业

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

答案 1 :(得分:1)

这称为many-to-many关系,在RDBMS中实现该关系的方法是junction table

你有3张桌子:

  • 职位 - jobid (PK),职位描述等
  • 用户 - 用户ID (PK),名称等(请注意,此处没有 jobid
  • userjob - 用户ID jobid (PK复合两者)

答案 2 :(得分:0)

我看到TheTXI已经给了你一个很好的答案,添加更多他说的话: 你拥有的是用户< =>之间的多对多映射。工作。每当遇到这种情况时,您将不得不使用映射用户和作业的映射表。通常会创建一个名为UserJobs的表,其中包含一个包含jobid和userid的复合键。希望有所帮助。