Моделирование закрепленных сообщений: наличие столбца флажка внутри таблицы «сообщений» VS с таблицей pinned_posts - PullRequest
1 голос
/ 06 мая 2019

Контекст

Я реализовал базовую систему публикаций в Rails, поэтому у меня есть таблица "posts" со следующими столбцами: id, user_id, body, creation_at, updated_at.

Я бы хотел, чтобы пользователи могли прикреплять свои сообщения (только одно сообщение за раз, поэтому есть отношение has_one)

Вопрос

Я вижу два способа реализации этого:

  • добавление «закрепленного» логического столбца в таблицу «posts»
  • добавление таблицы «pinned_posts» со следующими столбцами: id, идентификатор_пользователя, идентификатор_поста, созданный_кат, обновленный_ат

Какие плюсы и минусы есть у двух вышеуказанных способов?

1 Ответ

0 голосов
/ 06 мая 2019

Поскольку вы ограничиваете одну публикацию для каждого пользователя, вы можете заполнить post_id или NULL в таблице Users.

Это обеспечивает применение правила 1 для пользователя и имеет(возможно) минимальные накладные расходы.

Вы не сказали, что происходит с записанными сообщениями;Могут быть и другие проблемы.Вам нужно найти все прикрепленные записи (потребуется дорогостоящее сканирование Users)?Вы хотите пометить определенный пост при отображении информации о пользователе?(Это будет весьма эффективно.)

Могу ли я предложить вам изучить некоторые основы баз данных;стороннее программное обеспечение (в данном случае «R») не может реально оградить программистов от концепций баз данных.

...