Реляційні системи управління базами даних на основі SQL лише частково підходять для ієрархічних або рекурсивних запитів. Інші системи, такі як ArangoDB, тут кращі (про це чудово говорили на GOTO 2016 ). Але ви також можете створювати рекурсивні запити в SQL за допомогою загальних виразів таблиць і таким чином запитувати класичні батьківські / дочірні таблиці для всіх предків і нащадків.
Наприклад, у PostgreSQL це виглядає так:
0672c4761d202a35a9059fa137ace7c3
Якщо ви хочете отримати всіх дочірніх елементів певного item_id, ви використовуєте загальні вирази таблиці:
0672c4761d202a35a9059fa137ace7c3
Запитати батьків теж не проблема:
0672c4761d202a35a9059fa137ace7c3