2009-04-16 167 views
1

我有两个表:工作与作业ID,jobdescription等,并用户与用户ID,作业ID,姓名等连接两个表

什么是最好的做法两个作业ID链接到同一个用户ID在表用户

我可以存储相同用户的作业的项目,但我想这是一个更优雅的解决方案一个中间表做到这一点。

谢谢。

回答

7

三个表 - 用户,工作,UserJobs

用户表包含关于用户的

作业表描述了各个作业

UserJobs表作为您的许多-TO-之间的桥梁信息许多使用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 
0

我看到TheTXI已经给你一个很好的答案,给他说了什么添加更多: 你有什么是用户之间的许多一对多映射< =>工作。而且,无论何时遇到这种情况,您都必须使用映射用户和作业的映射表。大多数情况下,会创建一个名为UserJobs的表,其中包含一个包含jobid和userid的组合键。希望有所帮助。

1

这就是所谓的many-to-many关系,在RDBMS中实现这一点的方法是拥有一个junction table

你最好有3个表:

  • 工作作业ID(PK),jobdescription等
  • 用户用户ID(PK),姓名等(注意,没有作业ID这里)
  • userjob的userid的JobID(两者的PK复合)