Primeiro, determinamos em quais relacionamentos de aplicativos estamos interessados. Por exemplo, "usuário [ID do usuário] tem função de palestrante" ou "usuário [ID do usuário] tem nome [nome] e senha [senha] e ...".
Cada um obtém uma relação de base que contém as linhas de valores que estão relacionados dessa maneira. Os parâmetros do relacionamento de aplicação de uma relação são seus atributos. Por exemplo, Lecturer(user ID) ou User(user ID, first name, password, ...).
Para cada relação, o significado de seu relacionamento de aplicação determina para cada coluna de quais conjuntos de colunas ela é funcionalmente dependente. Por exemplo:dado que o usuário [user ID] tem o primeiro nome [first name] e a senha [password] e..., se você conhece o user ID, então você sabe o primeiro nome? Nesse caso, há FD {user ID} -> {first name}. Se você sabe o ID do usuário e a senha, você sabe o primeiro nome? E assim por diante para cada relação e cada conjunto de atributos (possivelmente determinantes) e cada atributo (possivelmente determinado).
Então encontramos uma cobertura mínima para isso. Isso determina as chaves candidatas.
Então, se você quiser algum feedback sobre essas etapas, faça-as.