Я не уверен, должен ли я заменить ACD → B на C → B или ACD → B на AC → B или ACD → B на CD → B.
Собственно алгоритмдолжны применяться последовательно. Таким образом, вы можете удалить либо A, либо D из этой зависимости, но затем вам придется снова проверить соответствие правила алгоритма результирующему набору функциональных зависимостей.
Фактически, если вы удалите, например, A, результирующееЗависимость CD → B
, и если вы повторите этот шаг, вы обнаружите, что теперь в этой зависимости больше нет посторонних атрибутов. Точно так же, если вы удалите D, также получающаяся зависимость AC → B
не будет содержать посторонних атрибутов.
Таким образом, вы можете видеть, что в соответствии с порядком, в котором вы проверяете атрибуты на этом шаге, вы можете создать вТеория различных минимальных покрытий (не всегда, как в этом случае).
Что касается проблемы нахождения всех возможных минимальных покрытий, я не знаю, существуют ли алгоритмы или умные методынайти их. Можно было бы попытаться применить алгоритм, рассматривая зависимости во всех возможных порядках и левую часть зависимостей во всех возможных порядках, но это, конечно, экспоненциальный процесс.