This is not only algorithm of finding candidate key. Another way includes finding the attributes that are on both sides(see comment of RandomSpectrum on my other blog post to know about it). I suppose both algorithms are correct,it's just a matter of personal preference. I'm not going to post the answers for the hard examples just to make it a bit harder. To get the answer,just send an email to