массивах для вставки? Генерируются внешним кодом? Есть какой-то встроенный функционал внутри сервера может быть?
В смысле - 1...8 могут быть с помощью автоинкремента реализованы, данные "полезной нагрузки" я сам генерирую, а вот положение элемента (его путь) - откуда он берется?
id | name
-------------------
1 | comment_1
2 | comment_1_1
3 | comment_1_1_1
4 | comment_1_2
5 | comment_2
6 | comment_2_1
7 | comment_2_2
8 | comment_3
Вот это сам запрос:
INSERT INTO tree (id, path, name) VALUES
(1, '{1}', 'item_1'),
(2, '{1,2}', 'item_1_1'),
(3, '{1,2,3}', 'item_1_1_1'),
(4, '{1,2,4}', 'item_1_1_2'),
(5, '{1,5}', 'item_1_2'),
(6, '{1,5,6}', 'item_1_2_1'),
(7, '{1,5,7}', 'item_1_2_2'),
(8, '{8}', 'item_2');
"Может быть, у Вас в основном запросы, которые проще выражаютя с materialized path?" - я наткнулся на статью с описанием основных подходов (там было три вида) и понял, что materialized path скорее всего наиболее мне подходит.
> Генерируются внешним кодом? Так path — это позиция, куда Вы хотите поместить узел. Т.е. Вы сами её указываете при вставке (или генерируете при вставке узла X как дочернего к узлу с Id Y, можно и триггером). (И вообще такое дерево лучше поддерживать триггерами, наверное.) > автор ссылается на что-то под названием "LTREE" для Postgres, но что это я толком пока не могу понять... Это (являющееся частью самого PostgreSQL) расширение для работы с древовидными структурами. Вообще, наверное, Вам лучше подробнее спрашивать в канале по PostgreSQL ( https://t.me/pgsql ).
Это не дерево. Это просто одна колонка в таблице, указывающая на ид вышестоящей сущности.
Обсуждают сегодня