Дизайн на 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, и так далее).