Database Design for Smarties: Using UML for Data Modeling

For mine own part, I could be well content
To entertain the lagend of my life
With quiet hours.
Shakespeare, Henry IV Part 1, V.i.23
Databases, like every kind of software object, go through a life stressed with change. This chapter introduces you to the life cycle of databases. While database design is but one step in this life cycle, understanding the whole is definitely relevant to understanding the part. You will also find that, like honor and taxes, design pops up in the most unlikely places.
The life cycle of a database is really many smaller cycles, like most lives. Successful database design does not lumber along in a straight line, Godzilla-like, crushing everything in its path. Particularly when you start using OO techniques in design, database design is an iterative, incremental process. Each increment produces a working database; each iteration goes from modeling to design to construction and back again in whatever order makes sense. Database design, like all system design, uses a leveling process [Hohmann 1997]. Leveling is the cognitive equivalent of water finding its own level. When the situation changes, you move to the part of the life cycle that suits your needs at the moment. Sometimes that means you are building the physical structures; at other times, you are modeling and designing new structures.
| Note | Beware of terminological confusion here. I've found it expedient to define my terms as I go, as there are so many different ways of describing... |