Как организовать хранение и быструю выборку двух полей из БД?
Попался магазинчик на самописке, где Товар - это несколько фото, цена, описание и собственно все)))
Хочется доработать до уровня - товар имеет размер и цвет, цена на товар увязана с комбинацией двух этих параметров и плюс аттрибуты (марка ткани, состав ткани, условия хранения и т.д.), они не влияют на цену.
Т.е. пример: Рубашка мужская арт.21970 синяя 50р-р - цена 340р
Рубашка мужская арт.21970 синяя 52р-р - цена 360р
Рубашка мужская арт.21970 желтая 50р-р - цена 330р
Рубашка мужская арт.21970 желтая 52р-р - цена 370р
Уже есть таблица товар id,name,category_id,price....
Как лучше хранить два свойства - размер и цвет?
Вижу два варианта -
1. на каждое свойство своя таблица плюс таблица комбинации - удобно выбирать плоским запросом при выборке списка товаров, неудобно импортировать товары.
2. Оба свойства в одной таблице - удобно импортировать-наполнять, но выборка превращается в кучу джойнов и группировок...
Antonio Solo, например, надо вставить сначала в таблицу Товар, затем согласно нового полученного из БД ID товара найти id размера, найти id цвета, вставить в таблицу Комбинации первую кобинацию, затем еще раз повторить для того же ID, т.е. очередь запросов/
Если в будущем захотите расширить набор атрибутов, то в случае отдельной таблицы с атрибутами это будет проще сделать. Опять же для поиска по цвету / размеру любому другому атрибуту запросы будут одинаковыми, не придется переписывать "движок" магазина для каждого нового параметра.
Ну и с точки зрения экономии диска: может оказаться, что на одном товаре будет один набор атрибуты, а на другом другой, но в БД (в случае если их добавить в таблицу с товарами) все равно они будут занимать место (хоть там и будут условно нули)