Patterns Of Data Modeling by Michael Blaha