На чем основан выбор хранения иерраричесикх данных
-
Частота обновления: не часто (1 раз в год), перемещение веток не предусмотрено
-
Сложность структуры ( 3 уровня вложенности )
-
Момент синхронизации :
- удаление узла - помечем флагом
- синхронизация по коду (маппинга)
Существующие методы храненя иерархических данных:
- Метод (Adjacency List) parent_id
Плюсы:
- быстрая вставка
- перемещение веток
- простота реализации
- для быстрой выборки результат придеться кешировать
Этот вариант, больше подходит, если давнные часто меняются
- Метод Closure table ( усовершенствованный предыдущий метод)
Плюсы
- просто
- быстрая выборка (если не учитывать сортировку )
Минусы
- не подходит, если частое обновление
- Nested sets
Плюсы
- скорость выборки уже с сортировкой
- Materialized Path
Плюсы
- записи выбираются уже отсортированными в нужном порядке.
- простота решения
- скорость выборок высокая (1 запрос)
- быстрая вставка
Внутренняя структура классификатора изначально представляет собой граф, где вершины – это объекты классификации, а дуги – информация соподчиненности объектов.
Структура кодового обозначения в блоке идентификации: ХХ ХХХ ХХХ КЧ,
где
1,2 знаки – объекты первого уровня классификации;
3,4,5 знаки – объекты второго уровня классификации;
6,7,8 знаки – объекты третьего уровня классификации;
КЧ – контрольное число.
постоянную глубину рекурсии
Вывод
-
если данные не часто меняюся, и структура классичифкатора небольшая использовать отдельную таблцу для классияикатора
-
второй момент, если данные листьев требуют отдельной структуры данных то и использовать отдельную таблицу
плюсы
-
поиск
-
вставка данных
-
плюс вынесит отдельную ьаблицу для срока хранения дел и документво
-
в БД для классфикатора использвать ltree