I picked up this book because I am involved in the "persistence" area of object-oriented programming. Anyone who has, like me, been dealing with interfaces to databases without actually understanding the databases themselves, is going to enjoy this book and find wonderful insights into what they have been doing.
I was originally looking for some basic background, such as what "joins" and "unions" were, and the basics of the SQL language. I found much more in this book. I have deepened my understanding of maps and schemas, relearned terms that I had only partially understood, and begun to understand some of the mathematical theory behind relational databases.
The book is written for people who have a serious interest in some aspect of database systems. It assumes the reader has some technical background, including knowledge of computers and some knowledge of programming. Math background would help as well. No database knowledge is required, however, as the book starts with the basics and gives you a good grounding in those before continuing. Though it covers a very technical subject in great detail, this book is very readable and explains concepts clearly.
The final four chapters of the book, of special interest to me, deal with object-oriented databases. Large differences between the object-oriented model and the relational database model lead to what is frequently referred to as the "object-to-relational mapping problem." User requests that seem quite simple in an OO language can be very difficult to express and can execute with unacceptable performance in relational databases. The book leads you through a clear example. The writer, however, raises important questions and suggests that object-oriented databases, far from solving all problems, will simply present us with a different set.
The book is divided into six sections:
I recommend this book to anyone with a serious interest in database technology.