Adjacency list
Det enklaste och vanligaste sättet att lagra ett träd i SQL: varje rad har en parent_id som pekar på sin förälder. Lätt att förstå och uppdatera, men att hämta hela underträd kräver rekursiva frågor.
Mekanik: en självrefererande tabell där parent_id är en främmande nyckel till samma tabells primärnyckel; rotnoder har NULL. Vinst: trivialt att lägga till/flytta noder (ändra bara en parent_id), naturligt och normaliserat. Pris: att hämta alla ättlingar/förfäder kräver antingen flera frågor (en per nivå) eller en rekursiv CTE (WITH RECURSIVE) — kan bli långsamt för djupa träd. Det är den klassiska modellen man börjar med; om underträds-läsningar blir en flaskhals byter man till materialized path, nested set eller closure table. De flesta ORM:er stöder den direkt. Standardvalet för måttliga hierarkier (kategorier, kommentarstrådar, organisationsträd). Hör ihop med rekursiv fråga och materialized path.