THE SQL Server Blog Spot on the Web

Welcome to - The SQL Server blog spot on the web Sign in | |
in Search

Alexander Kuznetsov

Book Review: Pro SQL Server 2008 Relational Database Design and Implementation

Investing in proper database design is a very efficient way to cut maintenance costs. If we expect a system to last, we need to make sure it has a good solid foundation - high quality database design.

Surely we can and sometimes do cut corners and save on database design to get things done faster. Unfortunately, such cutting corners frequently comes back and bites us: we may end up spending a lot of time solving issues caused by poor design. 

So, solid understanding of relational database design is absolutely essential for database developers, including Agile folks like myself. Let me put it stronger: we Agile developers especially need solid understanding of relational database design, because we are quite likely to cut corners and spend just enough effort to pass unit tests.

This is why I think the book by "Pro SQL Server 2008 Relational Database Design and Implementation" by Louis Davidson, Kevin Kline, and others is a must read.

The following is a chapter by chapter synopsis

Introduction to Database Concepts

This chapter introduces several crucial theoretical concepts, and each concept is demonstrated with a short crisp example. The chapter must be read before proceeding any further.

The Language of Data Modeling

This chapter describes various aspects of traditional waterfall methodology. As such, it can safely be skipped by Agile developers.

Conceptual Data Modeling

This chapter deals with business rules and requirements, and provides very good practical examples. As the previous chapter, all the examples are described in the context of waterfall methodology. However, this should not turn us off. Agile developers need to identify business rules and requirements, and implement them via database design, as mush as anyone else.

This chapter is a must read for everyone, even if some of us do not use Erwin or Visio.

The Normalization Process

This chapter builds up on the concepts introduced in the previous one. As such, we shall get better results if we read about Conceptual Data Modeling first.

As before, all theoretical concepts are illustrated with succinct practical examples. 

In my opinion, this chapter is most important in this book - it gives a great description of a complex technique that is not always described well. If it was the last chapter in this book, the book would still be a highly useful one.

Of course, there are other books describing normalization. This one really stands out because it provides clear in-depth explanations with good concrete practical examples.

The rest of the book

The next chapters of the book are describing various steps needed to implement the complete RDBMS solution, including developing T-SQL, securing access, indexing and so on. All these chapters are useful and practical as well.

Although these chapters are very useful and a pleasure to read, I am not going into more detail here. The reason: many other books describe similar things as well. In my opinion, it is the first chapters that really make this book unique.


We may be using very different methodologies to develop systems build on top of RDBMS. However, eventually professionally developed systems that are meant to last should have proper database design.

The book provides a practical description of what  is proper database design. As such, it will be really useful for all developers who want to develop robust systems using RDBMS.



Published Monday, September 24, 2012 12:56 PM by Alexander Kuznetsov



Garry Core said:

Thanks for the review.  As a novice it sounds exactly what I'm looking for.

September 27, 2012 8:55 PM

Paul Hunter said:

Louis & Kevin did their normal superlative job.  I wish more developers (database and otherwise) would take the time to learn proper database design principles -- and then put them into practice.  This book is a excellent starting point for beginners and an good refreher for experienced designers.

September 29, 2012 6:23 PM
New Comments to this post are disabled

About Alexander Kuznetsov

Alex Kuznetsov has been working with object oriented languages, mostly C# and C++, as well as with databases for more than a decade. He has worked with Sybase, SQL Server, Oracle and DB2. He regularly blogs on, mostly about database unit testing, defensive programming, and query optimization. Alex has written a book entitled "Defensive Database Programming with Transact-SQL" and several articles on and Currently he works as an agile developer.

This Blog


Privacy Statement