If I have R<A,B,C,D,E,F,G,H>, with A->BDE, G->CB, CF->H and if I'm asked to find
1. a canonical "covering" (I don't know the exact term, I hope this is clear enough)
2. all keys
3. which functional dependencies violate the 3NF
4. normalize the schema to 3NF,
how do I find the canonical "covering"? And only after this, can I proceed to find all keys?