Naming Conventions
Check as prescribed by Design Standards.
Graphical Representation
Is a graphical representation available?
Is it consistent with the other documentation?
Can it be used by the build team?
In what ways does the logical model differ from the conceptual schema?
Completeness of Specification in Design tool
Which slots in the design tool screens have been left open?
Why?
Choice of Database Objects
Have particular database objects been avoided or not used?
If so, then why? (Think of views, sequences, sequence number tables, indexes.)
Interpretation of Conceptual Schema
Do the logical and physical models cover all and only the conceptual schema?
Have all non trivial translations been adequately documented?
Can this interpretation easily be used in a Generator environment?
Table Definition
Check as prescribed by Design Standards.
How have super‑ and subtypes been handled?
Is the table usage valid with respect to the CRUD matrix. (Note that a table may be modified through a view.)
Has the life cycle of all tables been covered completely by the modules?
Column Definition
Check as prescribed by Design Standards.
Have domain definitions been used correctly?
Have the datatypes been defined according to the standards?
Are system generated keys used?
Is the column usage valid with respect to the CRUD matrix? (Note that a table may be modified through a view.)
Is the life cycle covered completely by the modules?
Have datatypes been chosen adequately?
How will status columns be handled?
Constraint Definition
Pay attention to constraints that only hold for subtypes, or that hold under special conditions.
Check if there is no overlap between constraints.
Have all necessary constraints (PK, FK, CHECK) been defined on views?
Definition of Relationships
Check as prescribed by Design Standards
Investigate the following:
the design of arcs
non transferable relationships
recursive relationships
time‑dependencies
(Which time is used, commit time, screen time? What operations may be performed on time‑dependent data, under what conditions?)
Definition of Other Database Objects
Have other objects (views, indexes, domains, sequences) been defined completely and consistently?
Is there some unusual distribution or other property of the data that makes the use of these objects (un)necessary?
Special Problems
Have special measures been taken to deal with the following:
journaling
(What data will be journaled: user, session id, object, operation or module, and how?
Will the journaled data be used for “rollback to X” or “roll forward from X” purposes ?)
high performance demands
(response time for reports, screens, overall response time, partial)
heavy or peak usage, high throughput
complex mix of hardware
robustness
denormalisation
non‑frozen data model, out of phase development of other systems
long or raw columns (in a network environment)
concurrency problems
distributed data
interface with external systems (database / non-database)
expiration dates
handling of NLS support (for example multi-lingual, multi-currency systems, different date or number notations)
Database design checklist
September 13, 2007 by Prasad Sombhatta