| |
| |
Foreword | |
| |
| |
Preface | |
| |
| |
| |
Introduction | |
| |
| |
Logical Data Structures and Physical Data Storage | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
| |
Good Habits | |
| |
| |
Employ the Users' Language and Vocabulary | |
| |
| |
Be Rigorous | |
| |
| |
Don't Rely on the Opinion of a Single Expert; Ask Several | |
| |
| |
Ask First About Data, Not About Processing | |
| |
| |
Master the Shapes of Data | |
| |
| |
Use a Notation That Helps You Realize These Good Habits | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
| |
Reading an LDS with Sentences | |
| |
| |
Sentences About What Users Can Remember | |
| |
| |
Sentences About Differentiating Things from Each Other | |
| |
| |
Sentences You Should Not Say | |
| |
| |
Some Complete Examples | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
| |
Vocabulary of LDS | |
| |
| |
Vocabulary Overview | |
| |
| |
A Bit More About Entities, Attributes, and Relationships | |
| |
| |
LDS Reading Rules Revisited | |
| |
| |
Responsibility for Speaking Well | |
| |
| |
Summary (and a Chance to Check Your Progress) | |
| |
| |
Exercises | |
| |
| |
| |
Visualizing Allowed and Disallowed Instances | |
| |
| |
Show the Data and Say Something About It | |
| |
| |
Plan Your Notes by Considering Elemental Parts of the LDS | |
| |
| |
As You Visualize Data, Don't Lose Sight of the Goal | |
| |
| |
Exercises | |
| |
| |
| |
A Conversation with Users About Creatures and Skills | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
Story Interlude | |
| |
| |
| |
Introduction to Mastering Shapes | |
| |
| |
Definition of Shape | |
| |
| |
Mastering Shapes | |
| |
| |
Reading a Shape Aloud in Several Ways | |
| |
| |
Visualizing Sample Data in Several Formats | |
| |
| |
Discussing and Illustrating Noteworthy Disallowed Data | |
| |
| |
Finding and Focusing on Shapes Within a Large LDS | |
| |
| |
Recognizing the Differences Between Shapes That Are Similar but Not Identical | |
| |
| |
Recognizing the Similarity Between Seemingly Dissimilar Shapes | |
| |
| |
Distinguishing Between Legitimate Shapes and Syntactically Invalid LDS Fragments | |
| |
| |
Knowing How Shapes Are Likely to Evolve | |
| |
| |
Asking Questions That Help Users Choose Between Two Similar Shapes | |
| |
| |
Knowing When to Ask Questions of Users | |
| |
| |
Knowing When and How to Modify the LDS to Make a Shape Evolve | |
| |
| |
Understanding the Relative Frequency of the Various Shapes | |
| |
| |
Referring to each Fundamental Shape by Its Name | |
| |
| |
Exercises | |
| |
| |
| |
One-Entity, No-Relationship Shapes | |
| |
| |
Shape: Common Independent Entity | |
| |
| |
Shape: Lonely-Attribute Independent Entity | |
| |
| |
Shape: Aggregate Independent Entity | |
| |
| |
Shape: Dependent Entity | |
| |
| |
Shape: Intersection Entity | |
| |
| |
Shape: Subordinate Entity | |
| |
| |
Shape: One-Many Collection Entity | |
| |
| |
Shape: Many-Many Collection Entity | |
| |
| |
Unnamed Possibilities | |
| |
| |
Exercises | |
| |
| |
| |
One-Attribute Shapes | |
| |
| |
Scale | |
| |
| |
Shape: Nominal-Scale Attributes | |
| |
| |
Shape: Numeric-Scale Attributes | |
| |
| |
Shape: Ordinal-Scale Attributes | |
| |
| |
Shape: Boolean-Scale Attributes | |
| |
| |
Scale and Datatype | |
| |
| |
Scale and Attribute Names | |
| |
| |
Fine Distinctions of Scale | |
| |
| |
Scale and Abstract Datatypes | |
| |
| |
Summary of How Scale Restricts an Attribute | |
| |
| |
Exercises | |
| |
| |
| |
Two-Entity Shapes | |
| |
| |
Two Entities, One Relationship | |
| |
| |
One-Many Shapes | |
| |
| |
One-One Shapes | |
| |
| |
Many-Many Shapes | |
| |
| |
Two Entities, Two Relationships | |
| |
| |
One-One and One-Many Relationship | |
| |
| |
Two One-Many Relationships | |
| |
| |
Shape: Two Entities, n Relationships | |
| |
| |
Exercises | |
| |
| |
| |
Shapes with More Than Two Entities | |
| |
| |
Shape: Chicken Feet In | |
| |
| |
Shape: Chicken Feet Out | |
| |
| |
Shape: Chicken Feet Across | |
| |
| |
Shape: Subordinates Out | |
| |
| |
Shape: Subordinates Across | |
| |
| |
Shape: Multiple Plain To-be Relationships | |
| |
| |
Shape: Multiple To-be Relationships | |
| |
| |
Shape: Multiple Short Paths | |
| |
| |
Exercises | |
| |
| |
| |
Shapes with Reflexive Relationships | |
| |
| |
Shape: One-One Reflexive Relationship | |
| |
| |
Sequence Data and Cyclic Sequence Data | |
| |
| |
Ordered Pairs | |
| |
| |
Shape: One-Many Reflexive Relationship | |
| |
| |
Shape: Many-Many Reflexive Relationship | |
| |
| |
Exercises | |
| |
| |
Story Interlude | |
| |
| |
| |
LDS Syntax Rules | |
| |
| |
Within Any LDS, Each Entity, Attribute, Relationship, and Link Has an Official Name That Is Unique | |
| |
| |
No Reflexive Relationship Is a To-be Relationship | |
| |
| |
Between Any Pair of Entities, There Is at Most One To-be Relationship | |
| |
| |
Each Entity Has at Least One Identifier | |
| |
| |
An Entity Can Have Several Identifiers | |
| |
| |
No Identifier Can Be a Strict Subset of Another | |
| |
| |
The LDS Cannot Contain Any Cycles of Identification Dependency | |
| |
| |
No Link of a Reflexive Relationship Can Contribute to an Identifier | |
| |
| |
Both Links of a Relationship Cannot Contribute to Identifiers | |
| |
| |
A Single-Descriptor Identifier Cannot Include the Degree-One Link of a One-Many Relationship | |
| |
| |
A Multiple-Descriptor Identifier Cannot Include a Link of a One-One Relationship | |
| |
| |
A Multiple-Descriptor Identifier Cannot Include the Degree-Many Link of a One-Many Relationship | |
| |
| |
A Relationship Has Either Two Labels or Zero Labels | |
| |
| |
All One-One Relationships Have Labels | |
| |
| |
All Reflexive Relationships Have Labels | |
| |
| |
Between Any Pair of Entities, There Is at Most One Unlabeled Relationship | |
| |
| |
Valid Relationships | |
| |
| |
Exercises | |
| |
| |
| |
Getting the Names Right | |
| |
| |
Entity Names | |
| |
| |
Working with Users to Get the Entity Names Right | |
| |
| |
Naming Attributes | |
| |
| |
Naming Relationships and Links | |
| |
| |
Exercises | |
| |
| |
| |
Official Names | |
| |
| |
Official Names Can Be Awkward | |
| |
| |
A Few Notes About Official Names and To-be Relationships | |
| |
| |
Exercises | |
| |
| |
| |
Labeling Links | |
| |
| |
Exercises | |
| |
| |
| |
Documenting an LDS | |
| |
| |
The Audience | |
| |
| |
Front Matter | |
| |
| |
Entity Documentation | |
| |
| |
Attribute Documentation | |
| |
| |
Link Documentation | |
| |
| |
Relationship Documentation | |
| |
| |
Fragment Documentation | |
| |
| |
Constraint Documentation | |
| |
| |
Issues List | |
| |
| |
Supplemental Material for Secondary Audiences | |
| |
| |
Exercises | |
| |
| |
Story Interlude | |
| |
| |
| |
Script for Controlled Evolution: The Flow | |
| |
| |
Script for The Flow | |
| |
| |
Discussing a Not-to-be Relationship | |
| |
| |
Flow Stage: Not-to-be Relationship | |
| |
| |
Flow Investigation: Seek a Chicken Foot | |
| |
| |
Flow Investigation: Seek a One-Many Relationship | |
| |
| |
Flow Investigation: Seek a Many-Many Relationship | |
| |
| |
Flow Stage: One-One, Not-to-be Relationship | |
| |
| |
Flow Stage: One-Many Relationship | |
| |
| |
Flow Stages: Initial Many-Many Relationship and New Intersection Entity | |
| |
| |
Developing a Chicken-Feet-In Shape | |
| |
| |
Flow Investigation: Seek Descriptors for Intersection Entity | |
| |
| |
Flow Investigation: Seek Tiebreaker | |
| |
| |
Flow Investigation: Consider Overidentification | |
| |
| |
Flow Investigation: Seek Independent Entity | |
| |
| |
Discussing a To-be Relationship | |
| |
| |
Flow Investigation: Consider Synonymy | |
| |
| |
Flow Investigation: Consider Subordination | |
| |
| |
Continuing the Discussion | |
| |
| |
Flow Continuation: Seek Other Relationships | |
| |
| |
Flow Continuation: Seek Further Evolution for a One-Many Relationship | |
| |
| |
Flow Continuation: Seek Further Evolution for the Chicken-Feet-Across Shape | |
| |
| |
Flow Continuation: Seek Further Evolution for the Chicken-Feet-In Shape | |
| |
| |
Exercises | |
| |
| |
| |
Local, Anytime Steps of Controlled Evolution | |
| |
| |
Discovering Entities | |
| |
| |
Fixing Identifiers | |
| |
| |
Seeking Descriptors | |
| |
| |
Promoting Attributes | |
| |
| |
Relocating Misplaced Descriptors | |
| |
| |
Exercises | |
| |
| |
| |
Global, Anytime Steps of Controlled Evolution | |
| |
| |
Redrawing the Diagram | |
| |
| |
Altering the Overall Style of an LDS | |
| |
| |
Changing the Level of Abstraction | |
| |
| |
Exercises | |
| |
| |
| |
Conversations About Dairy Farming | |
| |
| |
Meeting with Users from the General Offices | |
| |
| |
Meeting with Veterinary Epidemiologists | |
| |
| |
Meeting with Economic Analysts | |
| |
| |
Exercises | |
| |
| |
Story Interlude | |
| |
| |
| |
Constraints | |
| |
| |
Constraint Definition Requires a Stabilized Data Model | |
| |
| |
Many Candidate Constraints Turn Out to Be False | |
| |
| |
Many Constraints Subject a Data Model to Premature Obsolescence | |
| |
| |
Worthy Constraints | |
| |
| |
Constraints and Shifting the Burden | |
| |
| |
Summary and Final Thoughts | |
| |
| |
Exercises | |
| |
| |
| |
LDS for LDS | |
| |
| |
The Meta-LDS | |
| |
| |
Discussion | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
| |
Decisions: Designing a Data-Modeling Notation | |
| |
| |
Overall Decisions | |
| |
| |
Decisions About Entities | |
| |
| |
Decisions About Identifiers | |
| |
| |
Decisions About Attributes | |
| |
| |
Decisions About Relationships | |
| |
| |
Decisions About Links | |
| |
| |
Decisions About Descriptors | |
| |
| |
Decisions About Constraints | |
| |
| |
Summary and Final Thoughts | |
| |
| |
Exercises | |
| |
| |
| |
LDS and the Relational Model | |
| |
| |
Relational Databases | |
| |
| |
Mapping an LDS to a Relational Schema | |
| |
| |
LDS and Normal Forms | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
| |
Cookbook: Recipes for Data Modelers | |
| |
| |
Set Recipes | |
| |
| |
Graph Recipes | |
| |
| |
Matrix Recipes | |
| |
| |
Taxonomy and Near-Taxonomy Recipes | |
| |
| |
Exercises | |
| |
| |
Story Interlude | |
| |
| |
| |
Exercises for Mastery | |
| |
| |
Index | |