Nejprve určíme, jaké vztahy aplikací nás zajímají. Např. „uživatel [ID uživatele] má roli lektor“ nebo „uživatel [ID uživatele] má křestní jméno [jméno] a heslo [heslo] a ....
Každý získá základní vztah, který obsahuje řádky hodnot, které spolu takto souvisí. Parametry vztahu aplikace vztahu jsou jeho atributy. Např. Lektor (ID uživatele) nebo Uživatel (ID uživatele, jméno, heslo, ...).
Pro každý vztah význam jeho aplikačního vztahu určuje pro každý sloupec, na jaké množině sloupců je funkčně závislý. Např.:Daný uživatel [ID uživatele] má křestní jméno [jméno] a heslo [heslo] a ..., pokud znáte ID uživatele, znáte křestní jméno? Pokud ano, je zde FD {user ID} -> {first name}. Pokud znáte uživatelské jméno a heslo, znáte křestní jméno? A tak dále pro každý vztah a každou sadu (možná určujících) atributů a každý (možná určený) atribut.
Na to pak najdeme minimální kryt. To určuje kandidátní klíče.
Takže pokud chcete nějakou zpětnou vazbu k těmto krokům, udělejte je.