Как представить отношения между собой в rdbms?
-
07-07-2019 - |
Вопрос
Надеюсь, это глупый вопрос, но у меня мозг перегорел, и я сейчас не могу придумать, как это сделать.
Я бездельничаю, пытаясь создать штуковину для социальной сети, и мне нужно будет отслеживать «последователей» человека.У меня уже есть таблица пользователей, но как мне представить идею о том, что пользователи связаны друг с другом?Между прочим, это односторонние отношения, поэтому, если человеку «нравится» человек b, обратное не обязательно верно.
Единственное, о чем я могу думать, это таблица, в которой просто есть список отношений «один к одному», поэтому:
user a -> user b
user a -> user c
user a -> user d
user b -> user d
user b -> user c
...
но мне это кажется странным.
Спасибо
Саймон
редактировать:возможно, подписчик в Твиттере больше похож на то, что я пытаюсь сделать
Решение
Создайте таблицу, содержащую только информацию об идентификаторе подписчика, например:
user_id | follower_id
Вот и все.возьмем, к примеру, пользователя №56.
у него, вероятно, были бы такие строки в таблице подписчиков:
56 | 53453
56 | 323
56 | 463
Просто добавьте уникальное ограничение для обоих столбцов, чтобы он не мог добавить кого-то в друзья дважды.
Другие советы
Возможно, таблица выглядит так:
RelationshipId Follower Target
Int Int Int
Где Follower — это идентификатор пользователя UserA, а Target — это идентификатор пользователя UserB, а UserA следует за UserB.