维基百科中关于 3NF 的例子符合吗?

Is the example in wikipedia about 3NF conform it?

这是关于 normal forms taken from Wikipedia 的文章的屏幕截图。

声明为了符合 3NFGenre Name 列必须放入它自己的字典 table。

我的问题是,Author Nationality breaking 3NF 也有吗?

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

说明如下。 Book可以识别author,反之则不行。因此 author 在功能上依赖于 book。 authorauthor nationality 也一样。 Author nationality 在功能上依赖于 author。你有你的传递依赖:author nationality -> author -> book

本书 table 中可以优化的另一件事是列 thickness。它在功能上依赖于 pages。但是,将其放在额外的 table 中会有点矫枉过正,因为此信息可以很容易地从 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;

这本书 table 应该是这样的

book | author_id | pages | genre_id | publisher_id

与另一位 table 作者

author_id | author_name | author_nationality