На практике могли бы посмотреть примеры из существующих CMS, тот же опенкарт.
По сути самый простой способ хранения он же и самый оптимальный, т.е. минимально таблица категории такая - id, название категории, id ближайшего родителя.
Несмотря на то, что в статейке по ссылке от Дархан Камалиев
Дархан Камалиев этот вариант отнесен к плохим, нужно просто сделать ход конем - выгружаем всю таблицу категории простейшим скоростным запросом и далее обрабатываем силами PHP, который с такими задачками справляется на раз-полтора.