Как правильно оформить простое избранное и заблокированную таблицу? - PullRequest
0 голосов
/ 27 марта 2010

В настоящее время я пишу веб-приложение в рельсах, где пользователи могут отмечать элементы как избранные, а также блокировать их. Я подошел двумя путями и подумал, какой из них более распространен / лучше.

1. Отдельные таблицы соединений

Было бы разумно иметь 2 таблицы для этого? Как:

users_favorites
  - user_id
  - item_id

users_blocked
  - user_id
  - item_id

2. один стол

users_marks (or so)
  - users_id
  - item_id
  - type (["fav", "blk"])

Оба способа имеют свои преимущества. Какой из них вы бы использовали и почему?

Ответы [ 3 ]

2 голосов
/ 27 марта 2010

Второй имеет, по крайней мере, преимущество (если первичный ключ users_id + item_id) , чтобы убедиться, что ни у одного пользователя не будет элемента как избранного, так и заблокированного.

Полагаю, я бы получил это второе решение - особенно учитывая, что две таблицы в первом решении имели бы одинаковую структуру, что кажется странным ; и это также позволяет вам хранить всю информацию в одном месте, что может помочь, в некоторых случаях (например, отчетность?) .

1 голос
/ 27 марта 2010

Это просто другой статус предмета, поэтому # 2 выполнит эту работу. Что бы вы сделали, если бы это были цвета? Две разные таблицы? Я так не думаю;)

Изменить: Возможно, вы захотите статус в другой таблице и связать его с внешним ключом, но это зависит от вас. Это зависит от того, сколько разных статусов вы ожидаете иметь. Только эти двое или многие другие?

1 голос
/ 27 марта 2010

Я бы пошел с # 2.

Оставляет все соответствующие данные в одной таблице.

В противном случае вам, возможно, придется прибегнуть к объединению или отдельным соединениям, чтобы получить полный список деталей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...