Как сделать иерархическую структуру таблицы?
Для хранения древовидных (иерархических) данных в реляционных БД обычно используют такие структуры:

Materialized Path
Nested Set
Adjacency List

Коряво это делается в виде self reference связей. В реальном мире для этого используются графовые базы данных