Chapter 6. Basic Dimensional Concepts
In Part I, we looked at the fundamental principles of traditional relational theory and the entity-relationship model. The majority of database applications are built using these principles, and for good reason. If applied consistently, they ensure data integrity, resilience, and scalability in applications that involve frequent changes to data.
But not all database applications involve frequent changes to the data. There exists another entire class of database applications with very different purposes and requirements. These applications must store large (sometimes vast) amounts of historical data, but that data, once loaded, is only rarely changed. These applications rarely support more than a few dozen users, but those users must be able to produce reports on the data effectively. "Effectively" in this case means two things: Ad hoc queries must return results quickly, and the structure of the database schema must be easily comprehensible to the end user.
Database schemas produced using the normalization rules we examined in Part II rarely meet these requirements. Even when the databases are small enough to respond quickly, and few are, handling historical data can be clumsy using the relational model. Further, fully-normalized schemas hardly qualify as "easily comprehensible to the end user."
The dimensional database rules that we'll examine in this section, on the other hand, were developed to address just these needs. In this brief chapter, we'll look at the basic structure of a dimensional database.