Минимальное покрытие набора функциональных зависимостей

Я проходил через условия минимального покрытия набора функциональных зависимостей.

Здесь упоминается, что правая сторона может иметь только один атрибут. Так {A1A2 → B1B2} это невозможно. Это должно быть разделено как {A1A2 → B1, A1A2 → B2},

Но в СУБД Корта следующее условие

Each left side of a functional dependency in Fc is unique. That is, there are no
two dependencies A1 → B1 and A2 → B2 in Fc such that A1 = A2.

Итак, согласно этому {A1A2 → B1, A1A2 → B2} это невозможно. Зависимости должны быть объединены как {A1A2 → B1B2} чтобы избежать повторения.

Пожалуйста, уточните, что является правильным.

1 ответ

Мне кажется, это разница в обозначениях и не более того. Эти два набора FD эквивалентны.

  • {A1A2 → B1}
  • {A1A2 → B2}

  • {A1A2 → B1B2}

Большинство автоматизированных инструментов, которые я использовал, выражают минимальное покрытие, как вы видите в первом наборе. Ваш текст, кажется, предпочитает второй набор.

Два разных выражения не влияют на сводимость, охват или закрытие, которые являются реальными проблемами при вычислении минимального покрытия. Вы можете утверждать, что первая версия, которая имеет не более одного непростого атрибута в правой части, лучше, потому что она ближе к декомпозиции в 6NF.

Но вы должны использовать версию, которую требует ваш текст и ваш профессор, помня, что это ложное требование. Это неверно в том смысле, что изменение нотации со второй версии на первую не влияет на то, действительно ли вы нашли минимальное покрытие, и не оказывает существенного влияния на работу, которую необходимо выполнить для вычисления минимального покрытия.

Другие вопросы по тегам