社交类应用中,每用户与多个好友存在好友关系,设计的最佳方案是什么的呢?数据库白痴求助。
我目前想到的表设计是这样的:
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语句完成。
5 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
只要一个用户关系表就行了;
字段:uid、f_uid;且两个都为主键。无需ID自增长字段
uid为用户IDf_uid为好友ID
说明:
以上关系,如A与B为好友,那需要有2条记录。
如果只是A单方面解除好友关系,只需要删除
uid = A;B同理如果A、B互相删除,那两条记录同时删除
添加回答
举报
0/150
提交
取消
