The aim of the book is to provide an informal approach to databases and the languages used to manipulate them. The author has succeeded with his objective and has developed an eminently readable book without encumbering it with theorems. Readers who have some background in programming languages should be able to read the text.
The first chapter provides background material on propositional logic. The second chapter presents material on predicate logic. Both chapters provide descriptive material and read well. Readers who know logic may easily skip the chapters. The third chapter describes lambda expressions and list processing useful for comprehending database query languages based on applicative or functional languages. Readers who are familiar with the LISP language will find good material here.
The first exposure that one receives to databases is through the logic programming language PROLOG. The reader learns how to retrieve clauses. He or she also learns about the backtracking mechanism in PROLOG, recursive programming, and some of the non-logical operators, such as “cut,” “assert,” and “retract.” The material is described well. Unfortunately, the author does not make it clear that PROLOG, as currently constituted, is oriented towards databases that reside in main memory.
Chapters 5 through 8 describe various database languages: KRC, a functional programming language (Chapter 5); the relational model (Chapter 6); calculus-based languages, QUEL, SQL, and QBE (Chapter 7); and a relational algebra-based language, ASTRID (Chapter 8).
Syntactic query transformations useful for optimizing search in the relational algebra and relational calculus are covered in Chapter 9. The reader comes away with an appreciation of the various transformations used and how they help to speed retrieval.
The functional data model as embodied in DAPLEX is explicated in Chapter 10. The final two chapters describe the CODASYL Data Base Task Group approach to networks and cover the Bachman diagrams for representing schemes.
The book could be useful for first-level undergraduate courses on databases in business schools and computer science curricula. Unfortunately, the book lacks exercises. Issues such as the definition of a database, a query, and an answer to a query as well as the question of whether a database answers all queries correctly and completely are not discussed in the book.