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

#php #mysql #database

#php #mysql #База данных

Вопрос:

Я работаю над сайтом ювелирного интернет-магазина. Одна из просьб заключается в том, что из серверной части можно выбрать цвет / colors для одного ювелирного изделия, чтобы пользователи могли сортировать / просматривать только те изделия, которые, например, зеленого цвета.

Каков наилучший способ сохранить это в базе данных? Следует ли это делать с помощью 3 таблиц:

  1. таблица продуктов (уже существует)
  2. таблица цветов: каждое поле имеет свой цвет
  3. таблица, которая соответствует продукту, имеет идентификатор цвета

Это правильный способ сделать это? Я использую php и mysql, но я думаю, что это просто довольно стандартный вопрос к базе данных.

Комментарии:

1. Для меня звучит разумно.

2. ИМХО, поскольку цвета (сплошные цвета) ограничены и известны, color должен быть атрибутом product . Наличие возможности добавлять цвета по желанию вызовет проблемы, например, наличие более 20 тонов для фиолетового (фиолетовый, фуксия, баклажан и т.д.) и усложнение простых запросов.

3. @Ben Я не совсем согласен с этим. Наличие стандартного отношения N-M не сильно усложнит запрос

4. @Marcus Я говорю это не из-за отношения n-m, я говорю это потому, что, допустим, вы хотите перечислить все фиолетовые бриллианты, откуда вы можете знать, что фушия и баклажан тоже фиолетовые?

5. @Ben Ах, вот так. Но тогда вы могли бы ограничить цвета и в таблице цветов для достижения той же цели. Альтернативный вариант — создавать группы, к которым принадлежат цвета, если должно быть много разных вкусов.

Ответ №1:

Да, ваше решение с отношением «многие ко многим» между таблицами хорошо подходит для вашего случая. Затем вы можете легко объединять таблицы, чтобы получать информацию из идентификаторов.

Ответ №2:

Да, это подходящий способ сделать это.