|
|
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Есть товарный справочник id | name Его необходимо упорядочить в следующей иерархии Катерория001 Катерогия002 Категория003 Товар может быть привязан только к последнему уровню в этой иерархии, категорий на любом уровне вложенности может быть несколько. Кроме того, у товара существуют еще одноуровневые разрезы, по которым его необходимо сегментировать, а именно: 1. Фирма изготовитель 2. Страна 3. Тип Собственно вопрос, как оптимально организовать структуру таблиц под эти сущности, с учетом того, что уровни в иерархии могут быть дополнены со временем, а одноуровневые классификаторы увеличатся в количественном выражении, т.е. их станет больше. Пока мысль такая, хранить иерархию с наименованием товара с одной таблице вида id | parentid | name а одноранговые классификаторы связать с этой таблицей с помощью внешних ключей в результате получим id | parentid | name | idbrand | idcountry | idtype Решение не нравится с точки зрения масштабируемости, с иерархией вопрос решается, а вот при увеличении классификаторов придется добавлять поля и ключи к ним. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2009, 23:12 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
Товар (с полями product_id, name, idbrand, idcountry, idtype) отдельно категории (cat_id, parent_id, cat_name) и иерархии отдельно Плюс таблица пересечений cat_id,product_id c контролем последнего уровня иерархии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 01:19 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
Таблицы: 1. ИерархияТовара (Ключ, Наименование, КлючРодитель) 2. Товар (Ключ, Наименование, КлючИерархии) 3. Свойства (Ключ, Наименование) 4. ЗначенияСвойств (Ключ, Наименование, КлючСвойства) 5. ЗначенияСвойствТовара (Ключ, КлючТовара, КлючЗначенияСвойства) Кстати, для иерархии удобно использовать иерархию вложенностью, она замедлит скорость модификации таблицы иерархий (но ведь вы не так часто ее будете менять?) зато позволит быстрее строить отчеты с учетом иерархии. Об этом, например, здесь С уважением, Naf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 09:07 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
DinDimа вот при увеличении классификаторов придется добавлять поля и ключи к ним. Придется - и это правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 09:45 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
_модDinDimа вот при увеличении классификаторов придется добавлять поля и ключи к ним. Придется - и это правильно. не совсем согласен, есть свойства присущие только определенным товарам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 10:05 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
А если сделать так 2 таблицы одна таблица иерархии id | parent | name | idtovar и таблица товаров id | name товары связаны с иерархией один ко многим В иерархии будет сама иерархия + классификаторы товаров как верхние уровни с parent = null Таким образом если товар у нас находится в "Катрегоии03", его фирма производитель "SONY" а страна "Япония" то в таблице иерархии для этого товара будет 3 записи. Хотелось бы услышать минусы этого решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 10:10 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
DinDimА если сделать так 2 таблицы одна таблица иерархии id | parent | name | idtovar и таблица товаров id | name товары связаны с иерархией один ко многим В иерархии будет сама иерархия + классификаторы товаров как верхние уровни с parent = null Таким образом если товар у нас находится в "Катрегоии03", его фирма производитель "SONY" а страна "Япония" то в таблице иерархии для этого товара будет 3 записи. Хотелось бы услышать минусы этого решения.ничего не понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 10:12 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
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 Приблизительно вот так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 10:21 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
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 Приблизительно вот так...плохо, неграмотно и неудобно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 10:26 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
хотя имеет право на жизнь )) С уважением, Naf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 10:28 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
Naf, Вот я бы и хотел услышать почему плохо, не грамотно и не удобно. Пока единственный минус вижу в том, что самому нужно контролировать, чтоб запись из таблицы товаров не дублировалась в иерархии и классификаторах, но это можно обойти путем проверки существования записи на самом верхнем уровне с parent = null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 10:31 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
DinDimNaf, Вот я бы и хотел услышать почему плохо, не грамотно и не удобно. Пока единственный минус вижу в том, что самому нужно контролировать, чтоб запись из таблицы товаров не дублировалась в иерархии и классификаторах, но это можно обойти путем проверки существования записи на самом верхнем уровне с parent = nullВы смешиваете разные сущности и связи в одну кучу: как вы проверите, что ваш товар не будет лежать в 2-х иерархиях, если уровень иерархии неограничен? как вы отличите иерарахию от свойства-классификации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 10:42 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
NafDinDimNaf, Вот я бы и хотел услышать почему плохо, не грамотно и не удобно. Пока единственный минус вижу в том, что самому нужно контролировать, чтоб запись из таблицы товаров не дублировалась в иерархии и классификаторах, но это можно обойти путем проверки существования записи на самом верхнем уровне с parent = nullВы смешиваете разные сущности и связи в одну кучу: как вы проверите, что ваш товар не будет лежать в 2-х иерархиях, если уровень иерархии неограничен? как вы отличите иерарахию от свойства-классификации? Вот!!! теперь по существу: 1. уровень иерархии неограничен, но товар может находится только на самой последней ветке, проверить его существование в иерархии легко, найдя parent=null ветки, куда я хочу его вставить 2. Отличать иерархию и классификаторы не нужно, условие одно, товар может находится только один раз в каждой ветке со значением parent = null 3. А смешивая сущности я добиваюсь универсальности Эти минусы меня тоже смущают, поэтому и обратился на форум, но в целом решение универсальное, что кажется большим плюсом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 10:51 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
Naf, В предложенной Вами выше модели отлично контролируется, то что товар может находится только на одном уровне иерархии, но связь классификаторов с товаров тоже придется контролировать руками, т.е. в таблицу которая связывает значение классификатора и значения товара, можно занести, что товар относится и к SONY и к Panasonic например... Вот если б еще и это контролировалось СУБД, решение было бы полностью универсальным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 10:58 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
DinDimNaf, В предложенной Вами выше модели отлично контролируется, то что товар может находится только на одном уровне иерархии, но связь классификаторов с товаров тоже придется контролировать руками, т.е. в таблицу которая связывает значение классификатора и значения товара, можно занести, что товар относится и к SONY и к Panasonic например... Вот если б еще и это контролировалось СУБД, решение было бы полностью универсальным.уникальный ключ для пары полей (КлючТовара, КлючЗначенияСвойства) в таблице ЗначенияСвойствТовара ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 11:01 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
NafDinDimNaf, В предложенной Вами выше модели отлично контролируется, то что товар может находится только на одном уровне иерархии, но связь классификаторов с товаров тоже придется контролировать руками, т.е. в таблицу которая связывает значение классификатора и значения товара, можно занести, что товар относится и к SONY и к Panasonic например... Вот если б еще и это контролировалось СУБД, решение было бы полностью универсальным.уникальный ключ для пары полей (КлючТовара, КлючЗначенияСвойства) в таблице ЗначенияСвойствТовара Я так и сделал, но контролирует только что товар не может дважды относится к SONY, но не контролирует, что товар может относится и к SONY и к Panasonic ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 11:03 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
DinDimNafDinDimNaf, В предложенной Вами выше модели отлично контролируется, то что товар может находится только на одном уровне иерархии, но связь классификаторов с товаров тоже придется контролировать руками, т.е. в таблицу которая связывает значение классификатора и значения товара, можно занести, что товар относится и к SONY и к Panasonic например... Вот если б еще и это контролировалось СУБД, решение было бы полностью универсальным.уникальный ключ для пары полей (КлючТовара, КлючЗначенияСвойства) в таблице ЗначенияСвойствТовара Я так и сделал, но контролирует только что товар не может дважды относится к SONY, но не контролирует, что товар может относится и к SONY и к Panasonic Добавьте в таблицу ЗначенияСвойствТовара поле КлючСвойства и уникальный индекс по паре (КлючТовара, КлючСвойства), правда это нарушит нормализацию либо вставьте триггер на вставку/изменение проверяющее уникальность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 11:28 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
NafDinDimNafDinDimNaf, В предложенной Вами выше модели отлично контролируется, то что товар может находится только на одном уровне иерархии, но связь классификаторов с товаров тоже придется контролировать руками, т.е. в таблицу которая связывает значение классификатора и значения товара, можно занести, что товар относится и к SONY и к Panasonic например... Вот если б еще и это контролировалось СУБД, решение было бы полностью универсальным.уникальный ключ для пары полей (КлючТовара, КлючЗначенияСвойства) в таблице ЗначенияСвойствТовара Я так и сделал, но контролирует только что товар не может дважды относится к SONY, но не контролирует, что товар может относится и к SONY и к Panasonic Добавьте в таблицу ЗначенияСвойствТовара поле КлючСвойства и уникальный индекс по паре (КлючТовара, КлючСвойства), правда это нарушит нормализацию либо вставьте триггер на вставку/изменение проверяющее уникальность Вариант, но видите при этом решение теряет нормализацию, как и у меня в двух таблицах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 11:34 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
DinDimNafDinDimNafDinDimNaf, В предложенной Вами выше модели отлично контролируется, то что товар может находится только на одном уровне иерархии, но связь классификаторов с товаров тоже придется контролировать руками, т.е. в таблицу которая связывает значение классификатора и значения товара, можно занести, что товар относится и к SONY и к Panasonic например... Вот если б еще и это контролировалось СУБД, решение было бы полностью универсальным.уникальный ключ для пары полей (КлючТовара, КлючЗначенияСвойства) в таблице ЗначенияСвойствТовара Я так и сделал, но контролирует только что товар не может дважды относится к SONY, но не контролирует, что товар может относится и к SONY и к Panasonic Добавьте в таблицу ЗначенияСвойствТовара поле КлючСвойства и уникальный индекс по паре (КлючТовара, КлючСвойства), правда это нарушит нормализацию либо вставьте триггер на вставку/изменение проверяющее уникальность Вариант, но видите при этом решение теряет нормализацию, как и у меня в двух таблицах. нормализация это не священная корова, но есть же и второй вариант - триггер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 11:41 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
Naf, Спасибо, идею я понял, теперь буду обдумывать все за и против вашего и моего решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 11:53 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
DinDimNaf, Спасибо, идею я понял, теперь буду обдумывать все за и против вашего и моего решения. подумайте насчет иерархии вложенностью интервалов, очень удобная вещь для построения отчетов с учетом иерархии произвольной вложенности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 12:01 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
Nafне совсем согласен, есть свойства присущие только определенным товарам Так и д.б. Соответственно товары с пустыми св-ми не попадут в соотвт. классификатор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 16:25 |
|
||
|
Структура товарного справочника
|
|||
|---|---|---|---|
|
#18+
_модNafне совсем согласен, есть свойства присущие только определенным товарам Так и д.б. Соответственно товары с пустыми св-ми не попадут в соотвт. классификатор. каждый раз изменять структуру? и ваше поле может быть заполнено у тысячи элементов из 100 тысяч и так по каждому свойству плюс таблица на каждое свойство отдельная для основных полей согласен, но для факультативных нужно искать золотую середину ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 16:47 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36252258&tid=1543034]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
186ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 530ms |

| 0 / 0 |
