While most of the material presented here has been presented before, there is some new material, particularly on annular covers and in the chapter on database semantics. I have tried to bring material together that was available previously only in separate papers, and give some coherence to the results. That task has involved translating many of the results into standard notation, redoing some of the definitions, and constructing some new proofs for previously known theorems.
The book is aimed at a second course in databases, presumably at the graduate level, but possibly at the advanced undergraduate level. While an introductory course in database management systems is not an absolute prerequisite for this book, it is certainly desirable for some concrete motivation and intuition for the abstractions presented here. No specific course in mathematics is assumed, but there should be an acquaintance with set theory and the rudiments of formal logic. Some of the exercises require some sophisticated combinatorics, but those exercises are not central to the topic being developed-they are included for fun. Exercises that are deemed particularly difficult are marked with an asterisk.
Of course, I hope the book also will be a useful reference for researchers already working in the area. The bibliography is current through October 1981; some of the technical reports presumably have since appeared in journals and conference proceedings. I am grateful to Jeff Ullman for an advance copy of the bibliography to the second edition of Principles of Database Systems.
