Как правильно спроектировать базу данных для оптового интернет-магазина?
Суть состоит в том, что мне надо спроектировать базу данных для одного оптового магазина одежды. Некоторые категории товаров (например, футболки) содержат несколько признаков (например, размер и цвет). База данных должна учитывать количество футболок определенного размера и определенного цвета (например, белые футболки размера S - 54 штуки, светло-желтые футболки размера M - 74 шт). Основная сложность в том, что сочетаний размеров и цветов может быть огромное количество, из-за большого количества цветов и размеров, и неплохо бы было вынести это в отдельную таблицу. Даже не представляю как это нужно реализовать, т.к. опыта в проектировании баз данных не много. Если у кого-то есть простое и элегантное решение, которое я просто не знаю из-за отсутствия опыта, буду очень благодарен.
P.S. еще раз напишу: опыта очень мало, так что не судите строго.
Простое архитектурное решение - EAV в том числе и для задачи характеристик (фильтров, свойств) в интернет-магазине. При том, еще и довольно неплохо масштабируется. Так сказать, это облегченный вариант поисковых движков (Sphinx, Elasticsearch, Solr...) для начала. И часто его может хватить с головой.
Большое спасибо за ответ, впервые услышал о EAV, именно такой ответ я и ждал. Посмотрел как такая система реализована в Magneto, правда, и не совсем понял как подсчитывается общее количество товара с определенными признаками.
пример для 3 товаров:
1 футболка красная L 100$ 1 шт
2 футболка синяя XL 200$ 2 шт
3 кофта белая XXL 300$ 3 шт
пример записей в таблице :
1 | 1 | тип товара | футболка
2 | 1 | размер | S
3 | 1 | цвет | красный
4 | 1 | цена | 100
5 | 1 | количество | 1
6 | 2 | тип товара | футболка
7 | 2 | размер | L
8 | 2 | цвет | синий
9 | 2 | цена | 200
10 | 2 | количество | 2
11 | 3 | тип товара | кофта
12 | 3 | размер | M
13 | 3 | цвет | белый
14 | 3 | цена | 300
15 | 3 | количество | 3
Вариант 2:
Таблица 1:
id | id товара | свойство | значение
Таблица 2:
id | id товара | цена | количество
Пример таблицы 1 :
1 | 1 | тип товара | футболка
2 | 1 | размер | S
3 | 1 | цвет | красный
4 | 2 | тип товара | футболка
5 | 2 | размер | L
6 | 2 | цвет | синий
7 | 3 | тип товара | кофта
8 | 3 | размер | M
9 | 3 | цвет | белый