“An Introduction to Database Systems” by Christopher J. Date is a classic text-book on database concepts by one of the foremost writers and thinkers in the field. The book has been kept fairly up-to-date over the years by the author and includes topics like logic databases, temporal databases, decision support systems, object databases, object-relational databases, etc. Most of the book however concentrates on the relational data model and relational database management systems. This is not surprising since most of the popular database management systems today are based on this model and the author too clearly prefers this data model over all the others.
Almost all of the text in this book is a wistful reflection on the pure relational data model and its imperfect implementation in real database management systems. This is actually quite good since it is quite important for a serious student to know how things ought to be in addition to how things actually are. The book teaches you how to design good databases in general; it does not teach you the specifics of a particular product like Oracle or DB2. Beyond a preliminary overview of the general concepts, it will also not teach you writing complicated SQL queries, query optimisation for a particular product or writing stored procedures in PL/SQL. This book is what you need to get a solid understanding of the concepts underlying modern database managements systems.
The book is divided into a few logical parts, each part comprising well-defined chapters. Each chapter has an introductory overview, detailed exposition, summary of concepts, self-check exercises, well-anotated bibliography and answers to selected exercises. There are chapters on all the important concepts like the relational data model, relational algebra and calculus, database integrity, SQL, database normalisation, query optimisation, transactions, concurrency, recovery, security, etc.
The book provides most of the examples in a weird language called “Tutorial D” instead of SQL. It does not tell you much about the data models and database systems prevalent before the relational data model, depriving the student of a useful perspective on the historical significance of this model. The book does not provide any information on how relational databases could be implemented dismissing it as a detail that varies from product to product. This is quite unfortunate since it is very instructive to see how an abstract data model is concretely implemented in an efficient manner.