【问题标题】:linking two tables链接两个表
【发布时间】:2009-04-16 19:44:58
【问题描述】:

我有两个表:job 带有 jobid、jobdescription 等,user 带有 userid、jobid、name 等。

将两个 jobid 链接到表 user 中的同一 userid 的最佳做法是什么?

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

谢谢。

【问题讨论】:

    标签: database-design


    【解决方案1】:

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

    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
    

    【讨论】:

      【解决方案2】:

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

      你会有 3 张桌子:

      • jobjobid (PK)、jobdescription 等
      • useruserid (PK)、姓名等(注意,这里没有 jobid
      • userjobuseridjobid(两者的 PK 组合)

      【讨论】:

        【解决方案3】:

        我看到TheTXI已经给了你一个很好的答案,在他说的基础上再补充一点: 您所拥有的是用户 作业之间的多对多映射。每当遇到这种情况时,您都必须使用映射用户和作业的映射表。大多数情况下,会创建一个名为 UserJobs 的表,其中包含一个包含 jobid 和 userid 的复合键。希望对您有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-10-15
          • 2015-06-29
          • 2015-11-28
          • 2014-11-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多