Seven Deadly Sins of Database Design

Jason Tiret of Embarcadero has written a great post on the 7 deadly sins of database design.

  1. Poor or missing documentation for database(s) in production
  2. Little or no normalization
  3. Not treating the data model like a living, breathing organism
  4. Improper storage of reference data
  5. Not using foreign keys or check constraints
  6. Not using domains and naming standards
  7. Not choosing primary keys properly

I would add these:

  • Not recognising that a database does NOT live in isolation
    • don’t unnecessarily include data that is already stored elsewhere, as you may be creating a data maintenance and data quality nightmare
    • if you do need to include data held elsewhere, you need very good reasons to change what it’s called, and how it’s defined
    • maintain a catalogue of schemas and logical data models, including mappings between models, and data lineage between databases
  • Not taking advantage of design patterns
    • the data may be new to you, but you can bet your bottom dollar that it fits a pattern, and there are templates that can be reused
    • there may be useful design patterns developed in your other databases
      • e.g. how you handle histories of status values, or time-stamped data
    • check out Universal Data Models such as those from Len Silverston

Leave a Reply