alex-1917
@alex-1917
Если ответ помог, отметь решением

Как организовать хранение и быструю выборку двух полей из БД?

Попался магазинчик на самописке, где Товар - это несколько фото, цена, описание и собственно все)))
Хочется доработать до уровня - товар имеет размер и цвет, цена на товар увязана с комбинацией двух этих параметров и плюс аттрибуты (марка ткани, состав ткани, условия хранения и т.д.), они не влияют на цену.
Т.е. пример:
Рубашка мужская арт.21970 синяя 50р-р - цена 340р
Рубашка мужская арт.21970 синяя 52р-р - цена 360р
Рубашка мужская арт.21970 желтая 50р-р - цена 330р
Рубашка мужская арт.21970 желтая 52р-р - цена 370р


Уже есть таблица товар id,name,category_id,price....

Как лучше хранить два свойства - размер и цвет?
Вижу два варианта -
1. на каждое свойство своя таблица плюс таблица комбинации - удобно выбирать плоским запросом при выборке списка товаров, неудобно импортировать товары.
2. Оба свойства в одной таблице - удобно импортировать-наполнять, но выборка превращается в кучу джойнов и группировок...
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
alex-1917
@alex-1917 Автор вопроса
Если ответ помог, отметь решением
Сделал так:
кусок из БД
5ba153fec452e727436876.png

в админке:
5ba1541d90d18975833755.png
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
LaRN
@LaRN
Senior Developer
Если в будущем захотите расширить набор атрибутов, то в случае отдельной таблицы с атрибутами это будет проще сделать. Опять же для поиска по цвету / размеру любому другому атрибуту запросы будут одинаковыми, не придется переписывать "движок" магазина для каждого нового параметра.

Ну и с точки зрения экономии диска: может оказаться, что на одном товаре будет один набор атрибуты, а на другом другой, но в БД (в случае если их добавить в таблицу с товарами) все равно они будут занимать место (хоть там и будут условно нули)
Ответ написан
Комментировать
solotony
@solotony
покоряю пик Балмера
если атрибутов немного и число их известно -

для самих названий атрибутов - свои таблицы
товары храните все в одной таблице, id атрибутов - внешние ключи. и будет вам счастье.

хотя в вашем случае и одна таблица сойдет (в смысле вообще одна)

а вариант хранения разных свойств в одной таблице - когда количество свойств переменно, неизвестно, у разных объектов разные свойства.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы