powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Многоуровневый справочник товаров
25 сообщений из 28, страница 1 из 2
Многоуровневый справочник товаров
    #33037336
CubeRoot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, дамы и господа.
Прекрасно понимаю, что решение моего вопроса лежит на поверхности, но все-тки попытаюсь спросить.
Имеется N категорий товаров ( групп) - родителей
в Каждой категории может быть от 0 до N подгрупп, и так далее.
Своего рода справочник товаров по примеру 1С.
товары могут находится или в родительской группе или в одной из подгрупп.
Необходим подход по проектированию такого рода БД.
Причем хотелось бы предусмотреть перенос как товаров так и подгрупп, сохранив целостность БД ( в задумке - журнал счетов, в котором будут фигурировать товары из вышеуказанной БД).
ДАнные базы предполагается обрабатывать под MSSQL.

PS: ЗАранее спасибо за ответ
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33037416
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
categories
- id
- parent_id
- name
- ...

products
- id
- category_id
- name
- ...
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33037419
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дарево?
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33037421
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СерегаДарево?
В смысле дерево.
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33037427
CubeRoot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДА - вариант дерева
но с предполагаемой большой вложенностью подгрупп.
можно ли избежать роста таблиц с подгруппами ?
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33037498
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CubeRootможно ли избежать роста таблиц с подгруппами ?
Каких таблиц? Всего одна таблица. Товаром является только то, у чего нет "потомков". Остальное группы/подгруппы.
Только геморойно это все - ужас.
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33037782
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СерегаТолько геморойно это все - ужас.
Некоторое время назад тут отгремел огромный топик на тему "деревья в MSSQL не хуже, чем в Oracle" :)

Но вообще говоря для справочника товаров и подобных вещей - то есть для таблиц, ограниченных, например, полумиллионом записей - connect by таки весьма удобная штука.
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33037825
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для прочтения : тынц

Best regards,
Dnico
.
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33037830
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerНо вообще говоря для справочника товаров и подобных вещей - то есть для таблиц, ограниченных, например, полумиллионом записей - connect by таки весьма удобная штука.
Я имел в виду геморой другого рода. Когда например некий "товар" становится "группой". Типа была "Просто Обувь", а после захотелось сделать "Детскую", "Женскую" и т.д. Или захотелось выделить цвет товара. Но красный может быть и детским и железным и каким угодно еще.
Т.е. когда нет четких критериев по классификации, надо быть очень осторожным при работе с таким классификатором. Тем более, что изменять его юзер может практически постоянно.
А получить деревянную цепочку - это дело техники на любой БД.

Разумеется все исключительно ИМХО.
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33038268
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ имел в виду геморой другого рода. Когда например некий "товар" становится "группой". Типа была "Просто Обувь", а после захотелось сделать "Детскую", "Женскую" и т.д. Или захотелось выделить цвет товара. Но красный может быть и детским и железным и каким угодно еще.
Где тут геморрой? Не вижу. Как решат использовать, так и будет. Захотят, чтобы красные детские спортивные тапочки были в группах "Красные", "Спортивные", "Детские" и "Тапочки" - будут везде. Захотят в одном - будут в одном. Это определяет только административно закрепленные методы учета и работы, что касается самой программы - ей по барабану, где и что лежит: есть группы, есть товары, товары в группах, все.

-- Tygra's --
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33038314
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraГде тут геморрой? Не вижу.
Ну и хорошо.
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33038835
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СерегаЯ имел в виду геморой другого рода. Когда например некий "товар" становится "группой". Типа была "Просто Обувь", а после захотелось сделать "Детскую", "Женскую" и т.д. Или захотелось выделить цвет товара. Но красный может быть и детским и железным и каким угодно еще.
Ээ.. По-моему, Вы говорите о чем-то не имеющем отношения к реальному миру.

Товар - не может стать группой, если говорить о нашей реальности. Товар - это объект учета; пришло сто двадцать пар ботинок детских, артикул такой-то, код товара такой-то, код партии такой-то, прочее такое-то так-то. Группа - это некое виртуальное понятие, абстракция, придуманное для облегчения работы мозга.

Группы могут быть перестроены, и товар - отнесен той или иной группе, а то и куче групп сразу. Запросто. На самом товаре это никак не сказывается.

Если проектировщик спутал разные понятия - это странно и нехорошо, но мне скорее интересно - где он взял входные данные. Я в принципе готов представить некую аналитическую систему, на входе которой данные огрубляются до "просто обувь", а потом клиент вдруг хочет более подробный анализ. Но и там товар группой не становится, просто достраивается дерево групп. Ну и может потребоваться заново импортнуть данные.
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33038928
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЭэ.. По-моему, Вы говорите о чем-то не имеющем отношения к реальному миру.
Похоже да, перегрелся я, сбоить начал.
Я почему то (черт его знает почему, наверное из-за соседней ветки про деревья или еще почему) решил, что и товары и группы будут в одной таблице (типа файловая система). Это конечно нонсенс. Сори.
Но даже если принять, что в дереве хранятся только группы, то все равно обслуживание такой системы намного сложнее, чем с однозначной классификацией.
Я так полагаю, что товар должен соотноситься только с конечной подгруппой. Может быть с несколькими, но все равно с конечными. Иначе смыл детализации теряется.
Когда вводится новый уровень детализации (дробится предыдущий) товар надо разнести по новым уровням. Автоматом это не сделаешь.
Я не говорю, что это невозможно сделать. Можно. Но дополнительный геморой на лицо (если так можно выразиться ). Поэтому без особой нужды, я бы на это не подписАлся.
Все исключительно ИМХО.
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33039080
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНо даже если принять, что в дереве хранятся только группы, то все равно обслуживание такой системы намного сложнее, чем с однозначной классификацией.
Я так полагаю, что товар должен соотноситься только с конечной подгруппой. Может быть с несколькими, но все равно с конечными. Иначе смыл детализации теряется.
Когда вводится новый уровень детализации (дробится предыдущий) товар надо разнести по новым уровням. Автоматом это не сделаешь.
Я не говорю, что это невозможно сделать. Можно. Но дополнительный геморой на лицо (если так можно выразиться ). Поэтому без особой нужды, я бы на это не подписАлся.
Ну когда уровень детализации дробится, то хочешь не хочешь, придется товар разбрасывать - это тоже не задача программистов а задача управления. Причем тут вообще это? Ну захотели раздробить - раздробили. Что сразу бы раздробили, что потом, одно и то же.
Если говорить о том, куда девать товары, то все просто тут:
когда создается подргруппа у группы, а эта группа была конечной и на ней висят товары, то создается еще одна подгруппа, например "Буффер", привязывается к этой же группе и все товары из группы переносятся в этот "Буффер". Итого мы имеем чистую уже не конечную группу, созданную подгруппу и автоматически созданную подгруппу, в которую перенесли все товары.
Либо просто все товары переносим в новую созданную подгруппу.
В общем, это как захочется.

-- Tygra's --
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33039293
Фотография vma_mnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант

Группы в одной таблице, ограничили число вложений до 9 (10 это сам товар)

Товар в другой. Везде в документах код товара.

А в справочнике товар и любые группы, подгруппы могут как угодно соединяться, двигаться и т.д. На целостность данных это не влияет, только на аналитику.

Кроме того, для каждого товара можно ввести еще произвольно до 10 признаков классификации (любые).

Получилось неплохо. Если, например, в качестве признака выбран цвет, то можно выбрать только красный товар, ну и так далее.
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33039295
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Серега... перегрелся я, сбоить начал.Везет же людям, а у нас холодно.
СерегаЯ почему то (черт его знает почему, наверное из-за соседней ветки про деревья или еще почему) решил, что и товары и группы будут в одной таблице (типа файловая система). Это конечно нонсенс. Сори.Почему же сразу нонсенс. Выше по топику обсуждается классификация товаров. Разные направления классификации харнятся в разных деревьях, вычячими вершинами которых являются товары.

Но древовидной может быть и сама номенклатура. Например, компьютер - 1-й уровень, монитор, ситемный блок, клавиши, мыша - 2-й уровень, корпус, материнка, винт, ... - третий уровень и т.д. Вершина каждого уровня имеет свой код и может быть предметом учета.

