Database Design Theory?

Dan Hanks hanksdc at plug.org
Tue Nov 8 16:38:13 MST 2005


On Tue, 8 Nov 2005, Matthew Ross Walker wrote:

> My day job is programming in PHP with MySQL databases, and with the
> release of MySQL 5, I'd like to get familiar with Good Design for a
> system that has views, stored procs, foreign-key constraints, and the like.
>
> Are there any good websites for this information, that take you through
> practical examples, and explain the theory behind it? Alternately, are
> there any very good books on the subject? I'm a bit leary of dropping
> $50+ on a book that I'll only use for a while, but I'm willing to do it
> if it comes highly reccomended.

I'd recommend anything by C.J. Date. O'Reilly's "Database In Depth" by him 
is a good place to start, and is available for $24.50 at bookpool.com.

Read through as much as you can on www.dbdebunk.com.

As has been suggested, take a course about databases that teaches you 
about the relational model, and the underlying concepts of set theory and 
predicate logic.

The above won't hand out a lot of 'practical examples', but will get you 
grounded in the fundamentals of what databases are, which should be the 
first step to learning good design habits.

A couple of pointers I'll hand out that I've learned to live by from 
studying the above:

- Avoid nulls as much as possible
- Normalize
- Don't denormalize for performance unless you fully understand the 
implications of doing so 
- Make sure every table has a key
- Don't allow duplicate rows in any table (defining a key on each table 
will prevent this--a key is not the same thing as an index, keep in mind).
- Use constraints and foreign keys to enforce integrity (not application code).
- Every piece of information in your database should live in one and only 
one place (Factor out redundancy through normalization, etc).

Fwiw,

-- Dan




More information about the PLUG mailing list