如何存储两个客户相关?

How to store that two clients are related?

假设我有一个简单的 client table,列 idname 填充了以下行:

ID | NAME
01 | John
02 | Mary
03 | Smith
04 | George
05 | Allan

我想在我的数据库中存储 JohnMarySmith 的朋友和 艾伦.

如何为 link 这个客户创建关系 table?

目前,我使用 table 比如:

CLIENT_A | CLIENT_B
   01    |    02
   01    |    03
   01    |    05

具有唯一性(client_a, client_b)

但这也允许我有一个重复的关系,具有相反的列值。

CLIENT_A | CLIENT_B
   02    |    01
   03    |    01
   05    |    01
   01    |    02
   01    |    03
   01    |    05

所以我需要在 PHP 查询两个方向以找到我的客户关系并避免重复条目。

有更好的方法吗?

正如 @halfer 所说,一个好的方法是在创建关系之前检查它。

即当您尝试插入关系时,请检查它是否不存在。

是的,它会让你的保存速度变慢,但会保证你的一致性。