我正在我的网络应用程序中实现“添加朋友”,因此用户可以将其他用户添加为恶魔。
我们有 2 个表:tbl_users和tbl_relations, tbl_users 具有注册用户的唯一 ID, tbl_relations 将存储朋友用户,例如 tbl_relations 中的一些行是:
id user_id_1 user_id_2
1 4 6
2 4 8
3 8 23
4 12 84
5 3 4
...
在上面的结果中,id 是 tbl_relations 的唯一 id,user_id_1 是 tbl_users 的外键,user_id_2 是 tbl_users 的外键,现在假设我们要查询并检查 id 为“4”的用户是否是 id 用户的朋友“9”与否,这里我们需要以两种方式发送查询,我的意思是:
SELECT * FROM tbl_relations WHERE (user_id_1 = '4' AND user_id_2 = '9') OR (user_id_1 = '9' AND user_id_2 = '4')
上面的查询对我来说似乎有点奇怪,我猜应该有另一种实现方式,也许是不同的数据库结构?
或者另一个查询,我们想获取id 为“4”和“8”的用户之间的共同朋友,在这种情况下我应该如何获得共同朋友?有没有更好的数据库结构呢?
我将不胜感激任何帮助。