In the database management lexicon, a "hierarchy" is a data structure wherein each component has only one parent and a parent can have multiple children in one-to-many relationships. One department, many projects, for example. If the design requires a child component to have multiple parents, database people call that a "network." Although class inheritance design for data abstraction and database data structure design are quite different, they have this architectural basis in common. But class design calls everything a "hierarchy," even where multiple inheritance is used. There is no linguistic ambiguity there. Database design simply chooses to narrow the meaning of the word in a quest for precision in the terminology. But in classical organizational hierarchies originally defined in terms of the clergy, components can be subordinate to multiple higher components students can have many teachers, employees can have multiple supervisors, a private better salute every general, and so on and that's where the word comes from. So I have no problem referring to multiple inheritance class designs as "class hierarchies."
A.S.
Back to Article