Это красиво теоретически. Есть практическая реализация, например, в IT предприятии. Лично я не сторонник такой организации номенклатуры. Пока она маленькая, все красиво. Но когда разрастается - теряется основное преимущество дерева - наглядность структуры. Ну а все деревянные недостатки остаются.

Автор топика может уточнить задачу, что именно требуется.
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33040146
CubeRoot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, спасибо что откликнулись.
Попытаюсь конкретизировать свой вопрос.

Итак. компания занимается поставкой оборудования для тепло-водоснабжения и соответственно запчастей.

В нашей 1C реализован справочник товаров. Но так как отделу логистики работать не с руки в таком "шедевре программирования", решил для себя написать программу по MSSQL. Клиент будет на VB.
ЗАдача следующая
Имеем несколько сот тысяч наименований товаров, разных категорий и предназначений
Например:
Водонагреватели - (родитель в дереве)
-Сименс ( подгруппа)
-Аристон ( подгруппа)
-Запасные части ( подгруппа)
-Комплектующие ( подгруппа)

Далее в любой из подгрупп заносится соответствующий товар, который однозначно идентифицируется по артикулу.
При приеме заказа - со списка товаров - выбирается позиция и заносится в счет, который затем преобразуется в заказ поставщику и т.д.
Соответственно будет журнал счетов, в котором ссылками по ключу будет фигурировать та или иная позиция в счете.
Ситуация тут вот в чем - товар может быть не использован в дальнейшем - например снят с производства, но в архиве журнала счетов он должен проходить, даже если прошло год или два ( как вариант придумал завести лишнее поле с ЛОгическим типом - ДА - товар виден, НЕТ - товар не виден при запросе)
А вот товары, подгруппы могут добавляться, или переноситься в другие
группы ( как пример - решил разделить группы товаров на РОссийского или Импортного производства)
Каким образом идентифицировать подпод.....подгруппу к нужной группе и соответственно, каким образом соотнести товар к этой конечной группе?
PS: мозги сломал уже ))
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33040223
YBW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
YBW
Гость
CubeRootИмеем несколько сот тысяч наименований товаров, разных категорий и предназначений
Например:
Водонагреватели - (родитель в дереве)
-Сименс ( подгруппа)
-Аристон ( подгруппа)
-Запасные части ( подгруппа)
-Комплектующие ( подгруппа)



ошибочная структура - чреватый многими проблемами подход...

во первывых - чем запасные части отличаются от комплектующих?
во вторых - чем Сименс отличается от Аристона

классический вариант выглядит так

изделия>узлы>>детали
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33040233
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все же не очень понятно, зачем такая... эээ... ненормализованная схема.


А, скажем, "мобильные телефоны" у вас тоже отдельный корень в дереве и в нем подгруппа Siemens ? И потом когда вам (вдруг) понадобится отыскать все товары сименса, то-то ваш дба попляшет с бубном ...

А, запчасти от Сименса не могут быть? ( а если могут, в какую подгруппу вы поместите товар?)

На мой взгляд вам разумнее было бы завести отдельную таблицу "группы" (там "Водонагреватели", "Комплектующие" "Запччасти" и еще что вы придумаете), и когда вам надо учесть краник от самовара, вы его добавляете (скажем) в группы "Запчасти" "Самовары" "Отечественные товары" "Made in Тула" .

А производителя (сименс/alcаtel) лучше бы вынести в отдельный справочник.
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33040244
CubeRoot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YBW CubeRootИмеем несколько сот тысяч наименований товаров, разных категорий и предназначений
Например:
Водонагреватели - (родитель в дереве)
-Сименс ( подгруппа)
-Аристон ( подгруппа)
-Запасные части ( подгруппа)
-Комплектующие ( подгруппа)



ошибочная структура - чреватый многими проблемами подход...

во первывых - чем запасные части отличаются от комплектующих?
во вторых - чем Сименс отличается от Аристона

классический вариант выглядит так

изделия>узлы>>детали

