Получение тех же FD, с которыми вы начинаете после разложения BCNF?
Я произвел декомпозицию BCNF по отношению, которое имеет 5 функциональных зависимостей и в итоге получило 5 отношений. Однако каждое новое отношение имело те же атрибуты и FD, что и одна из исходных функциональных зависимостей.
Например, одна функциональная зависимость была AB -> C, и одно из 5 отношений, с которыми я закончил, имело атрибуты ABC с функциональной зависимостью AB -> C. То же самое было и для остальных четырех отношений (те же атрибуты и FD, что и у одного из оригинальных FD).
Означает ли это, что я неправильно разложил BCNF?
Я нашел этот вопрос Специфическая декомпозиция BCNF, которая описывает похожую ситуацию и, предположительно, это правильно.
Не означает ли это, что вам совсем не нужно следовать алгоритму BCNF, и вы можете просто взять атрибуты из каждого FD и поместить его в отношение, и тогда каждое отношение будет в BCNF, и, таким образом, новая схема, составленная новые отношения тоже будут?
1 ответ
Иногда все оригинальные FD (функциональные зависимости) присутствуют среди компонентов разложения. Это когда "FDs сохраняются", и если это возможно, то это предпочтительнее. (Это всегда возможно для нормализации к 3NF и к более строгим EKNF, которые на самом деле производят обычные алгоритмы "3NF".) Однако не каждое разложение на BCNF сохраняет все FD. И не всегда возможно сохранить все FD при разложении на BCNF. Случаи, когда это невозможно, когда CK (ключи-кандидаты) перекрываются.
Непонятно, что вы подразумеваете под "просто взять атрибуты каждого FD и поместить их в отношение". Но иногда, когда вы выделяете атрибуты FD, некоторые другие FD больше не имеют всех своих атрибутов только в одном компоненте, поэтому они не могут оказаться в одном из компонентов, то есть не сохраняются. Алгоритм BCNF является алгоритмом BCNF, потому что он обрабатывает все случаи, и если вы не будете следовать одному из них, вы не всегда получите декомпозицию BCNF. Если вы хотите понять, почему такие алгоритмы разработаны именно так, как они, то прочитайте введение в один из них. Например, Концепции системы баз данных Silberschatz, Korth & Sudarshan, глава 7 Проектирование реляционных баз данных, разделы 7.6 Нормальная форма Бойса – Кодда (7.6.2 Алгоритм декомпозиции и 7.6.3 Сохранение зависимостей) и 7.7 Третья нормальная форма. Вы можете найти текст и слайды онлайн.
7.6.3 Сохранение зависимостей
Не каждая декомпозиция BCNF сохраняет зависимость.
Напомним, что объединение без потерь является необходимым условием для декомпозиции, чтобы избежать потери информации. Поэтому мы вынуждены отказаться от BCNF или сохранения зависимостей. В разделе 7.7 мы представляем альтернативную нормальную форму, называемую третьей нормальной формой, которая представляет собой небольшую релаксацию BCNF; мотивация для использования третьей нормальной формы заключается в том, что всегда существует зависимость, сохраняющая разложение на третью нормальную форму.
Существуют ситуации, когда существует несколько способов разложить схему на BCNF. Некоторые из этих разложений могут сохранять зависимость, а другие - нет.
В общем, разработчик базы данных должен поэтому искать альтернативные декомпозиции и выбирать, где возможно, декомпозицию, сохраняющую зависимости.