лучший способ сохранить 1:1 пользовательские отношения в реляционной базе данных

Что является лучшим способом сохранить пользовательские отношения, например, дружбу, которая должна быть двунаправлена (Вы - мой друг, таким образом я - Ваш друг) в рэле. база данных, например, MySQL?

Я могу думать о двух путях:

  1. Каждый раз пользователь друзья другой пользователь, я добавил бы две строки к базе данных, строку A состоящий из идентификатора пользователя пользователя инициирования, читавшего UID пользователя принятия в следующем столбце. Строка B была бы реверсом.
  2. Вы только добавили бы одну строку, UID (пользователь инициирования) сопровождаемый UID (принимающий пользователя); и затем просто переройте оба столбца при попытке выяснить, является ли пользователь 1 другом пользователя 2.

Конечно, лучше существует что-то?

11
задан Aaron Yodaiken 26 May 2010 в 01:00
поделиться

3 ответа

У меня была бы таблица ссылок для друзей или чего-то еще, с двумя столбцами, оба являются PK, и оба являются FK для таблицы User.

Оба столбца будут UID, и у вас будет две строки на дружеские отношения (A, B и B, A). Пока оба столбца являются PK, он должен быть в нормальном формате (хотя другие могут меня поправить)

Это немного более сложный запрос, но ничего, что нельзя было бы абстрагировать с помощью сохраненного процедура или некоторая бизнес-логика, и ее в нормальном формате, который обычно неплохо иметь.

8
ответ дан 3 December 2019 в 09:40
поделиться

Используйте хранилище значений ключей, например, Cassandra.

-6
ответ дан 3 December 2019 в 09:40
поделиться

Использование двойных строк, хотя и создает дополнительные данные, значительно упростит ваши запросы и позволит вам эффективно индексировать. Я также помню, что видел информацию о пользовательском решении MySQL для Twitter, в котором они использовали дополнительное поле (в основном friend #) для автоматического ограничения и разбиения по страницам. Вроде довольно гладко: https://blog.twitter.com/2010/introduction-flockdb

4
ответ дан 3 December 2019 в 09:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: