As an analyst for a large manufacturing company's ERP implementation, I was responsible for a very complex and critical area called Classifications. Classifications was the place where all products, vendors, or customers were grouped into buckets based on similar behavior. For example, if this company manufactured vehicles, there could be classifications for hybrids, sports cars, SUVs, minivans, etc. To better understand classifications, I dived into screens, help files, and actual database tables and after several weeks, completed a classifications data model. The model I produced was very similar to the data model that appears on page 224 of "The Data Model Resource Book Volume 3: Universal Patterns for Data Modeling" by Len Silverston and Paul Agnew.
This book contains a collection of patterns, which are general building blocks that could be used as the basis for just about any type of data modeling within any industry. Classifications is one example, and there are a collection of others such as roles, statuses, and contact mechanisms. Whereas Volumes 1 and 2 in The Data Model Resource Book series contained models for common business processes or industries, this volume contains patterns that cross through all processes and industries. Consistent with the series however, the purpose of this text is to save the modeler time so instead of starting from scratch, the modeler can start from a reliable and proven foundation. Realizing these patterns exist and making them work for your particular modeling assignment can result in a higher quality data model and a greater level of consistency within your organization.
A majority of the book is dedicated to chapters which describe how to model a pattern at different levels of generalization. Level 1 is the most concrete and this is where terms and rules a business analyst are familiar with are shown, such as email address and telephone number. Level 2 through 4 go through increasingly more generized levels with Level 4 being the most generalized. The Classifications example I encountered in the ERP package for example was a Level 3 model, very generalized so that it can be leveraged by any industry. The book makes an important point that there are situations where one level is more appropriate than another, and sometimes the modeler must trade the familiarity and business rule enforcement of a Level 1 with the flexibility available in a Level 2, 3, or 4. For example, a phone number and email address from a Level 1 model would be generalized into contact mechanism data in a Level 2 model. This extra flexibility allows for accommodating other ways of contacting someone that may not have been specified (for example, via a person's "voice over IP" or Skype number). The book also makes the point that sometimes on a single model you can combine different levels for the same requirement (i.e. a hybrid approach).
Chapter 1 introduces the concept of a universal pattern as well as the terms and symbols used throughout the book. The goals for the book are also clearly articulated, in addition to the intended audience and a summary of each chapter. There is a wonderful furniture analogy used to distinguish a universal data model from a universal pattern. Universal data models (the subject of the first two volumes of The Data Model Resource Book), are similar to already constructed standard tables and chairs. The consumer can obtain this furniture instead of build the tables and chairs from scratch. Similarly, the modeler can reuse an inventory or claims universal data model instead of building it from scratch. Universal patterns are similar to the dovetail joints of the furniture, common pieces that exist in already built tables and chairs as well as custom furniture. Universal patterns are the building blocks such as the roles and statuses behind any modeling project.
Chapters 2 through 8 each focus on a particular pattern. Chapters 2 and 3 focus on parties and roles; Chapter 2 on declaration roles and Chapter 3 on contextual roles. A party is a person or organization of importance to the business, and declaration roles are those roles that are independent of any business event while contextual roles are dependent on a particular business event. For example Bob the person can have a declarative role of `Doctor', yet when an insurance claim is filed, they can also have the contextual role of `Primary Care Physician'. Chapter 4 focuses on similar structures for relating data including hierarchies, aggregations, and peer-to-peer relationships. Chapter 5 focuses on taxonomies and classifications, and Chapter 6 on patterns for states that business concepts go through. Chapter 7 contains patterns for getting in touch with parties, such as those patterns for modeling telephone number and email address. Chapter 8 focuses on how to model business rules including the rule itself, the factors involved in the rule, and the outcomes of the rule.
I was impressed with the consistency and comprehensiveness of each of these chapters. These chapters follow a similar format of demonstrating each of the four levels of detail. Each chapter begins with an explanation of the pattern and a discussion of its importance. Then for each of the four levels, there is a section on the reason for the level, how the pattern works (with lots of examples), when the pattern should be used, and the weaknesses of the pattern. I found the charts and tables to be extremely useful in the text, especially the Summary of Patterns table at the end of each chapter.
Chapter 9 focuses on how to apply these patterns in many types of efforts including both relational and dimensional modeling efforts and both application and enterprise areas of scope. As with the other chapters, there is a great summary at the end on the strengths and weaknesses of patterns with each type of effort. Chapter 10 adds the human dynamics side to incorporating patterns, as success or failure is heavily connected with people's perception or trust. Four principles are discussed, that will help acceptance and usage of the patterns: Understand motivations and work toward meeting them, Develop a clear, common, compelling vision, Develop trust, and Manage conflict effectively.
To summarize, under every data model is a set of common building blocks, clearly explained in "Universal Patterns for Data Modeling". I would recommend this book for every analyst, modeler, or architect who is striving for a level of information consistency within their organization. Whether you are just starting your modeling adventure or have been in the modeling for decades, you will find these patterns invaluable tools for every modeling effort.