There are (in general) three common patterns for representing a hierarchical structure within a database. In general, all three maintain “structural data” beyond just tracking foreign keys, and each have their advantages and disadvantages depending upon the relative frequency of common operations on those structures.
See my post at Some modelling advice - #12 by KenWhitesell for more details and a couple of useful links. (And yes, we still rely upon treebeard.)