|
|
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
Необходимо создать максимально широкий каталог для самых разных товаров в универмаге. Одновременно могут продаваться и эмалированные ведра, и авторучки и автомобили. Необходимо разработать структуру хранения и поиска по параметрам. Параметры могут быть от объема двигателя и цвета, до производителя и запаха (напр. для одеколона). Каталог должен быть легко расширяем как по созданию новых типов товаров, так и в отношении добавления новых параметров уже существующих. Может кто сталкивался с подобной задачей?\r Пока есть такие варианты:\r 1) Создается мегатаблица вида:\r id | type | color | country | mfgr | date | ...| параметрN | параметрN+1 и т.д.\r то есть, перечисляем в колонках все виды параметров (часть из них будет собственно данными - цена, год и т.д, а часть ссылками на другие таблицы - например, производитель, цвет и тп.), которые есть в системе. Занося инфо о новом товаре, мы заполняем только нужные поля, остальные оставляем NULL.\r 2) Набор отдельных табличек для каждого типа товара и таблица связка, раскрывающая что каждый тип обозначает. Тогда к каждой таблице можно приписать только определенные параметры, и никто не сможет ввести для пачки сигарет октановость, или крепость для бензопилы. Но как быть с цветами предметов? Например, диапазон цветов автомобилей и вина различается кардинально. Не заводить же отдельно таблицы цвета_вин, цвета_авто и др. Значит, проблема контроля вводимых значений остается. И опять же что такое тип товара? Навреняка будет немало товаров очень похоих друг на друга по возможным параметрам - значит, разделение несколько условно.\r 3) Вариант фиксированного количества таблиц и записи параметров не по горизонтали и по вертикали, то что активно обсуждалось в теме про больных у каждого из которых может быть от 10 до 124 параметров. /topic/70514\r \r Т.е. примерно такая структура:\r Табл 1: Справочник типы товаров:\r - номер типа\r - название\r - ссылка на родительский тип (если нужно сделать какое-то подобие иерархичности)\r Данные: \r № строки -- название -- ссылка\r 1 -- сигареты -- 0\r 2 -- вино -- 0\r 3 -- авторучки --0\r \r Табл 2: Справочник типы параметров:\r - номер параметра\r - название\r № -- название \r 1 -- крепость\r 2 -- производитель\r 3 -- форма бутылки\r 4 -- количество в упаковке\r 5 -- материал\r 6 -- позолочено?\r \r Табл 3: Сами товары. Ммеет следующий вид\r № строки -- № типа товара -- тип параметра -- значение \r 1 -- 1 -- 2 -- 15%\r 2 -- 1 -- 4 -- 20\r 3 -- 3 -- 5 -- золото\r и так далее.\r Я уже высказывал в той теме, что нужно хранить не сами значения, а ссылки на них. Т.е. база обогащается таблицами "материал", "производитель", "страна", "цена" и т.п. \r А где хранить название и другие уникальные вещи, например, крепость?\r Получается, их тоже нужно вынести в отдельную таблицу и делать ссылки 1:1.\r Кто что думает по этому поводу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 17:25 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
ИМХО Любое "универсальное" решение всегда имеет много минусов. Как то - сложность структуры, трудность проектирования, трудность сопровождения, неконтролируемость поведения в определенных условиях (типа все не предусмотришь) и т.д. Я бы пошел таким путем. Выделил супер типы товаров, и на них навешивал свои структуры данных. Например машины, галантерея, продукты питания. Так ИМХО проще. Плюс автоматом решается проблема доступа к своей инфе, когда продавец из гастронома не имеет никакого выхода на автомобили. А свести все в кучу для аналитики гораздо проще, чам разнести по категориям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 17:39 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
вот как у себя в подобной ситуации поступал я (краткое описание).. таблица - рубрикатор.. как правило - дерево.. поля примерно след (названия полей взяты из комментариев без pre-publish подготовки). - ключ - parent ключ (для дерева) - название номенклатурной группы.. таблица - товары... соотв. собраны общие для всех товаров поля... например - ключ, - код в рубрикаторе, - Артикул товара, - рекомендуемая цена, - Упаковочное количество (Количество номенклатурных единиц в одной упаковке по-умолчанию), - Нетто вес. ( Вес товара БЕЗ упаковки. Данная информация используется при расчете полного веса заказа или закупки. Вес-нетто спецификации может быть рассчитан автоматически путем суммирования веса деталей.), - Вид упаковки - брутто-глубина. Габариты одной единицы упакованного товара. Используются для проверки, может ли товар на палете поместиться в ячейке хранения. - брутто-ширина. Габариты одной единицы упакованного товара. Используются для проверки, может ли товар на палете поместиться в ячейке хранения. - брутто-высота. Габариты одной единицы упакованного товара. Используются для проверки, может ли товар на палете поместиться в ячейке хранения. - Тип контейнера, на котором может размещаться товар. - Стандартное количество товара, умещающееся на одной палете. Используется для автоматического разбиения по палетам. - минимальная партия - Временно блокирован приём заказов на этот товар - Стандартное время доставки товара,т.е. количество дней, которое проходит с момента заказа товара до его поставки на склад. - описание \ примечание..... - код сотрудника, добавившего запись - дата добавления таблица - список свойств товаров.. всех возможных товаров... - ключ - название свойства товара - тип св-ва (String,Percent,Bit,Real) - Обязательное для заполнения (bit) - дополнительное описание таблица - отношение (много-к-много) между каталогом товарных групп и и свойствами (позволяет хранить информацию о том, в какой товарной группе могут какие свойства быть) ну и соотв. таблица - значений св-тв товаров - ключ - код свойства - код товара - значение - бит - значение - строка (до 1000 знаков) - значение - текст - значение - numeric - значение - Дата - кто и когда добавил \ изменил данные.... соотв. остальные справочники не описываю.... ps: таблица значений св-тв товаров не претендует на оптимальность хранения данных, но ИМХО мне так удобнее всего.. С уважением, Petr@Chulkov.NET Microsoft Certified Professional Chulkov.Net - Trustworthy Knowledge ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 18:00 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
В догонку. А стоит ли вообще забивать магазинную БД такими вещами как объем двигателя и градация цветов вина? Может проще - наименование, цена, количество + некоторый текс в примечании. Ну еще некий код группы товара (но не такой подробный - это с ума сойти). Принимать то товар по накладной будешь, а там наверняка только это. Самому выдумывать? Нафига? А штучный дорогой товар и учитывать можно поштучно. Наверняка автомобили не десятками в день продаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 18:08 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
2Серега: если большой каталог, то у клиента возникает потребность в различных выборках. На примере тех же фотоаппаратов: человек может не разбираться каая марка лучше или хуже, что ему нужно Сони или Олимпус. Но может твердо знать, что он хочет зеркалку с таким -то зумом, или в таком-то ценовом диапазоне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 18:22 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
2Petr Chulkov Т.е. в значениях свойств ты хранишь несколько типо в колонок и из них используется только одна, которая указана в описании самого типа? По поводу иерархии в каталоге, т.е. есть типы-ветки, а есть конкретные позиции-листья? И листья могут иметь лишь те типы параметры, что приписаны для родительских элементов? Это экономит лишнюю таблицу, позволяет сделать наследование, но усложняет работу - начинается какой-то иерерхо-объектный подход. Или я тебя не правильно понял? Кстати, тут есть спецы по иерархическим или объектым базам? как там решить эту задачу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 18:30 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
В универмаге про зумы фотоаппарата должен знать продавец-консультант. Он на то и консультант . В БД это тянуть совсем необязательно. Ты прикинь, сколько надо ввести инфы что бы оприходовать один товар. С ума сойдешь. Кто будет вводить и с чего, т.е. с какого документа? С техпаспорта? А он где? В коробке? Кладовщица матерясь полезла открывать коробку и искать паспорт на аглицком языке. Свежо предание, но верится с трудом. Я помнится делал прогу для коммисионки. Не универмаг конечно, но номенклатура тоже ого-го. Они тоже сначала хотели анализа по миллиону параметров. Но подумав, отказадлись. Я им просто сказал, что все эти параметры надо вводить ручками на все товары, сами они ни от куда не возьмутся. Убедил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 19:01 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
2 Евгений3 : Евгений3Т.е. в значениях свойств ты хранишь несколько типо в колонок и из них используется только одна, которая указана в описании самого типа? да... есть у меня под это дело спец. компонентик.. (сам писал ;-) ) Евгений3По поводу иерархии в каталоге, т.е. есть типы-ветки, а есть конкретные позиции-листья? ну это зависит от конкретной реализации.... Евгений3И листья могут иметь лишь те типы параметры, что приписаны для родительских элементов? ну немного перефразирую... у товаров могут быть только те свойства, что заданы для номенклатурной группы, в которую входит выбранная номенклатура... Евгений3Это экономит лишнюю таблицу, позволяет сделать наследование, не уверен, что наследование в данном случае стоит трудозатрат на его реализацию... опыт показывает, что номенклатурные группы меняются не так часто, что бы было сложно задать свойства один раз для группы и забыть.... Евгений3но усложняет работу - начинается какой-то иерерхо-объектный подход. Или я тебя не правильно понял? наверное неправильно (сорри, но я как экстрасенс не особо.. так что не могу угадать, КАК ты понял).... на самом деле всё не так то и сложно... рекомендую 1-м шагом сделать выбор конкретной группы.. а далее выводить тока список номерклатур в выбранной группе... с возможностью указывать, СКОЛЬКО товарных единиц каждого наименования надо добавить в спецификацию заказа.... ну и можно предусмотреть ещё выборку не тока по номенклатурной группе , но, скажем, по какому-нить фильтру.. ну там типа categoryTitle like ? or articul like ? .... тогда в данном случае можно или одной из колонок вывести название группы... ну или группировать по названию группы - делай, как нравится... Евгений3Кстати, тут есть спецы по иерархическим или объектым базам? как там решить эту задачу? вроде как в BOL был пример построения дерева.... да и на форуме неоднократно возникает этот вопрос (как построить дерево)... С уважением, Petr@Chulkov.NET Microsoft Certified Professional Chulkov.Net - Trustworthy Knowledge ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 19:26 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
2Серега: если интересует ТОЛЬКО ведение учёта заказа - тогда хватит артикула и цены по каждой позиции. а если в дальнейшем понадобится доп. функционал - тогда хотя бы тот минимум, что я перечислил стоит вводить (что бы хотя бы примерно можно было бы оценить потребность в транспорте для заказа и т.д.).... а о доп. св-вах - дело вкуса.. если например в дальнейшем будут делать, к примеру, возможность потенциальным клиентам (перед покупкой) ознакомится с сортаментом товаров через WWW ( для крупных городов не такая уж и плохая мысль ), где консультанта рядом нет, то это - даже таки очень правильно... С уважением, Petr@Chulkov.NET Microsoft Certified Professional Chulkov.Net - Trustworthy Knowledge ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 19:33 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
Офф-топиком на офф-топик :) авторВ универмаге про зумы фотоаппарата должен знать продавец-консультант. Он на то и консультант. В БД это тянуть совсем необязательно. Ты прикинь ... Бывают еще интернет-магазины. И не надо говорить что в России не бывает интернет-магазинов. С нынешними темпами научно-технического прогресса очень часто получается что пока систему напишут и внедрят, пройдет столько времени, что через пару лет эксплуатации ее начинают использовать не совсем для того, для чего ее разрабатывали (и по целям, и по объемам). Давайте допустим, что лет через 5 у всех будут интернет магазины. С такой базой ваши клиенты окажутся в ...пе. У них дела пойдут плохо и закончатся деньги. Они перестанут заказывать у вашей конторы программы, а новых клиентов тоже не будет. Контора закроется а вам придется искать новую работу :(. Печальный опыт вашей конторы будут знать все программисты города, отчего резюме Ваше будет Вам только мешать найти работу. Еще раз прошу прощения за офтоп. P.S. да и вообще, зачем тогда база нужна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2004, 03:25 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
По моему, путаются две задачи - справочник для учета товара на складе и информационная база о товарах, каталог заказов. Если говорить строго, это два разных справочника. Первый ведется по артикулам товаров, а второй по кодам заказа. В каталоге может значится под одим кодом заказа - "шторы синие производства китай", этой позиции может соответствовать дюжина конкретных артикулов от разных производителей, которые шьют одинаковые шторы. А пришить одно к другому нет никаких проблем. Учет на складе должен вестись по артикулам и номерам партий. Информацию о товаре в развернутом виде в учетной базе хранить смысла нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2004, 09:09 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
To Petr Chulkov: А почему Вы в в таблице значений свойств товаров имеете несколько полей (5) на значение параметра? Я бы хранил значение в 1 единственном текстовом поле, а уже на клиенте в зависимости от типа параметра с использованием Variant преобразовывал его к нужному виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2004, 11:50 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
2Shtock : стиль программирования такой, что ли... ну не люблю я конвертировать данные.. т.к. это часто бывает связано с потерей оных... а не хочется... конечно можно хранить всё в sql_variant поле... но зачем ? когда у меня клиентский компонент всё это дело аккуратно сам разбрасывает по нужным полям... O-) С уважением, Petr@Chulkov.NET Microsoft Certified Professional Chulkov.Net - Trustworthy Knowledge ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2004, 11:20 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
Может и не стоило писать, все равно офтопик, но... 2Dmitriy Popov Бывают еще интернет-магазины. И не надо говорить что в России не бывает интернет-магазинов. А бывают еще транснациональные корпорации и не надо говорить что в России никогда не будет транснациональных корпораций. Только софта они требуют другого (принципиально другого!!!), нежели для универмага. Лично я предпочитаю писАть для тех кто будет с этим работать здесь и сейчас. И желательно по утвержденному (или хотя бы оговоренному) ТЗ. Еще раз сори за офтопик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2004, 09:33 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
2 Евгений3 Пишем предложение Рынок.Магазин.Товар.Название.Цвет.краска.Упаковка.Тара.Кол-во.Цена или так Товар.Марка.(Кол-во1,Кол-во_2).Цена С виду это похоже на ...оператор в ООП. Такие "фразы" - у вас могут в бесконечном своем разнообразии.... Для хранения этой инфо и автоматической выборки сущности - достаточно и необходимо иметь всего одну таблицу БД - имя которой - Дерево. Но эта таблица в отличие от подобных имеет в себе -- дерево атрибутов -- дерево ярлыков (..."иконок" ..ссылок на другие строки дерева) Тогда можно сделать примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Такая схема позволит все описать - и используя (увы (иногда) промежуточные таблицы - курсоры) - на автомате расшифровать иерархию любой сложности - а значит - для разных видов товаров узнать значения любых атрибутов. Результат - можно привести к записи типа : Товар.Марка.(атрибут1,атрибут2....).Цена Или на оборот имея - формулу товара - получить все валуе. Формула Товара - это по сути шаблон (алгоритм) для расшифровки дерева....его можно также хранить в БД. Пример 1 - в такое табло лично запихал черт_знает что (от подсистемы доступа....) когда все коллекции сущностей - все в одном табло.... "внизу" - оригиналы "вверху" - иерархии ссылок на оригиналы. Пример 2 В интерфейсе есть 3 кнопки - создать пустую строку копировать_узел копировать_линк При их нажатии, в Дереве появляются новые строки: - просто новые, или копии других строк ИЛИ - "Ярлыки (линки)" - на некие другие строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2004, 16:26 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
2UK0IAI А можно уточнить какие поля будут у такой таблицы - дерева? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2007, 16:18 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
amaxa2UK0IAI А можно уточнить какие поля будут у такой таблицы - дерева?Это вопрос автору ? Посмотрите на дату топика :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2007, 19:17 |
|
||
|
Универсальный каталог "разношерстных" товаров.
|
|||
|---|---|---|---|
|
#18+
amaxa2UK0IAI А можно уточнить какие поля будут у такой таблицы - дерева? Если в таблице для "дерева" обычно всего три поля = ID_RECORD (КОД ...ТОВАРА) ID_ROOT_RECORD (КОД РОДИТЕЛЯ = (КОД ГРУППЫ ТОВАРА) NM_RECORD (ИМЯ ЗАПИСИ ....ИМЯ ТОВАРА) то здесь надо добавить еще два-три поля ID_KLASS_RECORD ( ТИП ЗАПИСИ - НЕКИЙ ШИФР ..ПОМОГАЕТ КЛАССИФИЦИРОВАТЬ АТРИБУТЫ) ID_LINK_TO_RECORD (ССЫЛКА (ЛИНК) НА НЕКИЙ УЗЕЛ В ДЕРЕВЕ ИЛИ СТРОКУ В ДЕРЕВЕ, ГДЕ В ЗАВИСИМОСТИ ОТ ID_KLASS_RECORD ПЕРЕЧИСЛЕННЫ КОЛЛЕКЦИИ АТРИБУТОВ В СВОЕМ ПРОИЗВОЛЬНОМ НАБОРЕ) ID_TIP_RECORD - (ЧТО ТО ... ТИПА ПРИЗНАКА... ЧТО ТАКОЕ "ПРОПИСАНО" (СТРОКА, УЗЕЛ, ССЫЛКА...) - СЕРВИСНОЕ ПОЛЕ, ПОМОГАЕТ "парсить" ДЕРЕВО). Для доступа с дереву используются конструкции типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. В общем, мы сначала читаем все дерево "как есть", а потом дополнительно зачитываем строки дерева что имеют "ссылки" на другие узлы/строки дерева с помощью поля ID_LINK_TO_RECORD. Это так сказать базовый алгоритм, практическая реализация может быть весьма изощренной. Я как то использовал рекурсивный алгоритм, когда в зависимости от ID_KLASS_RECORD и проверки на NULL поля ID_LINK_TO_RECORD происходит автоматическая расшифровка дерева произвольной глубины и своим набором атрибутов, с записью результата во временную таблицу. ИМХО, это все не для продакшион, ибо работает медленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 18:32 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=32401302&tid=1544352]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
218ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 253ms |
| total: | 603ms |

| 0 / 0 |
