Дизайн на 3-й нормальной форме? - PullRequest
0 голосов
/ 13 мая 2011

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

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-й нормальной формы!

Есть ли это? Если да, то какой?

Спасибо, Mike

Ответы [ 2 ]

2 голосов
/ 13 мая 2011

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

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

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

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

где song_name - первичный ключ, в 5NF. (И 4NF, и 3NF, и так далее).

1 голос
/ 13 мая 2011

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

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

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

...