PATTERNS OF DATA MODELING- P3: Models provide the means for building quality software in a predictable manner. Models let developers think deeply about software and cope with large size and complexity. Developers can think abstractly before becoming enmeshed in the details of writing code. Although models are beneficial, they can be difficult to construct. That is where patterns come in. Patterns provide building blocks that help developers construct models faster and better. | To the memory of Brian. v Contents Preface xiii Who Should Read This Book xiii What You Will Find xiv Comparison with Other B ooks xv Acknowledgments xvi Chapter 1 Introduction 1 What Is a Model 1 Modeling Notation 1 What Is a Pattern 2 Why Are Patterns Important 3 Drawbacks of Patterns 4 Pattern vs. Seed Model 4 Aspects of Pattern Technology 5 Chapter Summary 6 Bibliographic Notes 6 References 7 Part I Mathematical Templates 9 Chapter 2 Tree Template 11 Hardcoded Tree Template 12 Simple Tree Template 15 Structured Tree Template 19 Overlapping Trees Template 23 Tree Changing over Time Template 27 Degenerate Node and Edge Template 31 Chapter Summary 33 vii viii Bibliographic Notes 34 References 34 Chapter 3 Directed Graph Template 36 Simple Directed Graph Template 37 Structured Directed Graph Template 40 Node and Edge Directed Graph Template 45 Connection Directed Graph Template 48 Simple DG Changing over Time Template 52 Node and Edge DG Changing over Time Template 56 Chapter Summary 60 Bibliographic Notes 62 References 62 Chapter 4 Undirected Graph Template 63 Node and Edge Undirected Graph Template 64 Connection Undirected Graph Template 66 Undirected Graph Changing over Time Template 69 Chapter Summary 73 Chapter 5 Item Description Template 74 Item Description Template 74 Homomorphism Template 78 Chapter Summary 82 Bibliographic Notes 83 References 83 Chapter 6 Star Schema Template 84 Star Schema Template 84 Chapter Summary 89 Bibliographic Notes 89 References 90 Chapter 7 Summary of Templates 91 Part II Antipatterns 95 Chapter 8 Universal Antipatterns 97 Symmetric Relationship Antipattern 97 Dead Elements Antipattern 99 Disguised Fields Antipattern 100 Artificial Hardcoded Levels Antipattern 101 Excessive Generalization Antipattern 103 Disconnected Entity Types Antipattern 104 Modeling Errors Antipattern 104