Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, дамы и господа. Прекрасно понимаю, что решение моего вопроса лежит на поверхности, но все-тки попытаюсь спросить. Имеется N категорий товаров ( групп) - родителей в Каждой категории может быть от 0 до N подгрупп, и так далее. Своего рода справочник товаров по примеру 1С. товары могут находится или в родительской группе или в одной из подгрупп. Необходим подход по проектированию такого рода БД. Причем хотелось бы предусмотреть перенос как товаров так и подгрупп, сохранив целостность БД ( в задумке - журнал счетов, в котором будут фигурировать товары из вышеуказанной БД). ДАнные базы предполагается обрабатывать под MSSQL. PS: ЗАранее спасибо за ответ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 07:24 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
categories - id - parent_id - name - ... products - id - category_id - name - ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 09:08 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
Дарево? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 09:09 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
СерегаДарево? В смысле дерево. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 09:09 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
ДА - вариант дерева но с предполагаемой большой вложенностью подгрупп. можно ли избежать роста таблиц с подгруппами ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 09:14 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
CubeRootможно ли избежать роста таблиц с подгруппами ? Каких таблиц? Всего одна таблица. Товаром является только то, у чего нет "потомков". Остальное группы/подгруппы. Только геморойно это все - ужас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 09:55 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
СерегаТолько геморойно это все - ужас. Некоторое время назад тут отгремел огромный топик на тему "деревья в MSSQL не хуже, чем в Oracle" :) Но вообще говоря для справочника товаров и подобных вещей - то есть для таблиц, ограниченных, например, полумиллионом записей - connect by таки весьма удобная штука. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 11:53 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 12:06 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
softwarerНо вообще говоря для справочника товаров и подобных вещей - то есть для таблиц, ограниченных, например, полумиллионом записей - connect by таки весьма удобная штука. Я имел в виду геморой другого рода. Когда например некий "товар" становится "группой". Типа была "Просто Обувь", а после захотелось сделать "Детскую", "Женскую" и т.д. Или захотелось выделить цвет товара. Но красный может быть и детским и железным и каким угодно еще. Т.е. когда нет четких критериев по классификации, надо быть очень осторожным при работе с таким классификатором. Тем более, что изменять его юзер может практически постоянно. А получить деревянную цепочку - это дело техники на любой БД. Разумеется все исключительно ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 12:07 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
авторЯ имел в виду геморой другого рода. Когда например некий "товар" становится "группой". Типа была "Просто Обувь", а после захотелось сделать "Детскую", "Женскую" и т.д. Или захотелось выделить цвет товара. Но красный может быть и детским и железным и каким угодно еще. Где тут геморрой? Не вижу. Как решат использовать, так и будет. Захотят, чтобы красные детские спортивные тапочки были в группах "Красные", "Спортивные", "Детские" и "Тапочки" - будут везде. Захотят в одном - будут в одном. Это определяет только административно закрепленные методы учета и работы, что касается самой программы - ей по барабану, где и что лежит: есть группы, есть товары, товары в группах, все. -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 14:11 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
tygraГде тут геморрой? Не вижу. Ну и хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 14:22 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
СерегаЯ имел в виду геморой другого рода. Когда например некий "товар" становится "группой". Типа была "Просто Обувь", а после захотелось сделать "Детскую", "Женскую" и т.д. Или захотелось выделить цвет товара. Но красный может быть и детским и железным и каким угодно еще. Ээ.. По-моему, Вы говорите о чем-то не имеющем отношения к реальному миру. Товар - не может стать группой, если говорить о нашей реальности. Товар - это объект учета; пришло сто двадцать пар ботинок детских, артикул такой-то, код товара такой-то, код партии такой-то, прочее такое-то так-то. Группа - это некое виртуальное понятие, абстракция, придуманное для облегчения работы мозга. Группы могут быть перестроены, и товар - отнесен той или иной группе, а то и куче групп сразу. Запросто. На самом товаре это никак не сказывается. Если проектировщик спутал разные понятия - это странно и нехорошо, но мне скорее интересно - где он взял входные данные. Я в принципе готов представить некую аналитическую систему, на входе которой данные огрубляются до "просто обувь", а потом клиент вдруг хочет более подробный анализ. Но и там товар группой не становится, просто достраивается дерево групп. Ну и может потребоваться заново импортнуть данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 16:54 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
softwarerЭэ.. По-моему, Вы говорите о чем-то не имеющем отношения к реальному миру. Похоже да, перегрелся я, сбоить начал. Я почему то (черт его знает почему, наверное из-за соседней ветки про деревья или еще почему) решил, что и товары и группы будут в одной таблице (типа файловая система). Это конечно нонсенс. Сори. Но даже если принять, что в дереве хранятся только группы, то все равно обслуживание такой системы намного сложнее, чем с однозначной классификацией. Я так полагаю, что товар должен соотноситься только с конечной подгруппой. Может быть с несколькими, но все равно с конечными. Иначе смыл детализации теряется. Когда вводится новый уровень детализации (дробится предыдущий) товар надо разнести по новым уровням. Автоматом это не сделаешь. Я не говорю, что это невозможно сделать. Можно. Но дополнительный геморой на лицо (если так можно выразиться ). Поэтому без особой нужды, я бы на это не подписАлся. Все исключительно ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 17:24 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
авторНо даже если принять, что в дереве хранятся только группы, то все равно обслуживание такой системы намного сложнее, чем с однозначной классификацией. Я так полагаю, что товар должен соотноситься только с конечной подгруппой. Может быть с несколькими, но все равно с конечными. Иначе смыл детализации теряется. Когда вводится новый уровень детализации (дробится предыдущий) товар надо разнести по новым уровням. Автоматом это не сделаешь. Я не говорю, что это невозможно сделать. Можно. Но дополнительный геморой на лицо (если так можно выразиться ). Поэтому без особой нужды, я бы на это не подписАлся. Ну когда уровень детализации дробится, то хочешь не хочешь, придется товар разбрасывать - это тоже не задача программистов а задача управления. Причем тут вообще это? Ну захотели раздробить - раздробили. Что сразу бы раздробили, что потом, одно и то же. Если говорить о том, куда девать товары, то все просто тут: когда создается подргруппа у группы, а эта группа была конечной и на ней висят товары, то создается еще одна подгруппа, например "Буффер", привязывается к этой же группе и все товары из группы переносятся в этот "Буффер". Итого мы имеем чистую уже не конечную группу, созданную подгруппу и автоматически созданную подгруппу, в которую перенесли все товары. Либо просто все товары переносим в новую созданную подгруппу. В общем, это как захочется. -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 18:12 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
Как вариант Группы в одной таблице, ограничили число вложений до 9 (10 это сам товар) Товар в другой. Везде в документах код товара. А в справочнике товар и любые группы, подгруппы могут как угодно соединяться, двигаться и т.д. На целостность данных это не влияет, только на аналитику. Кроме того, для каждого товара можно ввести еще произвольно до 10 признаков классификации (любые). Получилось неплохо. Если, например, в качестве признака выбран цвет, то можно выбрать только красный товар, ну и так далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 19:53 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
Серега... перегрелся я, сбоить начал.Везет же людям, а у нас холодно. СерегаЯ почему то (черт его знает почему, наверное из-за соседней ветки про деревья или еще почему) решил, что и товары и группы будут в одной таблице (типа файловая система). Это конечно нонсенс. Сори.Почему же сразу нонсенс. Выше по топику обсуждается классификация товаров. Разные направления классификации харнятся в разных деревьях, вычячими вершинами которых являются товары. Но древовидной может быть и сама номенклатура. Например, компьютер - 1-й уровень, монитор, ситемный блок, клавиши, мыша - 2-й уровень, корпус, материнка, винт, ... - третий уровень и т.д. Вершина каждого уровня имеет свой код и может быть предметом учета. Это красиво теоретически. Есть практическая реализация, например, в IT предприятии. Лично я не сторонник такой организации номенклатуры. Пока она маленькая, все красиво. Но когда разрастается - теряется основное преимущество дерева - наглядность структуры. Ну а все деревянные недостатки остаются. Автор топика может уточнить задачу, что именно требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 19:54 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
Господа, спасибо что откликнулись. Попытаюсь конкретизировать свой вопрос. Итак. компания занимается поставкой оборудования для тепло-водоснабжения и соответственно запчастей. В нашей 1C реализован справочник товаров. Но так как отделу логистики работать не с руки в таком "шедевре программирования", решил для себя написать программу по MSSQL. Клиент будет на VB. ЗАдача следующая Имеем несколько сот тысяч наименований товаров, разных категорий и предназначений Например: Водонагреватели - (родитель в дереве) -Сименс ( подгруппа) -Аристон ( подгруппа) -Запасные части ( подгруппа) -Комплектующие ( подгруппа) Далее в любой из подгрупп заносится соответствующий товар, который однозначно идентифицируется по артикулу. При приеме заказа - со списка товаров - выбирается позиция и заносится в счет, который затем преобразуется в заказ поставщику и т.д. Соответственно будет журнал счетов, в котором ссылками по ключу будет фигурировать та или иная позиция в счете. Ситуация тут вот в чем - товар может быть не использован в дальнейшем - например снят с производства, но в архиве журнала счетов он должен проходить, даже если прошло год или два ( как вариант придумал завести лишнее поле с ЛОгическим типом - ДА - товар виден, НЕТ - товар не виден при запросе) А вот товары, подгруппы могут добавляться, или переноситься в другие группы ( как пример - решил разделить группы товаров на РОссийского или Импортного производства) Каким образом идентифицировать подпод.....подгруппу к нужной группе и соответственно, каким образом соотнести товар к этой конечной группе? PS: мозги сломал уже )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2005, 11:53 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
CubeRootИмеем несколько сот тысяч наименований товаров, разных категорий и предназначений Например: Водонагреватели - (родитель в дереве) -Сименс ( подгруппа) -Аристон ( подгруппа) -Запасные части ( подгруппа) -Комплектующие ( подгруппа) ошибочная структура - чреватый многими проблемами подход... во первывых - чем запасные части отличаются от комплектующих? во вторых - чем Сименс отличается от Аристона классический вариант выглядит так изделия>узлы>>детали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2005, 12:12 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
Все же не очень понятно, зачем такая... эээ... ненормализованная схема. А, скажем, "мобильные телефоны" у вас тоже отдельный корень в дереве и в нем подгруппа Siemens ? И потом когда вам (вдруг) понадобится отыскать все товары сименса, то-то ваш дба попляшет с бубном ... А, запчасти от Сименса не могут быть? ( а если могут, в какую подгруппу вы поместите товар?) На мой взгляд вам разумнее было бы завести отдельную таблицу "группы" (там "Водонагреватели", "Комплектующие" "Запччасти" и еще что вы придумаете), и когда вам надо учесть краник от самовара, вы его добавляете (скажем) в группы "Запчасти" "Самовары" "Отечественные товары" "Made in Тула" . А производителя (сименс/alcаtel) лучше бы вынести в отдельный справочник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2005, 12:15 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
YBW CubeRootИмеем несколько сот тысяч наименований товаров, разных категорий и предназначений Например: Водонагреватели - (родитель в дереве) -Сименс ( подгруппа) -Аристон ( подгруппа) -Запасные части ( подгруппа) -Комплектующие ( подгруппа) ошибочная структура - чреватый многими проблемами подход... во первывых - чем запасные части отличаются от комплектующих? во вторых - чем Сименс отличается от Аристона классический вариант выглядит так изделия>узлы>>детали Запасные части - например ( прокладки, шайбы) Комплектующие - группы безопасности, манометры - в общем эт самостоятельные агрегаты Водонагреватели разбиты по группам - для удобства - один брэнд - одна группа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2005, 12:17 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
ХренА производителя (сименс/alcаtel) лучше бы вынести в отдельный справочник. Я бы рассмотрел задачу чуть шире - хочется классифицировать товар по нескольким независимым категориям. Безусловно, если категории жестко заданы - можно сделать справочник производителей (кстати, тоже иерархический - например, по странам, или по разным производствам внутри одного производителя), можно сделать справочник по другой-третьей-пятой категории. Если же сам набор классифицирующих признаков нечеткий - не остается ничего как только заложиться на этот подход; сделать возможность наличия нескольких альтернативных иерархий. Соответственно, стирмашка будет в подгруппе "стирмашки" группы "бытовая техника" и одновременно в подгруппе "аристон" группы "европейские производители". В последней - вместе с каким-нибудь электродвигателем к себе же, который одновременно входит в группу "запчасти / стирмашки" или еще что-нибудь в том же духе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2005, 12:23 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
softwarer Соответственно, стирмашка будет в подгруппе "стирмашки" группы "бытовая техника" и одновременно в подгруппе "аристон" группы "европейские производители". В последней - вместе с каким-нибудь электродвигателем к себе же, который одновременно входит в группу "запчасти / стирмашки" или еще что-нибудь в том же духе. А если не alcatel, а скажем, sony-ericsson? в какие страны его? На мой взгляд все же разумнее иметь 1 уровень в группах. Скажем таблицы товар ( id name) группа (id name) товар_группа (id_товара id_группы) и при добавлении товара стирмашинка, добавлять в товар_группа "бытовая техника", "аристон", "италия", "европа" . Это существенно упростит поиск по любым условиям. Ну если лень добавлять _все_ группы, можно приделать триггер, чтобы при добавлении "аристон" в товар группа, туда же писалась "Италия". А при добавлении "италия", иуда же писалась "европа". Всего лишь одна добавочная таблица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2005, 12:42 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
ХренА если не alcatel, а скажем, sony-ericsson? в какие страны его? Вы задаете как раз тот вопрос, который является ответом на вопрос "чем плоха жесткая структура". Аналитики могут захотеть любое решение. ХренНа мой взгляд все же разумнее иметь 1 уровень в группах. Скажем таблицы товар ( id name) группа (id name) товар_группа (id_товара id_группы) И куда Вы отнесете автомагнитолу? В "аудиотехнику" или в "автомобильные аксессуары"? А автомобильную зарядку для мобильника Nokia? ХренЭто существенно упростит поиск по любым условиям. Разумеется. Поскольку жестко ограничит возможности классификации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2005, 12:52 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
softwarer И куда Вы отнесете автомагнитолу? В "аудиотехнику" или в "автомобильные аксессуары"? ???? И туда и туда.. В товар_группа - несколько записей, относящихся к одному товару. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2005, 12:56 |
|
||
|
Многоуровневый справочник товаров
|
|||
|---|---|---|---|
|
#18+
ХренИ туда и туда.. В товар_группа - несколько записей, относящихся к одному товару. Тогда я, видимо, Вас не понял. Прошу прощения. Давайте тогда вернемся к "одноуровневости". Насколько я понимаю, Вы предлагаете вместо иерархической классификации делать отдельные группы для каждого уровня иерархии - так? Ну и соответственно включать товар во всех группы, соответствующие родительским уровням иерархии. Плюс, который я вижу в таком решении на физическом уровне - скорость запросов. Минусы - идут на логическом уровне. Во-первых, тогда встает вопрос отображения; drilldown - любимая операция многих пользователей. Во-вторых, в некоей причудливой классификации компания может быть отнесена к "транснациональным" и не иметь страны, в другой - быть отнесена к конкретной стране (например, по расположению головного офиса). В результате может потребоваться создать похожие группы (а объяснить необходимость этого будет тяжело :), возникнут дурацкие проблемы с "набросай быстренько селект, который вернет всех итальянцев". Поэтому я предпочел бы иметь таки явно выраженную иерархическую структуру; в то же время в рамках денормализации, вполне вероятно, завел бы таблицу, подобную Вашей товар_группа. Собственно, как я понимаю, расхождение осталось только в наличии или отсутствии parent_id в таблице групп. Предлагаю решить, что здесь стоит смотреть по обстановке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2005, 14:05 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33040233&tid=1545905]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 361ms |

| 0 / 0 |
