#php #mysql #database
#php #mysql #База данных
Вопрос:
Я работаю над сайтом ювелирного интернет-магазина. Одна из просьб заключается в том, что из серверной части можно выбрать цвет / colors для одного ювелирного изделия, чтобы пользователи могли сортировать / просматривать только те изделия, которые, например, зеленого цвета.
Каков наилучший способ сохранить это в базе данных? Следует ли это делать с помощью 3 таблиц:
- таблица продуктов (уже существует)
- таблица цветов: каждое поле имеет свой цвет
- таблица, которая соответствует продукту, имеет идентификатор цвета
Это правильный способ сделать это? Я использую php и mysql, но я думаю, что это просто довольно стандартный вопрос к базе данных.
Комментарии:
1. Для меня звучит разумно.
2. ИМХО, поскольку цвета (сплошные цвета) ограничены и известны,
color
должен быть атрибутомproduct
. Наличие возможности добавлять цвета по желанию вызовет проблемы, например, наличие более 20 тонов для фиолетового (фиолетовый, фуксия, баклажан и т.д.) и усложнение простых запросов.3. @Ben Я не совсем согласен с этим. Наличие стандартного отношения N-M не сильно усложнит запрос
4. @Marcus Я говорю это не из-за отношения n-m, я говорю это потому, что, допустим, вы хотите перечислить все фиолетовые бриллианты, откуда вы можете знать, что фушия и баклажан тоже фиолетовые?
5. @Ben Ах, вот так. Но тогда вы могли бы ограничить цвета и в таблице цветов для достижения той же цели. Альтернативный вариант — создавать группы, к которым принадлежат цвета, если должно быть много разных вкусов.
Ответ №1:
Да, ваше решение с отношением «многие ко многим» между таблицами хорошо подходит для вашего случая. Затем вы можете легко объединять таблицы, чтобы получать информацию из идентификаторов.
Ответ №2:
Да, это подходящий способ сделать это.