if and only if . Irreducible cover An irreducible cover of a set of FDs is a set of FDs such that: there exists no such that is a singleton set and . Algorithm to derive candidate keys from functional dependencies algorithm derive candidate keys from functional dependencies is input: a set S of FDs that contain only subsets of a header H output: the set C of superkeys that hold as candidate keys in all relation universes over H in which all FDs in S hold C := ∅ // found candidate keys Q := { H } // superkeys that contain candidate keys while Q <> ∅ do let K be some element from Q Q := Q – { K } minimal := true for each X->Y in S do K' := (K – Y) ∪ X // derive new superkey if K' ⊂ K then minimal := false Q := Q ∪ { K' } end if end for if minimal and there is not a subset of K in C then remove all supersets of K from C C := C ∪ { K } end if end while See also Domain relational calculus List of relational database management systems Query language Database query language Information retrieval query language Relation Relational database Relational database management system Tuple-versioning References Further reading External links cited in Codd's 1970 paper. . . . 1969 in computing Articles with example pseudocode Programming paradigms