Database Design for Smarties: Using UML for Data Modeling

If men could learn from history, what lessons it might teach us! But passion and party blind our eyes, and the light which experience gives is a lantern on the stern, which shines only on the waves behind us!
Samuel Taylor Coleridge, December 18, 1831
Not everyone can choose their parents; most of us must do the best we can with the hand we're dealt. This is no less true with database design. Most of the databases I've designed over 15 years did not emerge full-blown from my head like Athena. Rather, they emerged out of existing systems, other designers' work, and the various corporate cultures in which I was working.
In moving from data modeling to database design, you must first confront the impact of previous design decisions on your schema. As with children, those decisions can have been good or bad in their own context and might be equally bad or good in the new context you are providing for their growth. All of this happens in an organizational culture that heavily influences your decisions. Your job is to migrate the existing schema (and probably the existing data) into your new schema and database. The section "Software Development Cultures and the Legacy System" helps you through some of the political, cultural, and technical perils you will encounter. It covers the issues with replacing or reusing legacy schemas.
When you start fresh, you can look at it as incredibly fortunate or particularly ill-favored, depending on the situation. It...