MySQL - двусторонняя проверка запросов
Я реализуюДобавить в друзья" в моем веб-приложении, чтобы пользователи могли добавлять других пользователей в качестве друзей.
У нас есть 2 таблицы:tbl_users а такжеtbl_relations, tbl_users имеют уникальный идентификатор для зарегистрированных пользователей, а 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
...
В приведенных выше результатах идентификатор является уникальным идентификатором для tbl_relations, user_id_1 является внешним ключом для tbl_users, а user_id_2 является внешним ключом для tbl_users, теперь представьте, что мы хотим запросить и проверить, если пользователь с идентификатором "4" друг с пользователем с идентификатором "9" или нет, здесь нам нужно отправить запрос двумя способами, я имею в виду:
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", как я'Я должен получить общих друзей в этом сценарии? Есть ли лучшая структура базы данных для этого?
Буду признателен за любую помощь.