Запасные части - например ( прокладки, шайбы)
Комплектующие - группы безопасности, манометры - в общем эт самостоятельные агрегаты
Водонагреватели разбиты по группам - для удобства - один брэнд - одна группа
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33040271
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХренА производителя (сименс/alcаtel) лучше бы вынести в отдельный справочник.
Я бы рассмотрел задачу чуть шире - хочется классифицировать товар по нескольким независимым категориям. Безусловно, если категории жестко заданы - можно сделать справочник производителей (кстати, тоже иерархический - например, по странам, или по разным производствам внутри одного производителя), можно сделать справочник по другой-третьей-пятой категории. Если же сам набор классифицирующих признаков нечеткий - не остается ничего как только заложиться на этот подход; сделать возможность наличия нескольких альтернативных иерархий. Соответственно, стирмашка будет в подгруппе "стирмашки" группы "бытовая техника" и одновременно в подгруппе "аристон" группы "европейские производители". В последней - вместе с каким-нибудь электродвигателем к себе же, который одновременно входит в группу "запчасти / стирмашки" или еще что-нибудь в том же духе.
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33040349
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Соответственно, стирмашка будет в подгруппе "стирмашки" группы "бытовая техника" и одновременно в подгруппе "аристон" группы "европейские производители". В последней - вместе с каким-нибудь электродвигателем к себе же, который одновременно входит в группу "запчасти / стирмашки" или еще что-нибудь в том же духе.

А если не alcatel, а скажем, sony-ericsson? в какие страны его?

На мой взгляд все же разумнее иметь 1 уровень в группах. Скажем таблицы

товар ( id name)
группа (id name)
товар_группа (id_товара id_группы)

и при добавлении товара стирмашинка, добавлять в товар_группа "бытовая техника", "аристон", "италия", "европа" .

Это существенно упростит поиск по любым условиям.

Ну если лень добавлять _все_ группы, можно приделать триггер, чтобы при добавлении "аристон" в товар группа, туда же писалась "Италия". А при добавлении "италия", иуда же писалась "европа". Всего лишь одна добавочная таблица.
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33040392
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХренА если не alcatel, а скажем, sony-ericsson? в какие страны его?
Вы задаете как раз тот вопрос, который является ответом на вопрос "чем плоха жесткая структура". Аналитики могут захотеть любое решение.

ХренНа мой взгляд все же разумнее иметь 1 уровень в группах. Скажем таблицы

товар ( id name)
группа (id name)
товар_группа (id_товара id_группы)
И куда Вы отнесете автомагнитолу? В "аудиотехнику" или в "автомобильные аксессуары"? А автомобильную зарядку для мобильника Nokia?

ХренЭто существенно упростит поиск по любым условиям.
Разумеется. Поскольку жестко ограничит возможности классификации.
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33040409
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
И куда Вы отнесете автомагнитолу? В "аудиотехнику" или в "автомобильные аксессуары"?


????

И туда и туда.. В товар_группа - несколько записей, относящихся к одному товару.
...
Рейтинг: 0 / 0
Многоуровневый справочник товаров
    #33040462
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХренИ туда и туда.. В товар_группа - несколько записей, относящихся к одному товару.
Тогда я, видимо, Вас не понял. Прошу прощения.

Давайте тогда вернемся к "одноуровневости". Насколько я понимаю, Вы предлагаете вместо иерархической классификации делать отдельные группы для каждого уровня иерархии - так? Ну и соответственно включать товар во всех группы, соответствующие родительским уровням иерархии.

Плюс, который я вижу в таком решении на физическом уровне - скорость запросов. Минусы - идут на логическом уровне. Во-первых, тогда встает вопрос отображения; drilldown - любимая операция многих пользователей. Во-вторых, в некоей причудливой классификации компания может быть отнесена к "транснациональным" и не иметь страны, в другой - быть отнесена к конкретной стране (например, по расположению головного офиса). В результате может потребоваться создать похожие группы (а объяснить необходимость этого будет тяжело :), возникнут дурацкие проблемы с "набросай быстренько селект, который вернет всех итальянцев".

Поэтому я предпочел бы иметь таки явно выраженную иерархическую структуру; в то же время в рамках денормализации, вполне вероятно, завел бы таблицу, подобную Вашей товар_группа.

Собственно, как я понимаю, расхождение осталось только в наличии или отсутствии parent_id в таблице групп. Предлагаю решить, что здесь стоит смотреть по обстановке.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Многоуровневый справочник товаров
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]