Junior — Middle
Kakšen pristop ali podatkovno strukturo bi uporabili za shranjevanje in prikaz družinskega drevesa v relacijski bazi podatkov?
sobes.tech AI
Odpoveď od AI
Na uloženie rodokmeňa v relačnej databáze sa často používa štruktúra "Zoznam susedov" (Adjacency List). V tabuľke sa uchováva každá osoba s odkazom na rodiča (napríklad pole parent_id).
Príklad štruktúry tabuľky:
| id | meno | parent_id |
|---|---|---|
| 1 | Ivan | NULL |
| 2 | Mária | 1 |
| 3 | Aleksej | 1 |
Tento prístup je jednoduchý na implementáciu a umožňuje stavať strom rekurzívnym dopytovaním potomkov alebo predkov.
Pre zložitejšie dopyty je možné použiť:
- Vnorené sety — uloženie ľavých a pravých hraníc pre rýchle vyhľadávanie podstromov.
- Materializovaná cesta — uloženie cesty ku uzlu ako reťazca.
Ale pre väčšinu úloh je "Zoznam susedov" dostatočný a dobre podporovaný štandardnými SQL dopytmi.