ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

Main Area and Open Discussion > General Software Discussion

books/blogs on database design?

(1/3) > >>

You know, you design your database, and once your app has been out for a while, you realize how poor some design choices were... and how painful re-engenieering the db will be.

I'm trying to minimize all this. It looks like database design is a black art (as is designing an OO representation of a domain).

Do you have any good pointers for getting proficient at this in a short time? All books I could find are about all the other technical aspects of DBMS...


Just wondering, have you tried a Google search on "database design" or "database design sql" or which ever db you're using?

It depends what your level is...

Paul Dubois' Mysql book is one of the best written introductory technical books I have ever read, although it only covers some of the basics on database design. It has great tutorials in perl, php and python (iirc) and will cover things like indexes, stored procedures etc. beyond pure database design and into practical performance. But it does not go in depth. It is a good book even if you dont use mysql, really, because it is concise, well written - it can help someone get started in database-backed web development, picking up perl or php etc. You are probably beyond it, but i thought I would pimp it, I always made trainees read the perl or php chapter there when they had to pick up the language.

Joe Celko's books, starting with "SQL for smarties", are some great books to learn how to do very sophisticated things with SQL (I have the data mining and the binary tree books and there are some great tools in there, although he tends to be a bit single minded about them). They are not about performance and intelligent design, they are more about things you thought you needed to do in code but actually can let the database do...

After that it is about picking a book about the particular database you have chosen, since there are a lot of quirks. If you use postgres I can recommend a few but for others I cant help much

The only thing I can contribute to this thread is that Refactoring Databases: Evolutionary Database Design by Scott W. Ambler and Pramod J. Sadalage is on my ToBuy/ToRead list. I own some of Ambler's other books and read lots of his articles and think he does a good job.

Thanks all.

I have dubois' book, for example.

Well, the skill I'm thinking is clearly database-independent. It's not about all the nifty tricks you can do to improve performance (which may well be db-dependent) but how to design the tables, how they are connected. This is why I think it's similar to designing a hierarchy for objects.

Imagine that you need to add a a feature to a system that is in production already. If the system is well designed, it's a simple matter; maybe add a column to a table. If the system was designed as an afterthought, you may find that you need to alter the entire db schema!

Some problems I can imagine: adding micropayments to this forum. Was it easy? I don't know. But it probably depends on how the database was designed.

That is the kind of book/blog I want to find.

This is kind of a black art.

For those with formal CS backgrounds... Is there any subjects in the standard CS curriculum that cover that? Say database design 101? Or maybe relational systems? Or object-oriented design?



[0] Message Index

[#] Next page

Go to full version