在PHP MySQL中处理多对多关系的最佳方法

时间:2010-04-27 18:36:47

标签: php mysql many-to-many

我正在寻找处理PHP和MySQL中多对多关系数据库的最佳方法。

现在我有2张桌子:

用户(id,user_name,first_name,last_name)
连接(id_1,id_2)

User表中,id在添加时自动递增,user_name是唯一的,但可以更改。不幸的是,我无法控制user_name及其改变的能力,但我必须考虑到它。

Connections表显然是user1和user2的id。

连接表需要考虑这些可能的关系:

user1 --> user2 (user 1 friends with user 2 but not user2 friends with user1) 
user2 --> user1 (user 2 friends with user 1 but not user1 friends with user2) 
user1 <--> user2 (user 1 and user 2 mutually friends) 
user1 <-!-> user2 (user 1 and user 2 not friends) 

这部分不是问题,我遇到的问题是当这些关系分批改变时,保持这些关系的独特性。

可能的解决方案1:删除所有用户1的关系并使用更新的列表读取它们。我认为这可能对我的需求来说太慢了。

解决方案2?其他人遇到这个问题?我该如何最好地处理这个问题?

更新:区分关系:

我处理这样的关系:

user1, user2
user1, user3
user2, user1

在该示例中,以下情况属实:
user1跟随user2和user3
user2仅跟随user1但不跟随user3
user3不遵循user1或user2

1 个答案:

答案 0 :(得分:4)

如果您遇到唯一性问题,可以使用两个列(id_1,id_2)在Connections上使用复合主键。