Computation of candidate keys from functional dependencies