views:

1350

answers:

13

As a junior programmer I think it may be beneficial to learn solid database design. What books would you recommend on learning database design? Just to be clear, the specific aspect of design I am referring to is creating a collection of tables and their relationships.

Note: The programming books I have enjoyed reading (gaged by teaching style, depth, and accuracy) are: CLR via C#, C# in a Nutshell, Framework Design Guidelines (by Krzysztof Cwalina; Brad Abrams), and C# in Depth.

+2  A: 

Add Joe Celko's SQL for Smarties to your list.

Carl Manaster
That's a SQL book, not a database design book.
Andrew Sledge
Yes it is. And when you better understand the subtleties of SQL, you will better understand what constitutes good database design.
Carl Manaster
Thank you for the suggestion Carl. It looks like the book opens with design. I will check it out.
beef
+5  A: 

Database Design for Mere Mortals

orthod0ks
That and the related "SQL Queries for Mere Mortals" were a huge help when I was getting started. It's amazing so many years later to see experienced developers who could benefit from these books.
Tom
+1 excellent starter books indeed !!
marc_s
This seems like a great book and will continue reading. Thank you!
beef
+ 1 for the book link :)
Stark
+2  A: 

This may help you:

Beginning Database Design

Publisher: APress
Published: 17 January 2007
Format: Paperback 240 pages
Jonathan
+2  A: 

I've used Fundamentals of Database Systems by Elmasri and Navathe. It helped immensely.

Andrew Sledge
Link: http://www.amazon.com/Fundamentals-Database-Systems-Ramez-Elmasri/dp/0321369572/
Andrew Sledge
+12  A: 

work with someone that is much better than yourself, and try to understand what and why they do things their way. Be open to their input and suggestions.

KM
And in the same line of thought, study the database model of successful applications, try to understand which decisions were taken, what simplifications were made, what was left out and why...
tekBlues
I think this is the best answer. Books are great, and I've read a few of them but the best advice comes from real practitioners who have designed successful high traffic systems. In my opinion, the key to effective data design is to know 1) where and how to denormalize appropriately, and 2) how to tune the system to ensure the most efficient maintenance and disaster recovery plan. In my case, I had to learn these from two different people. One final thought - find some big databases (many tables) print them out so you can see the whole thing. You'll learn a lot from the big picture.
gidmanma
I totally agree with this answer. In my case this resource is not available.
beef
@tekBlues: Successful applications does not necessarily mean a great database design. It might simply mean a strong marketing department and/or lack of competitors.
Chris Lively
+6  A: 

If you're interested in a very theoretical approach to database design, you may want to check out The Third Manifesto or The Database Relational Model: A Retrospective Review And Analysis—both by Chris Date.

Mark Cidade
This is very interesting, thank you.
beef
+3  A: 

I read Beginning Database Design: From Novice to Professional last summer in preparation for my current job. It's a good, readable, and relatively general overview of database design patterns and heuristics. It's based around SQL, but mentions other technologies.

Evan Meagher
A: 

I took my first steps into databases trying to hack MySQL using MySQL and mSQL, which is now out of print. The introductory chapters to that book were where I was first exposed to the concepts of normalization and relations, which are important to any well-defined database; they were written in a pretty easy-to-understand way, IMO.

Later during college I took a relational algebra class, and that class, coupled with the fundamentals I learned reading the opening chapters of that book really helped me fully understand how to design database schemas.

Now I'm not saying you should get this book and magical understanding will come your way -- far from it. In fact, you can probably be better helped by reading wikipedia, but if you happen to stumble on it and read the first few chapters, it'll help when you start delving deep with some of the other, more advanced topics.

Randolpho
+4  A: 

A couple of interesting reads to get you started (although I second the book recs as database design is complex and really needs to be looked at in depth)

You can't really understand database design until you get into the subject of performance tuning. There is so much bad design in databases becasue poorly performing choices were made at the design level where better choices are known but the designer didn't think about using them or worse wanted a more "elegant" solution. Solutions that look good to object oriented programmers are often the worst possible choices for a database. I highly recommend that after you read the design books that you look up some performance tuning books onthe database of your choice. Performance tuning is usually different for every database product, so you must read for the products you are going to use.

HLGEM
These links are helpful, thank you.
beef
+4  A: 

Try this video with the great Barry Williams, no need to read a 500 pages book:

http://databaseanswers.ning.com/video

"How a schema is built step by step"

About a book .. Database Design for Mere Mortals: A Hands-On Guide to Relational Database Design by Michael J. Hernandez is the best to begin with.

Marco Mangia
+1 I really like that video as an introduction to. It is extremely dry, but I still think it gives a lot of good pointers for a database beginner.
P-A
The uncut version from Microsoft: http://msdn.microsoft.com/en-gb/express/bb403186.aspxThe one on his own website (http://databaseanswers.com) and Youtube is only the first of two example he talks about.
P-A
+1  A: 

Practice makes perfect.

I haven't read many db books, but working with good specialists and with different projects I've got enough practice to make databases for medium sized projects. Of course, I can't touch in database specialists, whose life is somewhere between tables :-)

Pawka
+2  A: 

The Manga Guide to Databases is actually a surprisingly comprehensive (and fun) introduction to the topic.

One thing I've found is that relational database normalization theory is surprisingly helpful when you apply it to data structure design. It's a rigorous application of the "Don't Repeat Yourself (DRY)" principle to your data.

Jim Ferrans
Will check this out, thank you!
beef
+2  A: 

The Art of SQL is also a good read.

David Grant