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
;