Tuples and Relations, Rows and Tables
[I] have reduced several great confused Volumes into a few perspicuous Tables.
—John Graunt (1662)
From the first two chapters you should have gained a pretty good understanding of what tuples and relations are, at least intuitively. Now I want to define those concepts more precisely, and I want to explore some of the consequences of those more precise definitions; also, I want to describe the analogous SQL constructs (viz., rows and tables) and offer some specific recommendations to help with our goal of using SQL relationally. Perhaps I should warn you that the formal definitions might look a little daunting—but that’s not unusual with formal definitions; the concepts themselves are quite straightforward, once you’ve struggled through the formalism, and you should be ready to do that by now because the terminology, at least, should be quite familiar to you.
Is this a tuple?—
┌────────────┬──────────────┬──────────────────┬─────────────┐│ SNO : CHAR │ SNAME : CHAR │ STATUS : INTEGER │ CITY : CHAR │├────────────┼──────────────┼──────────────────┼─────────────┤│ S1 │ Smith │ 20 │ London │└────────────┴──────────────┴──────────────────┴─────────────┘
Well, no, it isn’t—it’s a picture of a tuple, not a tuple as such (and note that for once I’ve included the type names in that picture as well as the attribute names). As we saw in Chapter 1, there’s a logical difference between a thing ...