Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии / 10 сообщений из 10, страница 1 из 1
28.09.2009, 00:32
    #36219606
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
Доброй ночи!
Помогите, пожалуйста, студенту разобраться вот с такой темой (задачей) для дипломной работы.
-----------------------------------------------------------------------------------------------------
Постановка задачи.

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

Дополнение.
Другими словами, например, есть работник по имени John, и необходимо вывести его подчиненных, подчиненных его подчиненных и так далее, до тех пор, пока не дойдем до низа иерархической лестницы(или заданной вложенности). Вся соль в том, что у работника Johnа может быть большое число подчиненных(т.е. без ограничения), так же и у его подчиненных может быть большое число подчиненных (т.е. без ограничения) и т.д. до конца иерархической цепочки. Кроме того, если работник John уволился из организации, необходимо модифицировать связи.

Замечания.
В качестве инструментария рекомендовано использовать бесплатную (условно бесплатную) реляционную базу данных, например MySQL.

-----------------------------------------------------------------------------------------------------

Как я понимаю, иерархия представляет собой - ацикличный ориентированный граф (возможно ошибаюсь). Порылся в поиске, нашел некоторые решения, но возможно, сейчас существую иные, более эффективные решения поставленной задачи. В сети, нашел метод основанный на “Карте Путей”, т.е. создается таблица RelationMap, хранящая все пути между любыми связанными записями, и так же нет информации о его эффективности.

Подскажите, пожалуйста, в какую сторону копать, чтобы меньше топтаться по граблям, “изобретая велосипед”. Возможно есть какая-то литература по данной теме.
...
Рейтинг: 0 / 0
28.09.2009, 01:27
    #36219630
taper_mobile
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
capscom, есть подозрение, что то, как идеологически правильно, и то что нужно для эффективной работы в конкретном случае это зачастую разные вещи.

Как вариант - таблица NxN для N сотрудников. Где пересечение строки и столбца показывает силу связи между сотрудниками. 1- непосредственное подчинение, 2 - через одного, -1 - обратное подчинение. Дорого по объему данных, но должно быть достаточно эффективно выбирать указанную иерархию :)
...
Рейтинг: 0 / 0
28.09.2009, 01:32
    #36219632
taper_mobile
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
capscom, невнимательно читал ваше исходное сообщение, видимо это и есть эта самая карта путей.
...
Рейтинг: 0 / 0
28.09.2009, 20:20
    #36221354
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
А вот если не упираться в реляционные базы данных, то какие бы типы БД было бы верно использовать под такую задачу?
...
Рейтинг: 0 / 0
28.09.2009, 20:31
    #36221369
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
Просто планируются большие нагрузки и множество связей.
...
Рейтинг: 0 / 0
29.09.2009, 00:38
    #36221694
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
capscomПросто планируются большие нагрузки и множество связей.это вам пожалуй в раздел "сравнение СУБД"
...
Рейтинг: 0 / 0
29.09.2009, 10:10
    #36221937
_мод
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
capscomРазработать методику, позволяющую максимально быстро выбирать всех потомков (или предков) заданной записи или группы записей, в том числе и потомков (или предков) удаленных от заданной записи на заданное число шагов или вплоть до низа(конца) иерархической лестницы.

Графы хорошо обрабатываются рекурсивными функциями
...
Рейтинг: 0 / 0
29.09.2009, 12:27
    #36222322
deleted_2ks3ax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
Почитайте про nested sets и еще вот тут .
Nested sets идеально подходят для быстрых выборок, но если задача подразумевает много вставок/изменений/удалений узлов, то могут возникнуть проблемы.
----
Think twice before you press F5.
...
Рейтинг: 0 / 0
29.09.2009, 20:25
    #36223745
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
Ap0k, спасибо!!! - возьму алгоритм на заметку.
_мод, а рекурсивность на уровне бд (если, например, речь идет об Oracle XE) как сказывается на производительности на большом графе?
...
Рейтинг: 0 / 0
30.09.2009, 09:29
    #36224208
_мод
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
capscom а рекурсивность на уровне бд (если, например, речь идет об Oracle XE) как сказывается на производительности на большом графе?
Я имел ввиду рекурсию на программном уровне - обход графа. На уровне СУБД Oracle имеет иерархические запросы - вполне производительные.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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