Има повече опции от само двете, които споменавате. Има:
- Списък на съседство („parent_id“, който почти всеки използва)
- Вложени набори
- Изброяване на пътя
- Таблица на затваряне (известна още като релация на съседство)
Вижте моя отговор на „Кой е най-ефективният/елегантен начин за анализиране на плоска таблица в дърво? "
Или няколко книги:
- "Дървета и йерархии в SQL за Smarties “ от Джо Селко.
- "SQL шаблони за проектиране “ от Вадим Тропашко.