Pro SQL Server Relational Database Design And Implementation was written because when the author was first starting out the only book that went into any detail was the seminal book An Introduction to Database Systems by Chris Date. Anyone who has tried to work through that book knows that there is a lot of in-depth theory in it, but for the average programmer or DBA who just wants to do quality database work, it can be quite intimidating.
Other books are light on the theory and get right down to the implementation itself without reflecting the reasons behind why they are doing what they do. Pro SQL Server 2008: Relational Database Design And Implementation is meant to be a bridge between as a technique-oriented book that will give you theory while still showing you the best practices on implementation. The book is 680 pages divided into 11 chapters.
Chapter One, "Introduction to Database Concepts," begins with an overview of the essential terms and concepts. It breaks down design into four phases and looks at each. Then it looks at the relational data structures, how relationships work, the data access language, and dependencies.
Chapter Two, "The Language of Modeling," now gets in to what is the main tool of the database architect, the model. This provides the foundation that is used throughout the book to present database designs as well as graphically documenting the objects introduced in chapter one.
Chapter Three, "Conceptual Modeling," has the goal of getting the concepts for the final project into a document. It is to discuss the process of taking a customer’s set of requirements and to put the tables, columns, relationships, and business rules into a data model format where possible.
Chapter Four, "The Normalization Process," progresses to the next step in the database design process – that of normalization. The goal of normalization is to take the set of tables, columns, relationships, and business rules and format them in such a way that every value is stored in one place and every table represents a single entity. Here you must think of the data and how the structure will affect that data’s quality.
Chapter Five, "Implementing the Base Table Structure," is the first point in the database design process in which you will start building scripts to actually build database objects. This chapter covers the building of tables. Here you have taken your logical model, examined each entity, chosen your datatypes, and implemented your unique keys.
Chapter Six, "Protecting the Integrity of Your Data," is enforcing data integrity conditions in SQL Server. This means that you have now protected your database from all the bad data that is possible. Also discussed in this chapter are the various other ways that data protection can be enforced using stored procedures and client code.
Chapter Seven, "Patterns and Query Techniques," takes you beyond the basic set of techniques for table design. This chapter covers several of the common useful patterns as well as take a look at some patterns that some people will use to make things easier to implement the interface that can be very bad for your query needs.
Chapter Eight, "Securing Access to Your Data," is a high priority for every programmer. At least it should be. In this chapter, you will learn some strategies to implement data security in your system. These include employing views, triggers, encryption, and even using SQL Server Profiler.
Chapter Nine, "Table Structure and Indexing," are an important step in building high performance systems and this chapter now examines some of the basics of how data is structured in SQL Server, as well as some strategies for indexing data for better performance.
Chapter 10, "Coding for Concurrency," shows you how to maximize resource utilization among many users. You will learn several strategies for how to implement concurrency in your data access and modification code. Part of the database design and implementation process is to step beyond the structures and in this chapter you will see how.
Chapter 11, "Considering Data Access Strategies," is explored in this chapter and you will see many of the concepts and concerns of writing code that accesses SQL Server. You will learn about ad hoc SQL versus stored procedures (including all the perils and challenges of both, such as plan parameterization, performance, effort, optional parameters, SQL injection, and so on), as well as discussing whether T-SQL or CLR objects are best, including samples of the different types of objects that can be coded using the CLR.
Appendix's are also included that contain Codd’s original 12 rules for how a database should be implemented, all of the types that can be legitimately considered scalar types, along with why to use them, as well as an additional online appendix that discusses the so-called beyond relational types.
There is also an online chapter 12 called "Database Interoperability" that was written by Kevin Kline. It discusses the challenges of building databases that have to run on not only SQL Server but also other database server platforms.
Anyone who has done much with working with databases knows from experience that good database design is important for the long term. If you don't do this well, you will spend a lot of time reworking and not screwing up the data you have. Pro SQL Server 2008: Relational Database Design And Implementation takes you through everything from start to finish on what constitutes best practices.
It is very well thought out and well written. It has that feel of being unique, not the rehash of someone else's material. It is also a very personable read with a lot of guidance as opposed to being told what to do.
While this book is for SQL Server 2008, the first 175 pages are applicable for just about any relational database system and serves as a firm foundation in relational database theory. The rest of the book is database implementation. I feel that Pro SQL Server 2008: Relational Database Design And Implementation will serve both the newcomer as well as those who have been working with SQL Server without a formal foundation of database theory and so I highly recommend this book.