-1

这是从Wikipedia获取的关于范式的文章的屏幕截图。 在此处输入图像描述

有人说,为了符合3NFGenre Name列,必须将其放入它自己的字典表中。

我的问题是,那里也有Author Nationality断裂吗?3NF

4

1 回答 1

1

是的,你没看错,Author Nationality也是破3NF。

说明如下。Book可以识别author,但反过来不行。因此author在功能上依赖于书。author和 也是一样的author nationalityAuthor 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
于 2019-02-06T09:49:38.273 回答