我们有这些关系:
Smith <=> Williams
Williams <=> Thomas
Smith <=> Thomas
Smith <=> Jones
这意味着威廉姆斯的史密斯朋友,反之亦然 如果你想找到像威廉姆斯这样的每个人的朋友,需要搜索双方 我在数据库中应用这种关系,如下所示:
id name1 name2
1 Smith Williams
2 Williams Thomas
3 Smith Thomas
4 Smith Jones
或者像这样:
id name1 name2
1 Smith Williams
2 Williams Smith
3 Williams Thomas
4 Thomas Williams
5 Smith Thomas
6 Thomas Smith
7 Smith Jones
8 Jones Smith
有没有更好的解决方案?
答案 0 :(得分:1)
您只需要两张桌子:
包含ID和名称的表[People]
和表[Relationship]
有两个id,每个ID都是FK到People id。
注意你可以考虑双向或单向的关系,这实际上取决于你的实现。当然,如果您的关系是单向的,则需要插入Smith&lt; =&gt;琼斯和琼斯&lt; =&gt;史密斯在你的关系表中。
这是一个Many-to-Many关系,但注意而不是关系是两个不同的表之间(与维基百科示例中的作者和书籍不同),您正在同一个表中的两个不同实体之间进行关系。
加分:如果您确实需要对两个人之间的关系进行分类,您可以使用第三个表格[RelationshipType]
进行分类,只需输入说明和ID,然后将此ID添加到关系表。