반응형
친구가 될 수있는 사용자를 포함하는 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
반응형
'MySql' 카테고리의 다른 글
MySQL GoLang 쿼리에 변수 전달 (0) | 2020.11.23 |
---|---|
MySQL Codeigniter 검색 상자 또는 검색 양식 (0) | 2020.11.23 |
MySQL 개수가 20보다 큰 경우 테이블에서 삭제하는 방법 (0) | 2020.11.23 |
MySQL ERROR 1231 (42000) : 'character_set_client'변수를 'NULL'값으로 설정할 수 없습니다. (0) | 2020.11.23 |
MySQL에 의해 구동되는 Hibernate 기반 Java Servlet 애플리케이션에서 Hibernate Communications Link 실패 (0) | 2020.11.23 |
댓글