what is canonical cover in dbms with examples