Нормализация базы данных - разложить ее на BCNF и найти каноническое покрытие для F
Я пытаюсь выяснить каноническое покрытие для F в таблице ниже и разложить его на BCNF. - Атрибут книги
Book ID Title ISBN Publish Date Publisher ID Publisher Name Book score Author ID Author Name
Каждая книга получила один балл и, конечно, одного автора.
Это данные функциональные зависимости:
Book ID - > Title, ISBN, Publish Date, Publisher ID, Publisher Name<br />
Book ID - > Author ID, Author Name, Book Score<br />
Publisher ID- > Publisher Name<br />
Author ID - > Author Name<br />
Чтобы найти каноническую бухту для F, я знаю, что размер правой руки должен быть одинаковым RHS, а не посторонним для LFS.
Итак, у меня есть это:
BookID- > Title <br />
BookID- > ISDN<br />
BookID- > Publish Date<br />
BookID- > Publish ID<br />
BookID- > Publisher Name<br />
BookID- > Author ID<br />
BookID- > Author Name<br />
BookID- > Book Score<br />
Publisher ID- > Publisher Name<br />
Author ID - > Author Name<br />
Тогда я застрял и понятия не имею, как двигаться дальше...
Чтобы разложить его на BCNF, каждый определитель является ключом-кандидатом, и я считаю, BookID
, Publisher ID
а также Author ID
ВСЕ кандидаты на ключ.
И я понятия не имею, как продолжить после...
1 ответ
Каноническая обложка
В канонической обложке вы должны устранить зависимость BookID → PublisherName
поскольку оно может быть получено из BookID → PublisherID
а также PublisherID → PublisherName
,
Ключи-кандидаты
Тогда единственным ключом-кандидатом является BookID: PublisherID и AuthorId не являются ключами-кандидатами, поскольку они не определяют все атрибуты отношения, а только один из них.
Разложение в BCNF
Наконец, в этом случае легко найти BCNF, поскольку достаточно разложить отношение по трем отношениям с ключами-кандидатами на три определителя различных функциональных зависимостей и другие атрибуты определенных атрибутов. В более сложных случаях, однако, необходимо использовать некоторый алгоритм, например, так называемый "алгоритм анализа", который вы можете найти в любой хорошей книге по базам данных.