MySQL:在人与人之间建立联系

时间:2013-05-14 19:19:45

标签: mysql database-design

我有一张表“人物”(ID,姓名)

1, George
2, Nick
3, John
4, Paul

每个客户都可以连接到另一个客户(仅供参考) 例如乔治与保罗联系在一起

所以我创建了一个新表PeopleConnections(PeopleConnectID,PeopleID,ConnectedID)

我添加了人与人之间的关系

1, 1, 4 (George with Paul)
1, 2, 3 (Nick with John)
1, 2, 4 (Nick with Paul)

我需要在记录视图gui中显示所有关系。所以

  • 尼克必须显示:John, Paul
  • 保罗必须展示:George, Nick
  • John必须显示:Nick

这是正确的设计吗? 我应该添加什么外键?

2 个答案:

答案 0 :(得分:1)

这是一种many-to-many关系,在我看来这是一个正确的设计。您的外键应该是来自ID表的People。你已经在那个部分回答了自己。

答案 1 :(得分:0)

是的,您的设计通常是合适的。您应该在PeopleConnections.PeopleID和PeopleConnections.ConnectedID上放置外键约束。这两个都应该引用People.PeopleID。

您可能还希望对PeopleConnections.PeopleID和PeopleConnections.ConnectedID的聚合放置唯一约束,以防止重复关系。