我有两个表:作业包含jobid,jobdescription等,用户包含userid,jobid,name等。
将两个jobid链接到表用户中的同一用户标识的最佳做法是什么?
我可以使用存储同一用户作业条目的中间表来执行此操作,但我认为这是一种更优雅的解决方案。
谢谢。
答案 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张桌子:
答案 2 :(得分:0)
我看到TheTXI已经给了你一个很好的答案,添加更多他说的话: 你拥有的是用户< =>之间的多对多映射。工作。每当遇到这种情况时,您将不得不使用映射用户和作业的映射表。通常会创建一个名为UserJobs的表,其中包含一个包含jobid和userid的复合键。希望有所帮助。