Trong bất kỳ cơ sở dữ liệu nào, nếu mỗi thành viên của "cây" có các thuộc tính giống nhau, tốt nhất bạn nên sử dụng bảng tự tham chiếu, đặc biệt nếu mỗi cây có 1 và chỉ 1 gốc trực tiếp.
IE.
HR
------
ID
first_name
last_name
department_id
sal
boss_hr_id (referneces HR.ID)
Thông thường, sếp lớn sẽ có NULL boss_hr_id
Để truy vấn cấu trúc như vậy, trong postgres, bạn có thể sử dụng CTE (câu lệnh "với đệ quy")
Đối với bảng trên, một truy vấn như thế này sẽ hoạt động:
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
)