Дизайн на 3-й нормальной форме?

У меня есть таблица, которая имеет категорию атрибута. Например, таблица, в которой я сохраняю песни с атрибутом Жанр:

Songs(
ID (INT), 
Name (STRING), 
Genre: (STRING)
)

Таблица в 3-й нормальной форме?

Я имею в виду, я знаю, что лучше сохранить Genreв другой таблице и имеют отношения между таблицами, как:

Songs(
ID (INT), 
Name (STRING), 
Genre_ID: (INT)
)

Genre(
ID (INT),
Name (String)
)

где Songs.Genre_ID = Genre.ID,

Но я не могу определить, нарушает ли первый случай (с одной таблицей) какое-либо правило 3-й нормальной формы!

Является ли? Если да, то какой?

Спасибо майк

2 ответа

Решение

Какие ключи? Каким зависимостям должна удовлетворять таблица? Это то, что нам нужно знать, чтобы ответить на ваш вопрос.

Я предполагаю, что ID является единственным ключом, а ID->{Name,Genre} и что нет других нетривиальных, неключевых зависимостей. Если это правильно, то песни в 3NF. Что еще более важно, это в BCNF и 5NF.

Замена строкового атрибута Genre на целое число Genre_ID не имеет абсолютно никакого отношения к любой нормальной форме.

Повторяй за мной.

"Идентификационные номера не имеют ничего общего с нормализацией. Идентификационные номера не имеют ничего общего с нормализацией. Идентификационные номера не имеют ничего общего с нормализацией".

Если ваша цель состоит в том, чтобы сохранить один жанр для названия песни, то эта таблица

song_name           genre
--
Toxic               Pop
Itsy Bitsy Spider   Children's

где song_name является первичным ключом, находится в 5NF. (И 4NF, и 3NF, и так далее).

Другие вопросы по тегам