Вы правильно сообщили об определении BCNF: для каждой нетривиальной зависимости F + определителем является суперключ.
Итак, в вашем примере обе схемы отношений в разложении удовлетворяют этому определению: в r2
в единственной нетривиальной зависимости i_ID → dept_name
определителем является суперключ, а в r1
нет тривиальные зависимости, поэтому определение все еще выполняется. Итак, у вас есть две схемы, которые находятся в BCNF.
Но, как вы снова правильно заметили, зависимость s_ID, dept_name → i_ID
не сохраняется в наборе зависимостей разложения (даже если вы выполняете замыкание объединения множества зависимостей r1
и r2
), а это значит, что декомпозиция не сохраняет зависимости. На практике это означает, что в разложенной схеме тот факт, что пара значений s_ID
и dept_name
может соответствовать более чем одному значению i_ID
, что приводит к потере важного нарушения целостности.
Чему этот пример может нас научить? Что у нас может быть декомпозиция схемы в BCNF, которая создает базу данных, которая может содержать противоречивые данные. И обратите внимание, что в этом конкретном случае в BCNF существует декомпозиция no , которая может сохранить зависимости. Таким образом, BCNF не является панацеей для устранения всех проблем в проектировании баз данных, и на самом деле были определены другие нормальные формы, которые можно использовать для решения ряда проблем проектирования баз данных. Например, исходная схема примера уже находится в третьей нормальной форме (3NF), и это считается приемлемым в практических ситуациях.