这是从Wikipedia获取的关于范式的文章的屏幕截图。
有人说,为了符合3NF
该Genre Name
列,必须将其放入它自己的字典表中。
我的问题是,那里也有Author Nationality
断裂吗?3NF
这是从Wikipedia获取的关于范式的文章的屏幕截图。
有人说,为了符合3NF
该Genre Name
列,必须将其放入它自己的字典表中。
我的问题是,那里也有Author Nationality
断裂吗?3NF
是的,你没看错,Author Nationality
也是破3NF。
说明如下。Book
可以识别author
,但反过来不行。因此author
在功能上依赖于书。author
和 也是一样的author nationality
。Author nationality
在功能上依赖于author
。在那里你有你的传递依赖:author nationality
-> author
-> book
。
可以在 book 表中优化的另一件事是 column 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