0

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).

First normal form.

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?

1 Answer 1

3

Does the relational model mandate that the relationship between tuples of a relation and their referents be one-to-one

No. The relational model only manages the tuples. The mapping of a tuple to an assertion in some real-world domain, or some tangible external thing is not governed by the rules of the relational model.

Moreover, in your example the relation children doesn't model actual children, it models the relationship between an employee and a child. The relevant fact being modeled is only the number and ages of each employee's children.

You could add a separate table with one row per actual child, but that would simply be a different model, not a more correct one.

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.