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

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

id | name

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

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

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

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


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

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

id | parentid | name

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


id | parentid | name | idbrand | idcountry | idtype

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

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

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

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

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

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

id | parent | name | idtovar

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

id | name

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

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

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

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

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

id | parent | name | idtovar

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

id | name

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

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

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

Хотелось бы услышать минусы этого решения.ничего не понял
...
Рейтинг: 0 / 0
15.10.2009, 10:21
    #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
15.10.2009, 10:26
    #36252296
Naf
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
15.10.2009, 10:28
    #36252306
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура товарного справочника
хотя имеет право на жизнь ))
С уважением, Naf
...
Рейтинг: 0 / 0
15.10.2009, 10:31
    #36252318
DinDim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура товарного справочника
Naf,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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