A hierarchy is a directed tree whose nodes are dimensional attributes and whose arcs model many-to-one associations between dimensional attribute pairs.

It includes a dimension, positioned at the tree’s root, and all of the dimensional attributes that describe it.




For example, in the product dimension hierarchy you will have an arc from product to type to express the type of each product, an arc from product to brand to express its brand, an arc from type to category to express the fact that all the drink type products belong to the food category, an arc from category to department to express the fact that all of the food category products are sold in the food department, and so on.

In relational terminology, each arc in a hierarchy models a functional dependency between two attributes:

product type

product brand,
type
 category

category department


Because the transitive property applies to functional dependencies, each directed path inside a hierarchy represents in turn a functional dependency between the start and end attributes.

For example, product type and type category imply product category.

For example, the city where a store is located defines the state to which that store belongs.

In other terms, any two dimensional attributes that belong to the same hierarchy and are connected by a directed path (like product and category) are in a many-to-one association.

Any other two dimensional attributes (like type and brand in the same hierarchy, or product and city in different hierarchies) are in a many-to-many relationship.