ユーザーが他のユーザーをフィーンドとして追加できるように、Web アプリに「友達を追加」を実装しています。
tbl_usersとtbl_relationsの2 つのテーブルがあります。tbl_users には登録ユーザーの一意の ID があり、tbl_relations には友人であるユーザーが格納されます。たとえば、tbl_relations のいくつかの行は次のとおりです。
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」のユーザーが ID のユーザーと友達であるかどうかを照会して確認したいとします。 「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')
上記のクエリは私には少し奇妙に思えます。これを実装する別の方法があるはずです。おそらく別のデータベース構造でしょうか?
または別のクエリ、ID「4」と「8」のユーザー間の相互の友達を取得したいのですが、このシナリオで相互の友達を取得するにはどうすればよいですか? これに適したデータベース構造はありますか?
あらゆる種類の助けをいただければ幸いです。