如何在 mySQL table 中创建唯一的值组合,无论它们的顺序如何?
How do I make a combination of values unique in a mySQL table no mater what order they are in?
我正在创建一个涉及朋友系统的应用程序,例如 facebook 中的那个。我在我的 SQL 数据库中构造它的方式是让一个朋友 table 具有列 ID, accountID1, accountID2
以便记录友谊中涉及的两个帐户中的每一个。问题是可以用两种不同的方式来记录友谊,例如:
ID | accountID1 | accountID2
1 | 1 | 2
2 | 2 | 1
如果我使组合成为独一无二的,它并不能防止这种情况的发生。如何在 MySQL 中创建约束以防止友谊以两种不同的方式存在以确保数据完整性?或者是否有不同的方式来存储这些信息以防止出现此类问题?
我使用的最终解决方案是首先去掉朋友的ID table 并从两个帐户ID PrimaryKey(accountID0, accountID1)
中创建一个复合主键。这确保了它们的组合是唯一的。然后我创建了一个 "before Insert trigger" 来切换值,以便较小的 accountID 始终在 accountID0
中。这个方法效果很好,目前没出过问题。
我正在创建一个涉及朋友系统的应用程序,例如 facebook 中的那个。我在我的 SQL 数据库中构造它的方式是让一个朋友 table 具有列 ID, accountID1, accountID2
以便记录友谊中涉及的两个帐户中的每一个。问题是可以用两种不同的方式来记录友谊,例如:
ID | accountID1 | accountID2
1 | 1 | 2
2 | 2 | 1
如果我使组合成为独一无二的,它并不能防止这种情况的发生。如何在 MySQL 中创建约束以防止友谊以两种不同的方式存在以确保数据完整性?或者是否有不同的方式来存储这些信息以防止出现此类问题?
我使用的最终解决方案是首先去掉朋友的ID table 并从两个帐户ID PrimaryKey(accountID0, accountID1)
中创建一个复合主键。这确保了它们的组合是唯一的。然后我创建了一个 "before Insert trigger" 来切换值,以便较小的 accountID 始终在 accountID0
中。这个方法效果很好,目前没出过问题。