powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура товарного справочника
23 сообщений из 23, страница 1 из 1
Структура товарного справочника
    #36251811
DinDim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Есть товарный справочник

id | name

Его необходимо упорядочить в следующей иерархии

Катерория001
Катерогия002
Категория003

Товар может быть привязан только к последнему уровню в этой иерархии, категорий на любом уровне вложенности может быть несколько.

Кроме того, у товара существуют еще одноуровневые разрезы, по которым его необходимо сегментировать, а именно:
1. Фирма изготовитель
2. Страна
3. Тип


Собственно вопрос, как оптимально организовать структуру таблиц под эти сущности, с учетом того, что уровни в иерархии могут быть дополнены со временем, а одноуровневые классификаторы увеличатся в количественном выражении, т.е. их станет больше.

Пока мысль такая, хранить иерархию с наименованием товара с одной таблице вида

id | parentid | name

а одноранговые классификаторы связать с этой таблицей с помощью внешних ключей
в результате получим


id | parentid | name | idbrand | idcountry | idtype

Решение не нравится с точки зрения масштабируемости, с иерархией вопрос решается, а вот при увеличении классификаторов придется добавлять поля и ключи к ним.

Спасибо.
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36251892
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товар (с полями product_id, name, idbrand, idcountry, idtype) отдельно
категории (cat_id, parent_id, cat_name) и иерархии отдельно
Плюс таблица пересечений cat_id,product_id c контролем последнего уровня иерархии
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252107
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблицы:
1. ИерархияТовара (Ключ, Наименование, КлючРодитель)
2. Товар (Ключ, Наименование, КлючИерархии)
3. Свойства (Ключ, Наименование)
4. ЗначенияСвойств (Ключ, Наименование, КлючСвойства)
5. ЗначенияСвойствТовара (Ключ, КлючТовара, КлючЗначенияСвойства)
Кстати, для иерархии удобно использовать иерархию вложенностью, она замедлит скорость модификации таблицы иерархий (но ведь вы не так часто ее будете менять?) зато позволит быстрее строить отчеты с учетом иерархии. Об этом, например, здесь

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

Придется - и это правильно.
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252242
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модDinDimа вот при увеличении классификаторов придется добавлять поля и ключи к ним.

Придется - и это правильно.
не совсем согласен, есть свойства присущие только определенным товарам
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252258
DinDim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если сделать так 2 таблицы

одна таблица иерархии

id | parent | name | idtovar

и таблица товаров

id | name

товары связаны с иерархией один ко многим

В иерархии будет сама иерархия + классификаторы товаров как верхние уровни с parent = null

Таким образом если товар у нас находится в "Катрегоии03", его фирма производитель "SONY" а страна "Япония" то в таблице иерархии для этого товара будет 3 записи.

Хотелось бы услышать минусы этого решения.
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252264
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinDimА если сделать так 2 таблицы

одна таблица иерархии

id | parent | name | idtovar

и таблица товаров

id | name

товары связаны с иерархией один ко многим

В иерархии будет сама иерархия + классификаторы товаров как верхние уровни с parent = null

Таким образом если товар у нас находится в "Катрегоии03", его фирма производитель "SONY" а страна "Япония" то в таблице иерархии для этого товара будет 3 записи.

Хотелось бы услышать минусы этого решения.ничего не понял
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252282
DinDim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Naf,

допустим в таблице товаров запись
id= 1
name = "пылесос"

в таблице иерархии

id | parent | name | idtovar

1 | null | category01 | null
2 | 1 | category02 | null
3 | null | Brand | null
4 | 3 | Sony | null
5 | null | Country | null
6 | 5 | Japan | null

Для товара пыселос в таблице иерархии будут 3 записи

7 | 1 | null | 1
8 | 3 | null | 1
9| 5 | null | 1

Приблизительно вот так...
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252296
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinDimNaf,

допустим в таблице товаров запись
id= 1
name = "пылесос"

в таблице иерархии

id | parent | name | idtovar

