P r e r e q u i s i t e s
The world is everything that is the case
—Ludwig Wittgenstein: Tractatus Logico-Philosophicus
You're supposed to be a database professional, by which I mean someone who (a) is a database practitioner and
(b) has a reasonable degree of familiarity with relational theory. Please note that—I'm sorry to have to say this, but
it's true—a knowledge of SQL, no matter how deep, is not sufficient to satisfy part (b) of this requirement. As I said
in SQL and Relational Theory:
I'm sure you know something about SQL; but—and I apologize for the possibly offensive tone here—if your knowledge
of the relational model derives only from your knowledge of SQL, then I'm afraid you won't know the relational model
as well as you should, and you'll probably know some things that ain't so. I can't say it too strongly: SQL and the
relational model aren't the same thing .
The purpose of this chapter, then, is to tell you some things I hope you already know. If you do, then the
chapter will serve as a refresher; if you don't, then I hope it'll serve as an adequate tutorial. More specifically, what
I want to do is spell out in some detail certain fundamental aspects of relational theory that I'll be relying on heavily
in the pages ahead. The aspects in question are ones that, in my experience, database practitioners often aren't
aware of (at least, not explicitly). Of course, there are other aspects of relational theory I'll be relying on as well,
but I'll elaborate on those, if I think it necessary, when I come to make use of them.
Let me begin by giving a quick summary (mainly for purposes of subsequent reference) of those fundamental
aspects of relational theory just mentioned:
Any given database consists of relation variables (relvars for short).
The value of any given relvar at any given time is a relation value (relation for short).
Every relvar represents a certain predicate .
Within any given relvar, every tuple represents a certain proposition .
In accordance with The Closed World Assumption , relvar R at time T contains all and only those tuples that
represent instantiations of the predicate corresponding to relvar R that evaluate to TRUE at time T .