我试图找出下表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
都是密钥的所有候选。
我不知道以后如何继续...
答案 0 :(得分:0)
规范封面
在规范的封面中,您应该消除依赖项BookID → PublisherName
,因为它可以源自BookID → PublisherID
和PublisherID → PublisherName
。
候选键
然后,唯一的候选键是BookID:PublisherID和AuthorId是 not 候选键,因为它们 not 不能确定关系的所有属性,只是其中的一个
在BCNF中分解
最后,在这种情况下,很容易找到BCNF,因为用候选键将具有不同功能依赖关系的三个决定因素分解为三个关系就足够了,而将其他属性归为确定的属性就足够了。但是,在更复杂的情况下,有必要使用某种算法,例如所谓的“分析算法”,您可以在任何有关数据库的好书中找到它。