|
|
|
| по мотивам http://www.softtime.ru/forum/read.php?id_forum=2&id_theme=59030
[quote]еще одно интересное и общественно-полезное поделие - менеджер прайс-листа.. эт типа категории неограниченной вложенности, содержащие элементы товаров. сложность в том, что у товаров разных категорий совершенно разный набор свойств, а свойства могут быть как текстовыми, числовыми, диапазонными (частота 20Гц-20кГц), так и логическими (блютус - есть/нет).
и это еще не вся сложность - по всему этому добру должен вестись поиск )) и желательно иметь фильтры.. короче яндекс.маркет - это идеальный результат! )[/quote]
хотелось бы обсудить, какие подходы можно применить для построения подобного класса?
1. Была мысль отвести целую БД, где каждая таблица - категория с определенным набором свойств, + таблица для описания самих категорий и их иерархии
2. Была мысль заюзать мой "драйвер абстрактных объектов", который позволяет делать объекты с проивзольным набором свойств.. что то вроде недо-ОРМ
3. про XML подумал тоже (и XPath [http://www.w3.org/TR/xpath] как средство выборки), но никогда с ним не работал в таком качестве (хранение больших массивов данных)
4. обычный каталог (таблица категорий, таблица товаров), в таблице товаров text-поле с парами свойст ключ|значение, но это уже изврат )) зато гибко конечно..
somebody? :)
UPD
склоняюсь-таки к XML, с XPath раньше не работал, но с такими возможностями http://www.zvon.org/xxl/XPathTutorial/General/examples.html можно далеко уехать!
+ XML-товары можно будет легко редактировать, накидав XSLT шаблон для формы в админку | |
|
|
|
|
|
|
|
для: mechanic
(21.10.2008 в 13:48)
| | тут нужна ИМХО одна основная таблица - индекс вида
и таблица справочник
первая таблица - структура каталога. Вторая уточняет сущности, храня их свойства (тип, цена и т.д.).
Если каталог будет большой, то только на загрузку xml файла, для поиска по нему может нехватить ресурсов. | |
|
|
|
|
|
|
|
для: Axxil
(21.10.2008 в 14:51)
| | не вижу, как тут будет реализован разный набор свойств для товаров разных категорий..
как я понял выглядеть будет примерно так
entity_id parent_id
1 0 //категория верхнего уровня
2 1 //подкатегория для 1
3 2 //подкатегория для 2
4 3 //intel pentium 4
entity_id [поля, с этого момента пожалуйста поподробнее )]
1 Компьютеры
2 Комплектующие
3 Процессоры
4 Как здесь задать описание проца, а в вышеуказанных категориях, например, их описания?
|
| |
|
|
|
|
|
|
|
для: mechanic
(21.10.2008 в 15:19)
| |
entity_id name description
1 Компьютеры Бла бла бла описание категории
2 Комплектующие Бла бла бла описание категории
3 Процессоры Бла бла бла описание категории
4 Процессор Intel Pentium Core Duo Бла бла бла описание конкретного процессора
5 Процессор AMD Sempron Бла бла бла описание конкретного процессора
|
Оговорюсь, что построение общего вида абстрактного каталога - задача бесперспективная.
Базу в данном случае однозначно спроектировать вряд ли возможно.
Но можно сделать инструмент по формированию каталога. Т.е. он-лайн форма, куда вбиваются некоторые характеристики каталога, на основании которых генерируется нужный набор таблиц.
Это было было гораздо интереснее с практической точки зрения. | |
|
|
|
|
|
|
|
для: Axxil
(21.10.2008 в 15:39)
| | тююю.. так это ж разве представляет какую то сложность, запихать все в одно поле :)..
эт без проблем, если каталог чисто информационного характера, ну а как же поиск? фильтры по полям, сортировка..
>Оговорюсь, что построение общего вида абстрактного каталога - задача бесперспективная.
>Базу в данном случае однозначно спроектировать вряд ли возможно
глядя на гуголь, я верю, что все возможно ;))
>Но можно сделать инструмент по формированию каталога. Т.е. он-лайн форма, куда вбиваются некоторые характеристики каталога, на основании которых генерируется нужный набор таблиц.
т.е. таки набор таблиц, вариант 1 ) если отбросить требование вывода товаров всех подкатегорий, начиная с текущей, то вполне можно обойтись так
DEM, как движутся дела по данной задаче? ;) | |
|
|
|
|
|
|
|
для: mechanic
(21.10.2008 в 15:51)
| | > ююю.. так это ж разве представляет какую то сложность, запихать все в одно поле :)..
эт без проблем, если каталог чисто информационного характера, ну а как же поиск? фильтры по полям, сортировка.
Ну так и делайте столько полей сколько надо в таблице. Поэтому я и говорю, что абстрактный каталог проектировать - сизифов труд.
> глядя на гуголь, я верю, что все возможно ;))
Каким боком тут гугль, разрешите поинтересоваться?
> т.е. таки набор таблиц
Угу. БД под эту задачу отлично подходят. | |
|
|
|
|
|
|
|
для: Axxil
(21.10.2008 в 15:56)
| | > Ну так и делайте столько полей сколько надо в таблице.
я вроде не раз сказал уже, что число свойств неизвестно..
>Поэтому я и говорю, что абстрактный каталог проектировать - сизифов труд.
да он у меня спроектирован уже, т.е. даже реализован, довести до ума немного и все. хотел только поинтересоваться, какие еще могут быть пути
>Каким боком тут гугль, разрешите поинтересоваться?
да так, собсна никаким, просто впечатляют Google Docs (особенно), Picasa, Gmail, после такого кажется что сделать можно все что угодно, было бы желание и энтузиазм, чего текущие участники дискуссии жаль не проявляют | |
|
|
|
|
|
|
|
для: mechanic
(21.10.2008 в 16:09)
| | Ну процессор это скорее всего товар, а не категория - сделайте таблицу для характеристик товаров. Сколько и каких полей будет в ней вам виднее, но и в характеристиках того же процессора указываются основные, а не все чем он богат. Подробности, это уже в описании товара. С появлением новых типов товаров ни составит труда добавить поля характеристик этим товарам, а может и разделить товары на группы, и у каждой группы своя таблица характеристик... | |
|
|
|
|
|
|
|
для: mechanic
(21.10.2008 в 16:09)
| | делали что-то похожее. при вводе позиции (товара), выбирались и его свойства и чем эти
свойства представлены. например, есть возможность добавления поля к описанию товара.
когда выбрана эта функция, далее спрашиваетcя, будет это текстовое поле или набор чек-боксов
или набор радио-кнопок или селект. если текстовое поле, то предлагается его создать - дать
имя и значение. если остальное - создается таблица, которая связана с таблицей товара - и
предлагается занести пары "имя_поля - значение" (с возможностью редактирования и удаления).
может, криво объяснила, но это точно работало. у телевизоров и телефонов был разный набор
полей и дополнительных таблиц для их описания. | |
|
|
|
|
|
|
|
для: elenaki
(21.10.2008 в 16:25)
| | вот, это то что надо! это называется юзер-френдли интерфейс!
а кто делал? и где посмотреть можно? может и скачать даже | |
|
|
|
|
|
|
|
для: mechanic
(21.10.2008 в 16:34)
| |
автор: Axxil (21.10.2008 в 15:39)
Но можно сделать инструмент по формированию каталога. Т.е. он-лайн форма, куда вбиваются
некоторые характеристики каталога, на основании которых генерируется нужный набор таблиц.
|
Я такое делал и не раз.
Только не в каталоге а в других задачах.
Это называется кодогенерация. Когда программы пишут программы. Матрица, короче :)
Т.е. основная идея не объять необъятное и увзязнуть в абстракциях и обобщениях, а сделать так чтобы система сама формировала нужный код и таблицы. | |
|
|
|
|
 43.5 Кб |
