Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение неглубоких деревьев / 18 сообщений из 18, страница 1 из 1
23.03.2010, 11:17
    #36536336
Bazzilic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
Всем привет.

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

Организации: о1, о2, о3, о4, о5, о6;
о1 и о2 - в группе г1, о3 и о4 - в группе г2, группа г2 и организация о5 - в группе г3, о6 - не состоит ни в каких группах.

Регулярные задачи - выяснить, в какой группе (-ах) состоит организация и, наоборот, выяснить, какие организации состоят в определенной группе.

Вопрос - как было бы правильнее хранить эту информацию в базе данных? Работа с этими структурами ведется процедурами и функциями в самой базе.

Спасибо!
...
Рейтинг: 0 / 0
23.03.2010, 11:45
    #36536429
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
Возможно ли одновременное нахождение в двух разных ветках дерева ?
Если нет, то нужны поля ID, ParentID.
...
Рейтинг: 0 / 0
23.03.2010, 11:53
    #36536453
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
LSVВозможно ли одновременное нахождение в двух разных ветках дерева ?
Если нет, то нужны поля ID, ParentID.И упремся в рекурсивные вызовы
...
Рейтинг: 0 / 0
23.03.2010, 11:57
    #36536470
Bazzilic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
LSV
Нет, невозможно
...
Рейтинг: 0 / 0
23.03.2010, 12:11
    #36536523
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
если данные этой таблицы модифицируются относительно редко, а в основном выборки на чтение, то разумно сделать см. пункт Множественная модель деревьев
С уважением, Naf
...
Рейтинг: 0 / 0
23.03.2010, 12:15
    #36536545
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
Bazzilic,

У Вас, в принципе, вложенность организаций и принадлежность к группам не связаны.

Потому при создании организации наследуйте от родителя ее группы и все.


Или же не все сказано. Например это CRM со сложными зависимостями и периодически все меняется =)
...
Рейтинг: 0 / 0
23.03.2010, 12:16
    #36536547
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
NafLSVВозможно ли одновременное нахождение в двух разных ветках дерева ?
Если нет, то нужны поля ID, ParentID.И упремся в рекурсивные вызовы
а почему "упремся"? Речь же идет не о бетонной стене, а о банальном рекурсивном вызове.
...
Рейтинг: 0 / 0
23.03.2010, 12:17
    #36536553
Bazzilic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
Naf
Это невозможно же читать :) Там, кажется, гугл-переводчик автор текста...
...
Рейтинг: 0 / 0
23.03.2010, 12:19
    #36536559
Bazzilic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
Siemargl
А как учитывать вложенность групп тогда?
И что такое CRM?
...
Рейтинг: 0 / 0
23.03.2010, 12:30
    #36536595
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
iscrafmNafLSVВозможно ли одновременное нахождение в двух разных ветках дерева ?
Если нет, то нужны поля ID, ParentID.И упремся в рекурсивные вызовы
а почему "упремся"? Речь же идет не о бетонной стене, а о банальном рекурсивном вызове.
Запросы будут тяжелыми и многократными, например хотим получить продажи с учетом иерархии:

Код: plaintext
1.
2.
3.
4.
5.
6.
Европа 1500
 Россия 1000
    Москва  700
    Питер   300
 Украина 500
    Киев    300
    Харьков 200
...
Рейтинг: 0 / 0
23.03.2010, 12:35
    #36536617
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
Bazzilic Naf
Это невозможно же читать :) Там, кажется, гугл-переводчик автор текста...Нормальное чтиво, есть оригинал на английском, поищи
...
Рейтинг: 0 / 0
23.03.2010, 13:55
    #36536927
Deamon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
Bazzilic,

Если вложенность групп небольшая, то разумно сделать одно символьное поле.
Фиксировать дерево в виде "<root_id>\<child_id1>\<child_id2>\....\<end_id>"
Поиск в таком "дереве", перемещение узлов/веток - не проблема.
Поддержка целостности - на триггерах.
Это если вложенность действительно небольшая. И если задача действительно ограничивается размещением элемента в какой-либо группе.
...
Рейтинг: 0 / 0
23.03.2010, 14:40
    #36537127
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
> Ситауция такая

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

Hint: есть такая лавчонка по имени Philips, у нее около 2 тыс. обособленных бизнес-единиц и несколько вертикальных иерархий.
...
Рейтинг: 0 / 0
23.03.2010, 15:08
    #36537261
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
Запросы будут тяжелыми и многократными, например хотим получить продажи с учетом иерархии:Не обязательно. Можно иметь отдельную таблицу, в кот. есть все пары значений ID, Parent, т.е. полный путь от листа до корня дерева. По связке с этой таблицей можно одним простым запросом получить итоги по любой подветке.
Эту таблицу можно рулить триггерами. Она будет большой, но узкой.
...
Рейтинг: 0 / 0
23.03.2010, 18:41
    #36537994
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
LSVНе обязательно. Можно иметь отдельную таблицу, в кот. есть все пары значений ID, Parent, т.е. полный путь от листа до корня дерева. По связке с этой таблицей можно одним простым запросом получить итоги по любой подветке.
Эту таблицу можно рулить триггерами. Она будет большой, но узкой.
+1
для статичных деревьев с запросами вверх-вниз по иерархии лучше нет.
...
Рейтинг: 0 / 0
23.03.2010, 19:04
    #36538034
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
Осталось выяснить, поддерживает ли сервер ТСа рекурсивные запросы.
...
Рейтинг: 0 / 0
23.03.2010, 19:09
    #36538040
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
SiemarglОсталось выяснить, поддерживает ли сервер ТСа рекурсивные запросы.
для отчетов и расчетов на сервере можно без рекурсии вполне обойтись.
...
Рейтинг: 0 / 0
23.03.2010, 19:29
    #36538065
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение неглубоких деревьев
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение неглубоких деревьев / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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