维基百科中有关3NF的示例是否与之相符?

时间:2019-02-06 06:50:30

标签: database relational-database database-normalization third-normal-form

这是来自normal forms的关于Wikipedia的文章的屏幕截图。 enter image description here

有人指出,为了符合3NF,必须将Genre Name列放入其自己的字典表中。

我的问题是,Author Nationality是否也打破了3NF

1 个答案:

答案 0 :(得分:1)

是的,你是对的,Author Nationality也在打破3NF。

说明如下。 Book可以识别author,但不能相反。因此author在功能上取决于书籍。 authorauthor nationality的情况相同。 Author nationality在功能上取决于author。那里有传递依赖项:author nationality-> author-> book

在书本表中可以优化的另一件事是列thickness。它在功能上取决于pages。不过,将其放在额外的表中可能会显得过分,因为可以轻松地从pages得出此信息。我个人不会将该信息存储在数据库中。如果要在数据库中保存此信息,可以创建一个类似

的视图
CREATE VIEW v_book AS 
SELECT b.*, 
case when pages between 0 and 100 then 'slim' else 'thick' end as thickness 
FROM book b;

书桌应该看起来像

book | author_id | pages | genre_id | publisher_id

与另一位表格作者

author_id | author_name | author_nationality