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
并不意味着相反。但是,在您的情况下,它可能会这样做,在这种情况下,要么以两种方式存储关系,要么编写查询以便同时检查这两种方式。一般来说,前者比后者快,因为查询更简单。