Databases Reference
In-Depth Information
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:
1.
Edward Abbey wrote
The Monkey Wrench Gang
.
2.
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
relvar SP.)
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
TRUE.
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
;