1 | null | category01 | null
2 | 1 | category02 | null
3 | null | Brand | null
4 | 3 | Sony | null
5 | null | Country | null
6 | 5 | Japan | null

Для товара пыселос в таблице иерархии будут 3 записи

7 | 1 | null | 1
8 | 3 | null | 1
9| 5 | null | 1

Приблизительно вот так...плохо, неграмотно и неудобно
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252306
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя имеет право на жизнь ))
С уважением, Naf
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252318
DinDim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Naf,

Вот я бы и хотел услышать почему плохо, не грамотно и не удобно. Пока единственный минус вижу в том, что самому нужно контролировать, чтоб запись из таблицы товаров не дублировалась в иерархии и классификаторах, но это можно обойти путем проверки существования записи на самом верхнем уровне с parent = null
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252365
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinDimNaf,

Вот я бы и хотел услышать почему плохо, не грамотно и не удобно. Пока единственный минус вижу в том, что самому нужно контролировать, чтоб запись из таблицы товаров не дублировалась в иерархии и классификаторах, но это можно обойти путем проверки существования записи на самом верхнем уровне с parent = nullВы смешиваете разные сущности и связи в одну кучу: как вы проверите, что ваш товар не будет лежать в 2-х иерархиях, если уровень иерархии неограничен? как вы отличите иерарахию от свойства-классификации?
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252399
DinDim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NafDinDimNaf,

Вот я бы и хотел услышать почему плохо, не грамотно и не удобно. Пока единственный минус вижу в том, что самому нужно контролировать, чтоб запись из таблицы товаров не дублировалась в иерархии и классификаторах, но это можно обойти путем проверки существования записи на самом верхнем уровне с parent = nullВы смешиваете разные сущности и связи в одну кучу: как вы проверите, что ваш товар не будет лежать в 2-х иерархиях, если уровень иерархии неограничен? как вы отличите иерарахию от свойства-классификации?

Вот!!! теперь по существу:

1. уровень иерархии неограничен, но товар может находится только на самой последней ветке, проверить его существование в иерархии легко, найдя parent=null ветки, куда я хочу его вставить

2. Отличать иерархию и классификаторы не нужно, условие одно, товар может находится только один раз в каждой ветке со значением parent = null

3. А смешивая сущности я добиваюсь универсальности

Эти минусы меня тоже смущают, поэтому и обратился на форум, но в целом решение универсальное, что кажется большим плюсом.
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252431
DinDim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Naf,

В предложенной Вами выше модели отлично контролируется, то что товар может находится только на одном уровне иерархии, но связь классификаторов с товаров тоже придется контролировать руками, т.е. в таблицу которая связывает значение классификатора и значения товара, можно занести, что товар относится и к SONY и к Panasonic например... Вот если б еще и это контролировалось СУБД, решение было бы полностью универсальным.
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252444
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinDimNaf,

В предложенной Вами выше модели отлично контролируется, то что товар может находится только на одном уровне иерархии, но связь классификаторов с товаров тоже придется контролировать руками, т.е. в таблицу которая связывает значение классификатора и значения товара, можно занести, что товар относится и к SONY и к Panasonic например... Вот если б еще и это контролировалось СУБД, решение было бы полностью универсальным.уникальный ключ для пары полей (КлючТовара, КлючЗначенияСвойства) в таблице ЗначенияСвойствТовара
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252450
DinDim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NafDinDimNaf,

В предложенной Вами выше модели отлично контролируется, то что товар может находится только на одном уровне иерархии, но связь классификаторов с товаров тоже придется контролировать руками, т.е. в таблицу которая связывает значение классификатора и значения товара, можно занести, что товар относится и к SONY и к Panasonic например... Вот если б еще и это контролировалось СУБД, решение было бы полностью универсальным.уникальный ключ для пары полей (КлючТовара, КлючЗначенияСвойства) в таблице ЗначенияСвойствТовара

Я так и сделал, но контролирует только что товар не может дважды относится к SONY, но не контролирует, что товар может относится и к SONY и к Panasonic
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252546
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinDimNafDinDimNaf,

