Php 如何存储两个客户机是相关的?

Php 如何存储两个客户机是相关的?,php,mysql,foreign-key-relationship,Php,Mysql,Foreign Key Relationship,假设我有一个简单的client表,其中列id和name填充了以下行: ID | NAME 01 | John 02 | Mary 03 | Smith 04 | George 05 | Allan 我想在我的数据库中存储约翰是玛丽、史密斯和艾伦的朋友 如何创建一个关系表来链接这些客户机 目前,我使用的表格如下: CLIENT_A | CLIENT_B 01 | 02 01 | 03 01 | 05 具有唯一的(客户端a、客户端b) 但这也

假设我有一个简单的
client
表,其中列
id
name
填充了以下行:

ID | NAME
01 | John
02 | Mary
03 | Smith
04 | George
05 | Allan
我想在我的数据库中存储约翰是玛丽、史密斯和艾伦的朋友

如何创建一个关系表来链接这些客户机

目前,我使用的表格如下:

CLIENT_A | CLIENT_B
   01    |    02
   01    |    03
   01    |    05
具有唯一的(客户端a、客户端b)

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

CLIENT_A | CLIENT_B
   02    |    01
   03    |    01
   05    |    01
   01    |    02
   01    |    03
   01    |    05
因此,我需要在PHP上检查两个方向,以找到我的客户关系并避免重复条目

有更好的方法吗?

如前所述,一个好方法是在创建关系之前检查关系

i、 当你试图插入一个关系时,检查它是否已经存在


是的,这会使您的保存速度变慢,但会增强您的一致性。

这个问题与您的问题类似。你做得对。在数学术语中,
A->B
并不意味着相反。但是,在您的情况下,它可能会这样做,在这种情况下,要么以两种方式存储关系,要么编写查询以便同时检查这两种方式。一般来说,前者比后者快,因为查询更简单。