My first Publication Agile-Data-Warehouse-Design-eBook | Page 132
Modeling Business Processes
111
Figure 4-11
Adding shipment
dimensions to the
matrix
Generalization: Model Spoiler Alert
Role-playing dimensions, such as EMPLOYEE [RP] , are examples of generalization: Generalization
a technique frequently used in data modeling to increase the flexibility of a model to creates smaller
represent more varied things, and in database design to reduce the number of more flexible data
database objects that need to be created and maintained. models that work
well for packaged
Generalized data models work well for packaged application vendors, because they
applications
want to create databases that do not need to be changed for each new customer or
industry. Generalization removes customer or industry-specific meanings and
business rules from the data model and places them in reference data-driven
application logic.
A common generalization design pattern is the use of a single Party entity to repre- Party and Party
sent all who details (persons and organizations), with an associative entity Party Role are common
Role to represent their various types, positions, titles, and responsibilities, ( e.g. examples of
customer, employee, supplier, etc). This database pattern is capable of recording generalized entities
the multiple positions that people might hold throughout their lives or the multiple used to model all
responsibilities they might have simultaneously, but is it a good generalization to types of people and
make when modeling a data warehouse? If BI stakeholders are explicitly looking for organizations
people who change roles—such as spies and criminals who change identities, or
government regulators who become political lobbyists—then a generic who dimen-
sion that plays multiple roles might be exactly what they need.
However, if stakeholders are not terribly concerned about role switchers, or the Stakeholders may
available data sources simply lack any reliable means of capturing role changes, not see any obvious
then this design flexibility is wasted. Worse still, it can get in the way of what BI benefit in
stakeholders really want to do. For example, a single dimension representing generalization
Customers and Employees containing every possible who related attribute would be
very confusing to use compared to separate dimensions containing customer and
employee specific attributes.