【问题标题】:How to set two foreign keys from one table?如何从一张表中设置两个外键?
【发布时间】:2015-03-10 19:12:06
【问题描述】:

我有两张表 USERS 和 FRIENDSHIPS,我需要在 FRIENDSHIPS 表中记录用户之间的友谊。我认为我应该使用 USERS 表中的两个外键,一个用于主用户,另一个用于他的朋友。我刚开始学习,所以我只知道在某种程度上使用 Workbench。我的问题是你如何从同一张表中设置两个外键?

【问题讨论】:

    标签: mysql foreign-keys mysql-workbench


    【解决方案1】:

    你的外键指向错误。

    一个“用户”可以有多个“好友”(零个、一个或多个),但一个“好友”只能与两个“用户”相关。

    在您的“friendship”表中添加两个约束,假设您的两列名为from_useridto_userid

    CONSTRAINT FK_friendship_from FOREIGN KEY (from_userid) REFERENCES user (id)
      ON UPDATE CASCADE ON DELETE CASCADE
    
    CONSTRAINT FK_friendship_to FOREIGN KEY (to_userid) REFERENCES user (id)
      ON UPDATE CASCADE ON DELETE CASCADE
    

    如果不清楚,请不要向“用户”表添加外键。外键应该从子表指向父表。

    举个例子:

    user
    id name   
    -- ------
     2 Peter
     3 Paul
     5 Mary
    
    friendship
    from_userid to_userid
    ----------- ---------
              2         3
              2         5
              3         3
    

    根据这些表格的内容,Peter (id=2) 有两个朋友,Paul (id=3) 和 Mary (id=5)。而保罗(id=3)有一个朋友保罗(他本人,id=3

    【讨论】:

      猜你喜欢
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-30
      • 1970-01-01
      • 2018-02-08
      • 1970-01-01
      相关资源
      最近更新 更多