Figures 3.a and 3.b, section 1.4, page 381 of Edgar Codd’s 1970 landmark paper ‘A Relational Model of Data for Large Shared Data Banks’ presents a set of relation schemas (unnormalized in figure 3.a and in 1NF in figure 3.b).
The normalized relation schema children′
has a key dependency KEY(man#, childname)
, so it allows instances like the following relation:
man# | childname | birthdate |
---|---|---|
1 | "Thomas" | 2016-03-12 |
2 | "Paul" | 2011-08-02 |
2 | "Julia" | 2012-01-25 |
3 | "Thomas" | 2016-03-12 |
The tuples (1, "Thomas", 2016-03-12)
and (3, "Thomas", 2016-03-12)
can refer to two different children named ’Thomas’ in the real world, or to the same child named ’Thomas’ in the real world (implying that his two parents are employed by the same company). So the relationship between tuples and children in the real world is many-to-one, i.e. a tuple can only refer to a single child, but a child can be the referent of multiple tuples.
Does the relational model mandate that the relationship between tuples of a relation and their referents be one-to-one (thereby making Codd’s example incorrect since it is many-to-one)?
In other words: is aliasing forbidden in the relational model? Must we always use globally unique references in our relations, i.e. UUID keys?