我正在创建一个应用程序,其中包括一个朋友系统,比如facebook上的朋友系统。我在sql数据库中构造这个的方法是使用一个包含列的friend表 ID, accountID1, accountID2
因此,这两个帐户中的每一个涉及的友谊是值得注意的。问题是友谊可以用两种不同的方式来表达,例如:
ID | accountID1 | accountID2
1 | 1 | 2
2 | 2 | 1
如果我使组合唯一,它不能防止这种情况发生。我如何在mysql中创建一个约束,以防止友谊以两种不同的方式出现,从而确保数据的完整性?或者,是否有一种不同的方式来存储这些信息,以防止出现此类问题?
1条答案
按热度按时间mklgxw1f1#
我使用的最后一个解决方案是首先去掉friends表的id,并用两个帐户id生成一个复合主键
PrimaryKey(accountID0, accountID1)
. 这确保了它们的组合是唯一的。然后我创建了一个“before insert trigger”来切换这些值,以便较小的accountid始终处于accountID0
. 这种方法工作得很好,到目前为止没有问题。