sql >> Base de Datos >  >> RDS >> Mysql

esquema de base de datos de amistad

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

Cuando el usuario 1 envíe una solicitud de amistad al usuario 2, haz

insert into friendship (user, friend) values (1,2);

Si el usuario 2 niega la solicitud,

delete from friendship where user = 1 and friend = 2;

si el usuario 2 lo acepta:

insert into friendship (user, friend) values (2,1);

Entonces, una amistad se puede encontrar de esta manera:

select f1.* 
from friendship f1
inner join friendship f2 on f1.user = f2.friend and f1.friend = f2.user;

Puedes hacer una vista con esta última consulta, te ayudará a consultar a los amigos de los usuarios, o incluso a los amigos de los amigos.