This statement is in fact a proposition , which in logic is something that evaluates to either TRUE or FALSE,
unconditionally. Here are a couple of examples:
Edward Abbey wrote The Monkey Wrench Gang .
William Shakespeare wrote The Monkey Wrench Gang .
The first of these is true and the second false. Don't fall into the common trap of thinking that propositions must
always be true! However, the ones I'm talking about at the moment are supposed to be true ones, as I now explain:
First of all, every relvar has an associated predicate, called the relvar predicate for the relvar in question. (So
the predicate shown above— Supplier SNO supplies part PNO in quantity QTY —is the relvar predicate for
Let relvar R have predicate P . Then every tuple t appearing in R at some given time T can be regarded as
representing a certain proposition p , derived by invoking (or instantiating) P at that time T with the attribute
values from t as arguments.
And ( very important! ) we assume by convention that each proposition p obtained in this manner evaluates to
Given the sample value shown for relvar SP on the left of Fig. 2.1, for example, we assume the following
propositions both evaluate to TRUE at time T1 :
Supplier S1 supplies part P1 in quantity 300.
Supplier S2 supplies part P1 in quantity 300.
What's more, we go further: If at some given time T a certain tuple plausibly could appear in some relvar but
doesn't, then we're entitled to assume the corresponding proposition is false at that time T . For example, the tuple
( 'S1' , 'P2' , 200 )
(to adopt an obvious shorthand notation) is certainly a plausible SP tuple; but it doesn't appear in relvar SP at time
T1 —I'm referring to Fig. 2.1 again—and so we're entitled to assume it's not the case that the following proposition
is true at time T1 :
Supplier S1 supplies part P2 in quantity 200.
(On the other hand, this proposition is true at time T2 .)
To sum up: A given relvar R contains, at any given time, all and only the tuples that represent true
propositions (true instantiations of the relvar predicate for R ) at the time in question—or, at least, that's what we
always assume in practice. In other words, in practice we adopt what's called The Closed World Assumption . And
since that assumption is so crucial—it underlies just about everything we do when we use a database, even though
it's seldom acknowledged explicitly—I'd like to spell it out here for the record:
Definition: Let relvar R have predicate P . Then The Closed World Assumption (CWA) says (a) if tuple t
appears in R at time T , then the instantiation p of P corresponding to t is assumed to be true at time T ;