본문 바로가기
MySql

MySQL 우정 데이터베이스 스키마

by 베이스 공부 2020. 11. 23.
반응형

친구가 될 수있는 사용자를 포함하는 db 스키마를 만들고 있는데,이 친구들이 우정을 가질 수있는 능력을 모델링하는 가장 좋은 방법이 무엇인지 궁금합니다. 각각 사용자를 나타내는 두 개의 열이있는 자체 테이블이어야합니까? 감사!

 

해결 방법

 

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;

이 마지막 쿼리로보기를 만들 수 있으며 사용자의 친구 또는 친구의 친구를 쿼리하는 데 도움이됩니다.

 

참조 페이지 https://stackoverflow.com/questions/2910134

 

 

반응형

댓글