Predicate - SQL
Consider the declarative sentence-a proposition-that is used to introduce this topic:
"Student S1, named Anne, is enrolled on course C1."
Recall that the terms S1, Anne, and C1 are designators, each referring unambiguously to a particular thing. The chapter later explains how a tuple can provide values-attribute values-to be interpreted as designators to be substituted for the corresponding parameters of a predicate. Thus, this sentence might be represented by the tuple denoted in Tutorial D by TUPLE{StudentId SID('S1'), Name NAME('Anne'), CourseId CID('C1') }.
As SQL allows NULL to appear wherever a value can appear, we have to entertain the notion that the row denoted in SQL by ( SID('C1'), NULL, CID('C1') ) might represent some sentence. (Aside: SQL does not use attribute names to connect values to their corresponding parameters.
Instead, the correspondence is determined by position and I have assumed that the parameters are to be considered in the order StudentId, Name, CourseId. End of aside.) Now, could that sentence be "Student S1, named NULL, is enrolled on course C1"? Well, no, because NULL is not a name and really doesn't designate anything. The row might instead represent the sentence "Student S1, whose name is not known, is enrolled on course C1". But that sentence contains nothing that can be regarded as a designator substituted for the parameter Name.