Как правильно моделировать отношения друг-друга в реляционной базе данных? Ниже я подробно опишу, что я имею в виду под отношениями друг-друг.
отношения друг-друг
Предположим, у нас есть таблица с людьми. Эти люди могут дружить друг с другом. Быть другом означает, что человек и другой человек связаны через отношения, в которые входят только эти два человека.
Моя лучшая, но не удовлетворительная, идея до сих пор
- Таблица, содержащая людей
- Таблица, содержащая отношения
- Таблица, содержащая отношения «многие ко многим» между людьми и отношениями
Как и в изображение ниже.
предлагаемая модель данных
Это выглядит нормально с точки зрения моделирования данных, но при написании запроса SQL, который проверяет, являются ли два заданных person_ids друзья или нет, запрос становится довольно сложным, что заставляет меня думать, что это неправильный способ сделать это.