Database Design Theory?

Levi Pearson levi at cold.org
Tue Nov 8 17:34:20 MST 2005


On Nov 8, 2005, at 4:49 PM, Ross Werner wrote:
>> From my limited experience (*couBYUgh*) college/university database
> classes speak far more about the mathematical theory of databases  
> (as well they should) than helpful real-world design principles  
> regarding views, stored procedures, foreign-key constraints, when  
> to separate data into different tables, when to keep it in a single  
> table, etc. etc.
>
> However, I don't know where good information on this subject can be  
> found. There's all sorts of good design information for software on  
> the web, from UI to class structure, but I don't know of any for  
> databases. Let me know if you find anything!
>
> 	~ Ross

Well, I'm not sure which class you took, but the theory of databases  
has quite a bit to do with foreign key constraints and how data  
should be separated into tables.  Normalization techniques are just  
as much a part of database theory as relational algebra/calculus; the  
former tell you how to design the tables, while the latter tell you  
how to retrieve what you need from them.

As usual, Wikipedia has some useful information on database principles:
http://en.wikipedia.org/wiki/Database
http://en.wikipedia.org/wiki/Relational_model
http://en.wikipedia.org/wiki/Database_normalization
http://en.wikipedia.org/wiki/Entity-relationship_model
http://en.wikipedia.org/wiki/Relational_algebra
http://en.wikipedia.org/wiki/Relational_calculus

Here's what looks like a reasonable intro to database design: http:// 
www.edm2.com/0612/msql7.html

I'd say the general technique to follow is thus:
Exhaustively catalog the entities that you wish to model and their  
relationships to one another
Draw up an ER or UML diagram of the entities and relationships
Convert the diagram to a database schema
Normalize the schema
Convert schema and constraints to SQL

Given all that background information, it should be fairly simple to  
Google for topics that are weakly covered in the above documents.   
Eventually, it will also become important to learn about the ACID  
properties, how database indices work, and other related topics.   
This is all fundamental stuff, so there's plenty of information on it  
around on the web.

		--Levi




More information about the PLUG mailing list