社交类应用中,每用户与多个好友存在好友关系,设计的最佳方案是什么的呢?数据库白痴求助。
我目前想到的表设计是这样的:
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语句完成。
只要一个用户关系表就行了;
字段:
uid
、f_uid
;且两个都为主键。无需ID自增长字段uid
为用户IDf_uid
为好友ID说明:
以上关系,如A与B为好友,那需要有2条记录。
如果只是A单方面解除好友关系,只需要删除
uid = A
;B同理如果A、B互相删除,那两条记录同时删除