웹 응용 프로그램에 "Add Friend"을 구현 중이므로 다른 사용자를 악마로 추가 할 수 있습니다.MySQL - 2 방향 쿼리 검사
우리는 두 테이블이 있습니다 tbl_users 및 tbl_relations을 tbl_users 예를 들어 tbl_relations의 일부 행은, 친구 사용자를 저장할 등록 된 사용자 및 tbl_relations에 대한 고유 한 ID를 가지고 :
id user_id_1 user_id_2
1 4 6
2 4 8
3 8 23
4 12 84
5 3 4
...
위의 결과에서 id는 tbl_relations의 고유 ID이고 user_id_1은 tbl_users에 대한 외래 키이며 user_id_2는 tbl_users의 외래 키입니다. 이제 ID가 "4"인 사용자가 사용자와 친구인지 확인하고 쿼리 할 것인지 상상해보십시오. 이드는 "9"또는 아님, 여기에 2 가지 방식으로 쿼리를 전송해야합니다. 즉 :
SELECT * FROM tbl_relations WHERE (user_id_1 = '4' AND user_id_2 = '9') OR (user_id_1 = '9' AND user_id_2 = '4')
위의 쿼리는 나에게 조금 이상하게 보일 것입니다. 아마도 다른 데이터베이스 구조 일 것입니다.
또는 다른 검색어 명의 사용자가 "4"와 "8"인 사용자간에이 시나리오를 사용하려면 어떻게해야합니까? 거기에 더 나은 데이터베이스 구조가 무엇입니까?
나는 어떤 종류의 도움을 주셔서 감사합니다.
큰 기업이 구현하는 방법을 다른이 있습니까?나는 페이스 북, G +, 링크 된 것을 의미한다 ... 나는 그렇게 생각하지 않는다! Mutual Friends는 어때? 덕분에 – behz4d
페이스 북은 이런 식으로 구현하지만 규모가 없기 때문에 대부분의 작업은 db 서버에서 수행되지 않습니다. 상호적인 친구는 두 사용자의 친구 행을 교차하여 수행 할 수 있습니다. 'SELECT * FROM tbl_relations into a INNER JOIN tbl_relations as b a.user_id_2 = b.user_id_2 WHERE a.user_id_1 = '4'AND b.user_id_1 = '9'. – yiding