В предложенной Вами выше модели отлично контролируется, то что товар может находится только на одном уровне иерархии, но связь классификаторов с товаров тоже придется контролировать руками, т.е. в таблицу которая связывает значение классификатора и значения товара, можно занести, что товар относится и к SONY и к Panasonic например... Вот если б еще и это контролировалось СУБД, решение было бы полностью универсальным.уникальный ключ для пары полей (КлючТовара, КлючЗначенияСвойства) в таблице ЗначенияСвойствТовара

Я так и сделал, но контролирует только что товар не может дважды относится к SONY, но не контролирует, что товар может относится и к SONY и к Panasonic
Добавьте в таблицу ЗначенияСвойствТовара поле КлючСвойства и уникальный индекс по паре (КлючТовара, КлючСвойства), правда это нарушит нормализацию
либо
вставьте триггер на вставку/изменение проверяющее уникальность
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252567
DinDim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NafDinDimNafDinDimNaf,

В предложенной Вами выше модели отлично контролируется, то что товар может находится только на одном уровне иерархии, но связь классификаторов с товаров тоже придется контролировать руками, т.е. в таблицу которая связывает значение классификатора и значения товара, можно занести, что товар относится и к SONY и к Panasonic например... Вот если б еще и это контролировалось СУБД, решение было бы полностью универсальным.уникальный ключ для пары полей (КлючТовара, КлючЗначенияСвойства) в таблице ЗначенияСвойствТовара

Я так и сделал, но контролирует только что товар не может дважды относится к SONY, но не контролирует, что товар может относится и к SONY и к Panasonic
Добавьте в таблицу ЗначенияСвойствТовара поле КлючСвойства и уникальный индекс по паре (КлючТовара, КлючСвойства), правда это нарушит нормализацию
либо
вставьте триггер на вставку/изменение проверяющее уникальность

Вариант, но видите при этом решение теряет нормализацию, как и у меня в двух таблицах.
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252600
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinDimNafDinDimNafDinDimNaf,

В предложенной Вами выше модели отлично контролируется, то что товар может находится только на одном уровне иерархии, но связь классификаторов с товаров тоже придется контролировать руками, т.е. в таблицу которая связывает значение классификатора и значения товара, можно занести, что товар относится и к SONY и к Panasonic например... Вот если б еще и это контролировалось СУБД, решение было бы полностью универсальным.уникальный ключ для пары полей (КлючТовара, КлючЗначенияСвойства) в таблице ЗначенияСвойствТовара

Я так и сделал, но контролирует только что товар не может дважды относится к SONY, но не контролирует, что товар может относится и к SONY и к Panasonic
Добавьте в таблицу ЗначенияСвойствТовара поле КлючСвойства и уникальный индекс по паре (КлючТовара, КлючСвойства), правда это нарушит нормализацию
либо
вставьте триггер на вставку/изменение проверяющее уникальность

Вариант, но видите при этом решение теряет нормализацию, как и у меня в двух таблицах.
нормализация это не священная корова, но есть же и второй вариант - триггер
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252655
DinDim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Naf,

Спасибо, идею я понял, теперь буду обдумывать все за и против вашего и моего решения.
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36252689
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinDimNaf,

Спасибо, идею я понял, теперь буду обдумывать все за и против вашего и моего решения.
подумайте насчет иерархии вложенностью интервалов, очень удобная вещь для построения отчетов с учетом иерархии произвольной вложенности
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36253637
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nafне совсем согласен, есть свойства присущие только определенным товарам
Так и д.б. Соответственно товары с пустыми св-ми не попадут в соотвт. классификатор.
...
Рейтинг: 0 / 0
Структура товарного справочника
    #36253733
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNafне совсем согласен, есть свойства присущие только определенным товарам
Так и д.б. Соответственно товары с пустыми св-ми не попадут в соотвт. классификатор.
каждый раз изменять структуру? и ваше поле может быть заполнено у тысячи элементов из 100 тысяч и так по каждому свойству
плюс таблица на каждое свойство отдельная
для основных полей согласен, но для факультативных нужно искать золотую середину
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура товарного справочника
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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