Във всяка база данни, ако всеки член на "дървото" има едни и същи свойства, най-добре е да използвате самореферентна таблица, особено ако всяко дърво има 1 и само 1 пряк родител.
Т.Е.
HR
------
ID
first_name
last_name
department_id
sal
boss_hr_id (referneces HR.ID)
Обикновено големият шеф ще има NULL boss_hr_id
За да направите заявка за такава структура, в postgres, можете да използвате CTEs („с рекурсивен“ израз)
За таблицата по-горе заявка като тази ще работи:
with recursive ret(id, first_name, last_name, dept_id,boss_hr_id) as
(
select * from hr
where hr.id=**ID_OF_PERSON_YOU_ARE_QUERYING_STRUCTURE**
union
select hr.id, hr.first_name, hr.last_name,hr.dept_id,hr.boss_hr_id, lev+1 from hr
inner join ret on ret.boss_hr_id=hr.hr_id
)
select * from ret
)