Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день.
помогите решить очень большую головоломку
Суть такая:
пытаюсь придумать как сконструировать БД для следующей задачки - есть группы товаров и товары в этих группах.
для каждой группы товаров может быть произвольное количество характеристик, по которым нужно потом подбирать товары.
Характеристики будут такого плана:
1. числовое значение
к примеру процессор - характеристика количество ядер
или цена товара
поиск должен осуществляться как больше, меньше, равно или в диапазоне
2. текстовый
к примеру - описание товара
поиск должен осуществляться по вхождению искомого текста
3. булёвый
к примеру - наличие товара на складе
ну как бы поиск по значению "истина"
4. перечисление
тут немного сложно объяснить, но постараюсь донести суть.
К примеру характеристика Производитель. Для товара он выбирается один из списка производителей.
и еще так - Принтер, есть характиритика "подключение к сети" и варианты в списке будут такие lan, wi-fi, так вот принтер
может быть как со всеми типами подключения, как с одним из них так и вообще без них.
это как бы многозначный булёвый тип(хранится несколько значений сразу)
добавился 5й тип:
5. дата
поиск осуществляется по дате (равно, больше, меньше, или в диапазоне)
Что можете подсказать по этой задачке? Как поступить?
P.S. тема очень интересная, я думаю что она много кому поможет в будущем.
Начну с того, что товары и группы я планирую хранить в одной таблице, в иерархической структуре.
Примерно так:
Таблица: goods
id - идентификатор
parent_id - идентификатор родителя
name - наименование группы/товара
alias - псевдоним для URL адресной строки (опционально)
далее идет таблица для хранения характеристик групп
Таблица: options
id - идентификатор
good_id - идентификатор группы, из таблицы goods
name - наименование характеристики
alias - псевдоним для URL адресной строки (опционально)
type_option - тип опции (1,2,3,4 - описаны выше)
для 4-го типа (перечисление) создам еще одну таблицу для хранения вариантов
Таблица: enumerations
id - идентификатор
option_id - идентификатор характеристики
name - название варианта перечисления
alias - псевдоним для URL адресной строки (опционально)
таким образом при помощи трех таблиц я описываю "все возможные параметры для группы и варианты значений для перечисления".
Теперь встает вопрос: для каждого товара нужно хранить значения этих характеристик с последующим подбором товаров в группе по этим типам характеристик.
Отредактированно Akylenok (05.06.2012 14:25:20)
Неактивен
В дополнение выкладываю схему (чтобы ручками не создавать):
Неактивен
Если я правильно понял, то вам нужны таблица товаров, таблица характеристик и таблица связей между ними (идентификатор товара, идентификатор характеристики и значение характеристики).
Посмотрите пример в теме http://sqlinfo.ru/forum/viewtopic.php?id=5324
Неактивен
Бегло прочитал, завтра с утрица посижу посерьезнее.
Но, а в целом у меня поиск будет более сложным.
Но для этого я (тоже к сожалению завтра) приведу схему таблиц, в которых я собираюсь хранить значения для товаров.
P.S. меня терзает такой вопрос - вот понаделаю я кучу разделенных таблиц, а на соединение не будет ли идти много ресурсов и времени? просто у меня нет такого опыта
но это предлагаю обсудить после схемы таблиц хранения значений.
Неактивен
Выкладываю схему таблиц для хранения значений параметров товаров:
Неактивен