使用MySQL的一行建模双向关系

时间:2011-06-14 14:40:02

标签: mysql

假设我有一个MySQL表,我希望用它来建模两个实体(例如A和B)之间的关系。有三列:Person1,Person2和Relationship。让我们进一步说A和B是这个表中的人,并且可以有几种关系类型中的一种,例如是朋友,一方请求另一方成为朋友,等等。

是否有可能(并且更可取?)使用一行来执行此操作?似乎有一行代表关系的A-> B部分而另一个代表B->关系的一部分将是一个有点脆弱的设置,因为如果任何一个两个人忽略了更新,模特可能处于一个相当奇怪的状态(A认为B是朋友,B认为A是其他东西)。

我的问题的另一部分是:有效的查找效果如何?如果只有一行来表示关系,那么是否所有查询都不需要执行SELECT来检查它是否在Person1字段 Person2字段中?有没有更好的方法来建模这类数据?

(我意识到这个解释有点粗糙;如果您有任何澄清,请告诉我。)

1 个答案:

答案 0 :(得分:0)

您可以为请求关系的人,“被请求者”,关系类型(朋友等)以及关系是否已被“被请求者”批准