Primero determinamos qué relaciones de aplicación nos interesan. Por ejemplo, "el usuario [ID de usuario] tiene el rol de profesor" o "el usuario [ID de usuario] tiene nombre [nombre] y contraseña [contraseña] y ...".
Cada uno obtiene una relación base que contiene las filas de valores que están relacionados de esa manera. Los parámetros de la relación de aplicación de una relación son sus atributos. Por ejemplo, Profesor (ID de usuario) o Usuario (ID de usuario, nombre, contraseña, ...).
Para cada relación, el significado de su relación de aplicación determina para cada columna de qué conjuntos de columnas depende funcionalmente. Por ejemplo:Dado que el usuario [ID de usuario] tiene nombre [nombre] y contraseña [contraseña] y..., si conoce la ID de usuario, ¿sabe el nombre? Si es así, hay FD {ID de usuario} -> {nombre}. Si conoce el ID de usuario y la contraseña, ¿conoce el nombre? Y así sucesivamente para cada relación y cada conjunto de atributos (posiblemente determinantes) y cada atributo (posiblemente determinado).
Entonces encontramos una cubierta mínima para eso. Esto determina las claves candidatas.
Entonces, si desea recibir comentarios sobre estos pasos, hágalos.