|
|
для: mechanic
(21.10.2008 в 16:34)
| | могу прислать админку.
скрины в аттаче -> | |
|
|
|
|
|
|
|
для: elenaki
(21.10.2008 в 17:33)
| | выглядит неплохо
пришлите пожалуйста, интересно поглядеть реализацию
mexxval (at) gmail com или тут можно прикрепить, как удобнее | |
|
|
|
|
|
|
|
для: mechanic
(22.10.2008 в 08:09)
| | Есть гостевая книга, немецкая, название ее к сожалению не помню, вот в ней в админ части построение подобных форм. Может у меня где-то еще и остался ее код. | |
|
|
|
|
|
|
|
для: sim5
(22.10.2008 в 08:21)
| | тоже можно поглядеть, хотя как-то сложно сопоставить задачи гостевой книги с каталогом ) | |
|
|
|
|
|
|
|
для: mechanic
(22.10.2008 в 08:38)
| | Сложно сопоставить?) Вот и я когда ее хотел задействовать, выбрасывал это. Если остался у меня код ее, найду и выложу. А в общем там ничего сложного не было. Например, нужно в некую форму добавить некие поля. В режиме админа выбирается тип поля, его имя, текст у поля, атрибуты и их параметры, а также, коли это Гостевая, то у текстовых полей можно было добавлять проверку на допустимые символы при вводе и т.п.. Сама форма принадлежит родителю - скрипту вызывающему ее, и имеет шаблон записанный в таблицу базы, которая имеет поля описывающие поля этой у этой формы соответственно. При добавлении новых полей, добавляется либо поле в таблицу, если такого типа поля нет у формы, либо добавляется еще один уже существующий тип поля в соответсвующее поле таблицы. Ну а далее, при вызове, все получается. Вам практически тоже самое и нужно - знать какие поля добавить форме при описании тех или иных товаров. | |
|
|
|
|
|
|
|
для: elenaki
(21.10.2008 в 17:33)
| | > могу прислать админку.
все еще надеюсь :) | |
|
|
|
|
|
|
|
для: mechanic
(24.10.2008 в 11:03)
| | приду домой, как доберусь до компа, сразу вышлю. | |
|
|
|