我正在创建一个涉及可以成为朋友的用户的数据库模式,我想知道如何才能对这些用户建立友谊的能力进行建模.它自己的表应该只有两列,每列代表一个用户吗?谢谢!
我正在创建一个涉及可以成为朋友的用户的数据库模式,我想知道如何才能对这些用户建立友谊的能力进行建模.它自己的表应该只有两列,每列代表一个用户吗?谢谢!
create table
friendship(
user bigint,
friend bigint,
primary key(user, friend),
key(friend, user),
constraint `fk_user` foreign key (user) references user(id),
constraint `fk_friend` foreign key (friend) references user(id)
);
当用户%1向用户%2发送友谊请求时,请执行以下操作
insert into friendship (user, friend) values (1,2);
如果用户2拒绝该请求,
delete from friendship where user = 1 and friend = 2;
如果用户2接受:
insert into friendship (user, friend) values (2,1);
然后,友谊就可以这样找到了:
select f1.*
from friendship f1
inner join friendship f2 on f1.user = f2.friend and f1.friend = f2.user;
您可以使用最后一个查询创建一个视图,它将帮助您查询用户的朋友,甚至朋友的朋友.