Соответствует ли пример в Википедии о 3NF? - PullRequest
0 голосов
/ 06 февраля 2019

Это скриншот из статьи о нормальных формах , взятых из Википедии .enter image description here

Там заявлено, что для соответствия 3NF столбец Genre Name должен быть помещен в его собственную таблицу словарей.

Мой вопрос таков:Author Nationality ломается 3NF там тоже?

1 Ответ

0 голосов
/ 06 февраля 2019

Да, вы правы, Author Nationality также нарушает 3NF.

Объяснение следующее.Book может идентифицировать author, но не наоборот.Поэтому author функционально зависит от книги.То же самое для author и author 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
...