php - 关系型数据库中好友关系实现的最佳方案是什么?

查看:207
本文介绍了php - 关系型数据库中好友关系实现的最佳方案是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

社交类应用中,每用户与多个好友存在好友关系,设计的最佳方案是什么的呢?数据库白痴求助。

我目前想到的表设计是这样的:

CREATE TABLE friend_list (
    id         INT PRIMARY KEY,
    user_id    INT,
    friend_id  INT,
);



假设有两个用户user_1, user_2

创建好友关系是:

INSERT INTO friend_list (user_id, friend_id) VALUES ({user_1.id}, {user_2.id}), ({user_2.id}, {user_1.id});

解除好友关系是:

DELETE FROM friend_list WHERE (id = {user_1.id} or id = {user_2.id});

这样可以吗?总觉得怪怪的。

这种方案下,好友请求这种功能会变得十分复杂,不能有一条简单的SQL语句完成。

解决方案

只要一个用户关系表就行了;

字段:uidf_uid;且两个都为主键。无需ID自增长字段

  • uid为用户ID

  • f_uid为好友ID


说明:

  • 以上关系,如A与B为好友,那需要有2条记录。

  • 如果只是A单方面解除好友关系,只需要删除uid = A;B同理

  • 如果A、B互相删除,那两条记录同时删除

这篇关于php - 关系型数据库中好友关系实现的最佳方案是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