what is canonical cover in dbms