MySQL - sprawdzanie zapytań w 2 kierunkach

Wdrażam ”Dodaj znajomego„w mojej aplikacji internetowej, aby użytkownicy mogli dodawać innych użytkowników jako diabłów.

Mamy 2 stoły:tbl_users itbl_relations, tbl_users mają unikalny identyfikator dla zarejestrowanych użytkowników, a tbl_relations przechowuje użytkowników, którzy są przyjaciółmi, na przykład niektóre wiersze w tbl_relations to:

id     user_id_1     user_id_2
1      4             6
2      4             8
3      8             23
4      12            84
5      3             4
...

W powyższych wynikach id jest unikalnym identyfikatorem dla zmiennych tbl_relations, user_id_1 jest kluczem obcym dla tbl_users, a user_id_2 jest kluczem obcym dla użytkowników tbl_users. „9” lub nie, tutaj musimy wysłać zapytanie na dwa sposoby, mam na myśli:

SELECT * FROM tbl_relations WHERE (user_id_1 = '4' AND user_id_2 = '9') OR (user_id_1 = '9' AND user_id_2 = '4')

Powyższe zapytanie wydaje mi się trochę dziwne, chyba powinien istnieć inny sposób implementacji tego, może inna struktura bazy danych?

Lub inne zapytanie, chcemy uzyskaćwspólni przyjaciele pomiędzy użytkownikami o identyfikatorze „4” i „8”, w jaki sposób mam uzyskać wspólnych znajomych w tym scenariuszu? czy jest na to lepsza struktura bazy danych?

Byłbym wdzięczny za wszelką pomoc.

questionAnswers(2)

yourAnswerToTheQuestion