When creating a project schema, in certain situations one must decide whether to create an attribute or an attribute form. When is it better to choose one option rather than the other?
Attributes are the business concepts that are reflected in your data. They provide a context in which to report on and analyze business facts or calculations. (Example: Customer, Store, Product, Month, Employee, etc.)
Attribute forms are additional descriptive information about a business attribute. When a one-to-one relationship exists between an attribute and one of its descriptions, you can model these additional pieces of descriptive information as attribute forms. When a parent-child relationship is found (1:M, M:1, M:M), then it is likely that an attribute should be created instead of an attribute form.
Attributes allow more flexible data modeling and thus reporting and analysis.
In most cases, it is better to use separate attributes that have a parent-child relationship for the following reasons:
Attributes can appear independently of each other on a report. On the other hand, if an attribute form is created it may never appear apart from the attribute in which it is included.
In order to aggregate data at a particular level, that object must exist as an attribute. Moreover, it is not possible to use an attribute form as part of a metric dimensionality.
Attribute lookup tables are joined to other tables only on the basis of the attribute ID. Attribute forms may never have an ID independent of the attributes that own them.
Attribute forms are appropriate under the following circumstance:
- When an additional description is needed for an attribute but the descriptor will not be needed for data aggregation or report organization.
- To provide a custom order of the attribute elements.
If an attribute’s lookup table contains numerous columns of descriptive information, such as first name, last name, address, email, etc., users may think it is logical to view all of these as forms of the attribute because they are additional descriptors of the same level of aggregation.