Author: C J Date
This updated edition of a classic on relational theory has added NoSQL to the mix.
Subtitled 'How to Write Accurate Code', this is a book that splits opinions. In our reviews of the earlier editions of this book, Mike James said that if you want to know about relational theory and the many normal forms that can be applied to a database, it's a really good book to get to grips with it all - so long as you're a bit of a mathematician. Joe Celko, meanwhile, (an old adversary of Chris Date) felt there was too much emphasis on Tutorial D and not enough on 'pure' SQL, instead arguing why Tutorial D is right and SQL is flawed.
Tutorial D is the language invented by Date and Darwen and used in their classic text, The Third Manifesto. That book sets out how SQL isn't ideally matched to the relational database model, and defines the characteristics that an ideal language, D, would use; essentially, an ideal language would be based on the relational calculus. No syntactical details for D were given, but an example of how it might be developed was shown in the form of Tutorial D.
Tutorial D is used widely in the book reviewed here, and to get the best out of the book you're going to need to learn enough to understand the examples and many of the points being made. If the book were titled D and Relational Theory, it would in some ways be more accurate.
Despite these reservations, this is a well written and interesting book. The revisions to this edition bring the examples up to date with the changes to the SQL standard, and the improvements to Tutorial D. One nice touch is that, in response to readers' requests, Date has increased the size, admitting that his own eyesight isn't what it used to be, either.
The main addition to the book is an appendix on the new NoSQL systems. For those of us interested in relational theory, Date's analysis of NoSQL and its relationship with relational theory is worth buying the book for. Love him or loathe him, Chris Date is one of the big thinkers in the database arena, and his views on NoSQL are as blunt as everything else he writes. He says that in his view, NoSQL products are united in the extensive and demonstrable lack of understanding of the relational model displayed by their promoters. He goes on the the products are also united in their failure to distinguish properly between a model and its implementation.
He discusses other common problems with NoSQL - rejection of ACID transactions, data replication, functional segmentation, lack of schemas, and lack of join support. There's also an edited (and illuminating) version of the interview by Iggy Fernandez with Hugh Darwen and Chris Date for NoCOUG Journal (North California Oracle User Group).
Despite the larger font size, the book is still tough reading, as the ideas are still highly mathematical and in many cases quite abstract. I wouldn't recommend reading it if you're attempting to get to grips with SQL and want to improve your query writing. I would heartily recommend it to anyone who is interested in the thinking behind relational theory. Finally, if you want a less rosy-tinted view of NoSQL, at least read the appendix. You may not agree with all he says, but there are some real truths in there.
SQL And Relational Theory (Joe Celko Review)
SQL For Smarties