You might think it odd for the final chapter in a book that's meant to explain the relational model to have as its title What Is the Relational Model? Aren't you supposed to know by now?
Well, yes, you are. But the point of this chapter is to serve as a kind of wrap-up for everything that's gone before; in particular, it's meant to give a precise definition, for purposes of future reference, of just what it is that constitutes the relational model. The trouble is, the definition I'll give is indeed precise: so precise, in fact, that I think it would have been pretty hard to understand if I'd given it in Chapter 1. (As Bertrand Russell once memorably said: Writing can be either readable or precise, but not at the same time.) Of course, I did give a definition in Chapter 1--a definition, that is, of what I there called "the original model"--but I frankly don't think that definition is even close to being good enough, for the following reasons among others:
For starters, it was much too long and rambling. (Well, that was fair enough, given the intent of that preliminary chapter, but now I want a definition that's succinct as well as precise.)
I don't really care for the idea that the model should be thought of as consisting of "structure plus integrity plus manipulation"; in some ways, in fact, I think it's actively misleading to think of it in such terms.
"The original model" included a few things I'm not too comfortable with: for instance, nulls (of course!), the entity integrity rule, the idea of having to make one key primary, and the idea which I didn't discuss at all in this book, because I don't agree with it that domains and types are somehow different things. Regarding nulls, incidentally, I note that Codd first defined the relational model in 1969 and didn't introduce nulls until 1979; in other words, the model managed perfectly well (in my opinion, better) for some 10 years without any notion of nulls at all. What's more, early implementations managed perfectly well without them, too.
The original version of the model also omitted a few things I now consider vital. For example, it excluded any mention at least, any explicit mention of all of the following: predicates, constraints (other than candidate and foreign key constraints), relation variables, relational comparisons, relation type inference and associated features, certain algebraic operators (especially rename, extend, summarize, semijoin, and semidifference), and the important relations TABLE_DUM and TABLE_DEE. (On the other hand, I think it could fairly be argued that these features at least weren't precluded by the original version of the model; it might even be argued in some cases that they were in fact included, in a kind of embryonic form. For example, it was certainly always intended that implementations should include support for constraints other than just candidate and foreign key constraints.)
Without further ado, then, let me give my own definition.