As we know, every tuple appearing in some given relvar R at some given time represents a certain proposition, the proposition in question being an instantiation of the relvar predicate for that relvar R that (by convention) is understood to be true at the time in question. For example, here again is the predicate for relvar HP from Figure 14-2 and Figure 14-3:
Part PNO is named PNAME, has color COLOR and weight WEIGHT (which is greater than or equal to 17.0), and is stored in city CITY.
This relvar contains (among other things) a tuple for part P6, and that tuple represents the following instantiation of the foregoing predicate:
Part P6 is named Cog, has color Red and weight 19.0 (which is greater than or equal to 17.0), and is stored in city London.
Loosely speaking, then, we can say the database “contains propositions.” Now, I’ve said several times at earlier points in the book that the database involves some redundancy if and only if it says the same thing twice. Now I can make this statement a little more precise:
Definition: The database involves redundancy if and only if it contains two distinct representations of the same proposition.
Now, given that tuples represent propositions, it’s tempting to translate the foregoing definition into the following one: The database involves some redundancy if and only if it contains two distinct appearances of the very same tuple. Unfortunately, this latter “definition” is, at best, considerably oversimplified. Let’s ...