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


/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/

Reply via email to