Definition: Let r be a relation and let bx be a boolean expression in which every attribute reference identifies some attribute of r and there aren’t any relvar references. Then bx is a restriction condition, and the restriction of r according to bx, r WHERE bx, is a relation with (a) heading the same as that of r and (b) body consisting of all tuples of r for which bx evaluates to TRUE.
For example:
Let r be a relation. Then the restriction r WHERE TRUE (or, more generally, any expression of the form r WHERE bx where bx is a boolean expression such as 1 = 1 that’s identically TRUE)[75] just returns r. Such a restriction is known as an identity restriction.
Note: Tutorial D does support expressions of the form r WHERE bx, of course, but those expressions aren’t limited to being simple restrictions as defined above, because the boolean expression bx isn’t limited to being a restriction condition but can be more general. Similar remarks apply to SQL also. Examples are given in later chapters.
As an aside, I remark that restrict is sometimes called select; I prefer not to use this term, however, because of the potential confusion with SQL’s SELECT operator. SQL’s SELECT operator—meaning, more precisely, the SELECT clause portion of a SELECT expression—isn’t restriction at all but is, rather, a kind of loose combination of UNGROUP, EXTEND, RENAME, and “project” (“project” in quotes because it doesn’t eliminate duplicates unless explicitly asked to do so). Note: UNGROUP and EXTEND are described in the next chapter.