Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

esquema de banco de dados de amizade

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)
);

Quando o usuário 1 enviar uma solicitação de amizade para o usuário 2, faça
insert into friendship (user, friend) values (1,2);

Se o usuário 2 negar a solicitação,
delete from friendship where user = 1 and friend = 2;

se o usuário 2 aceitar:
insert into friendship (user, friend) values (2,1);

Então, uma amizade pode ser encontrada desta forma:
select f1.* 
from friendship f1
inner join friendship f2 on f1.user = f2.friend and f1.friend = f2.user;

Você pode fazer uma visualização com esta última consulta, ela irá ajudá-lo a consultar amigos de usuários, ou até mesmo amigos de amigos.