Dan*_*nny 23 mysql database database-design
我正在创建一个涉及可以成为朋友的用户的数据库模式,我想知道为这些朋友建立友谊的最佳方式.它应该是自己的表,只有两列,每列代表一个用户?谢谢!
cet*_*ras 49
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)
);
Run Code Online (Sandbox Code Playgroud)
当用户1向用户2发送友谊请求时,请执行
insert into friendship (user, friend) values (1,2);
Run Code Online (Sandbox Code Playgroud)
如果用户2拒绝该请求,
delete from friendship where user = 1 and friend = 2;
Run Code Online (Sandbox Code Playgroud)
如果用户2接受它:
insert into friendship (user, friend) values (2,1);
Run Code Online (Sandbox Code Playgroud)
然后,友谊可以这样找到:
select f1.*
from friendship f1
inner join friendship f2 on f1.user = f2.friend and f1.friend = f2.user;
Run Code Online (Sandbox Code Playgroud)
您可以使用此最后一个查询创建一个视图,它将帮助您查询用户的朋友,甚至是朋友的朋友.
| 归档时间: |
|
| 查看次数: |
13876 次 |
| 最近记录: |