What I assume you shall assume
The discussions in the previous chapter were based on SQL for reasons of familiarity. Unfortunately, however, SQL really isn’t suitable as a basis for the kind of investigation and detailed technical discussion the subject at hand demands. For one thing, the concepts we need to examine often can’t be formulated in SQL at all; for another, even when they can, SQL usually manages to introduce so much irrelevant and unnecessary complexity that it becomes hard to see the forest for the trees, as it were. For such reasons, I intend to use as a foundation for the rest of the book, not SQL as such (though I’ll still have a few things to say about SQL as such from time to time), but rather a hypothetical language called Tutorial D. Now, I believe that language is pretty much self-explanatory; however, a comprehensive description can be found if needed in the book Databases, Types, and the Relational Model: The Third Manifesto, by Hugh Darwen and myself (3rd edition, Addison-Wesley, 2006).
As its title suggests, the book just mentioned—referred to hereinafter as just “the Manifesto book” for short—also introduces and explains The Third Manifesto, a precise though somewhat formal definition of the relational model and a supporting type theory (including, incidentally, a comprehensive model of type inheritance). In that book, we use the name D as a generic name for any language that conforms to the principles ...