Хранение деревьев

Как хранить древовидные, иерархические структуры данных в реляционной базе данных? Например дерево категорий товаров и т.п. Особенно когда одна категория или товар может входить в сразу несколько категорий. Классификация, категоризация. 

Связующая таблица, таблица связей, таблица замыканий, closure table

Метод связующей таблицы. У нас есть какие то объекты (сущности, вещи, штуки), которые должны лежать (храниться) в иерархическом виде. В общем они связанны в виде древовидной ветвящейся структуры. Теперь представьте, что у вас есть одна таблица первая, основная в которой вы записываете все свои объекты. Вы записываете их просто подряд никак не указывая, как они между собой связаны. Можно сказать, что структура реальности никак не храниться в самой таблице. Глядя на данные в таблице вы никак не можете понять по самим данным, какие иерархические, классовые, категорийные отношения есть у данных. Затем вы создаете еще одну таблицу в которой вдоволь можете описывать структуру данных, схему, связи, дерево ту иерархию. Эта таблица является связующей, она связывает строки из основной первой таблицы иерархическими отношениями.

В первой таблице данные хранятся в простом, сухом виде тупо данные, а карта, схема храниться в во второй таблице.

Один из минусов данного метода, что нужно добавлять всем категориям их родительские причем даже вышестоящие уровни. К счастью есть SQL запрос для этой задачи, который автоматизирует это и другие действия по добавлению и изменению данных. 

Хранение древовидных, иерархических структур в реляционной базе данных это довольно таки жоповая задача, говорит вам доктор Центов мои дорогие друзья.