An Introduction to Database Systems by C. J. Date
ISBN 0-321-19784-4 The fundamental introductory book on databases.
You might later disagree with ChrisDate, but you'd better read this book, for your own good.
Note that there are several versions (editions) of this book floating around, as Chris updates it every few years. You can get slightly older versions for deep discounts because universities that require later editions for database courses flood the market with the older editions.
I think Date is bright and I like relational, but the book is more academic than it needs to be in my opinion. Relational algebra is a formal mechanism to transform tables, set, and logical expressions into yet more (perhaps virtual) tables. Whether one uses EfCodd's original primitives or makes a different set that some might find more "human friendly", as long as they follow the "rules of tables" and offer a wide or full range of possibilities, it is hard to dismiss them as objectively inferior to Codd's primitives.
It is sort of analogous to deciding which Boolean logical primitives (AND, OR, NOT) to include in your "base set" of operations. There are other possible function/operation sets besides these (some include XOR for example) that can also be used as a base set. AND, OR, and NOT were probably chosen mostly because of their common use in English rather than some logical deduction that they are the only or best operation set. Date implies that Codd's original primitives are the only or best set.
His choice of vocabulary is also unnatural. Call things "rows" and "tables" for petesake. Who cares what the original relational papers called them.
I bring this up because I want to see relational's appeal spread instead of held down by the viewpoint that relational may be esoteric or confusing. I think it is quite "natural" if communicated better and/or better relational languages were explored. It is an area I would like to see investigated more. The OO world did not stop with the SimulaLanguage, for example. Relational needs an AlanKay-like figure to popularize relational thinking and vocabulary.
Regarding the selection of logical primitives: Date is well aware that alternate primitive sets are possible. He mentions this in TheThirdManifesto, in the second edition at least. In some of his papers, it is also obvious that he does not consider Codd's original primitives to be the only or best set.
Regarding vocabulary: The choice was made advisedly, and is explained in TheThirdManifesto. Terms like "row" and "table" have been diluted by poor practice and implementation over the years; they're best reserved for referring to things closer to the physical model. (E.g. many so-called relational systems allow tables to contain duplicate rows; these are clearly not relations.) Personally, I like the distinction. When trying to explain relational algebra to people, I think that they find it only slightly off-putting, and once they grasp the distinctions, the terms help keep those distinctions in mind. This is most important for people with a lot of prior "practical" database experience. -- DanMuller
[Someone inserted a comment above describing relations with duplicates as multirelations. Never heard the term before. The term is misleading since it has nothing to do with relational theory.]
This is far from a "Database for Dummies" book; if you want a book that evangelizes relational technology for the masses, this isn't it, nor is it trying to be, so I don't think it should be criticized on that basis.
It is, however, a very appropriate university-level text. Despite the numerous comments that this book is impenetrably academic, my experience with it was just the opposite. For a university textbook, it seems to me to be exceptionally clear and easy to read, and of course, very comprehensive, which is a big plus.
It was not the text that introduced me to the subject, not by a longshot, so it's hard for me to judge exactly what level it is most suited to, but still I suspect that most people who criticize this book for being difficult are not comparing it to other university texts (in any subject).
-- DougMerritt
This was the text that introduced me to the subject, aside from the MySQL reference manual, and I still found it a very readable textbook. He does delve into the theory, but he explains each bit of the way, and the content is not lost in a lot of mathematical notation like in many other college textbooks. The Tutorial D language he uses has a decent syntax; it's not as English-like as SQL, but it also doesn't have as many oddities and special cases, letting you see the theory without hiding it behind practicalities.
The one thing it lacks is hands-on interactivity. A "Databases for dummies" book will let you start typing SQL statements straight into a RDBMS, and play around with the results. To my knowledge, you can't do this with Tutorial D. But once you understand the theory, it is usually not hard to translate Tutorial D to SQL. Date includes chapters on SQL too, so it's not like you won't know the language. IMHO the extra clarity of the theory more than makes up for the lack of "cookbook style" prepackaged solutions. -- JonathanTang
This is the book that taught me almost everything I know about the subject. I'd also read another book on the subject, by another set of academics, but they weren't as clear, and used Entity-Relationaship diagrams a lot. (Entity-Relationship stuff strikes me as relational theory mangled through UML. Not so pretty.) And having read Codd, Date is a lot more readable than him as well.
The thing I would've most appreciated, would've been a much deeper look at logical databases and their interrelation with relational databases. -- Wesley Parish