Constraints ⇒ can't record partial information

"Mark one box only" looks like an integrity constraint. But if we impose it we end up recording less information. The real world is messy; we often need relaxed constraints in order to record partial information about the world.

Census

Functional dependencies

Consider the supplier relvar which records the extension of the following predicate:

There exists a supplier under contract identified by supplier number [SNO] with name [SNAME] having status [STATUS] and located in city [CITY]

SNOSNAMESTATUSCITY
S1Smith20London
S2Jones10Paris
S3Blake30Paris
S4Clark20London
S5Adams30Athens

It is assumed this relvar has key {SNO}. That's a key constraint; it implies the FD constraint

    FD:   {SNO} --> {SNAME,STATUS,CITY}

Generally speaking FDs are incompatible with partial information.

Putting it another way, if we only have partial information about a given supplier, then we are unable to record any information about them using this predicate.