Предположим, у меня есть пользователь. Пользователь может иметь несколько любимых цветов. Затем я разрешаю пользователям искать других пользователей с определенными любимыми цветами. Как я должен структурировать эту таблицу? Наличие таблицы с 20 столбцами для каждого цвета кажется плохой идеей, но попытка выполнить сопоставление строк в одном столбце также кажется очень запутанной.Rails: модель со многими опциями
Users
id name
1 Don
FavoriteColors
id user_id red green blue orange violet...
1 1 0 0 1 1 1
И укороченные модели:
User
has_many :colors
FavoriteColor
belongs_to :user
Почему у вас нет таблицы цветов. и color_id как внешний ключ? вы также можете иметь третью таблицу с user_id и color_id –
@SamS, что было бы преимуществом для этой структуры над этим? –
Производительность, обновления и поиск данных будут лучше. потому что он будет более нормализован. Google 1-я, 2-я и 3-я нормальные формы. Вы можете найти любимые цвета пользователей с простым объединением, но с дизайном у вас было бы намного сложнее –