3

Я составил I нормальную форму для БД. Раскидав поля по разным таблицам, я получил другую структуру, но мне кажется, что это уже III нормальная форма. А мне для наглядности отчёта хотелось бы показать еще вторую. Или если я не прав и это II форма, как получить III? Извините, что кидаю ссылки: не хватает репутации, чтобы залить сюда.

Imgur

Imgur

Deleted
  • 371
elfinorr
  • 137
  • 1
    IMHO это уже III нормальная форма.

    --

    Не знаю, как насчет жанра, а вот несколько авторов у книги это не редкость.

    Так что, еще одну табличку код-книги/код-автора надо бы добавить.

    --

    Вы наверняка читали про нормальные формы.

    Так вот, если в эту табличку перенести некоторые атрибуты из таблиц Книги и Автор, то получите схему во второй форме.

    – avp Mar 21 '14 at 21:51
  • первая таблица не в 1-й НФ. т.к. присутствуют ключи и значения, описывающие одну и ту же сущность, например, код издательства и издательство. В этой таблице не должно быть кодов, только значения. – Yura Ivanov Mar 21 '14 at 23:08
  • вторая форма получится, например, после декомпозиции на две сущности книга и заказ. и код должен появиться только у книги, на который будет ссылка в заказе. это будет не третья форма из-за транзитивных зависимостей.
    upd подумалось, что и тут код не нужен. книгу однозначно идентифицирует название, автор, год (по хорошему использовать ISBN, но в друг там самиздат какой-то), поэтому ссылка на книгу в заказе будет составной - на список ключевых полей.
    – Yura Ivanov Mar 21 '14 at 23:08
  • ну а у вас уже третья нф. у заказа, правда, кода не должно быть. номер может быть, но это не код. вот если дальше у вас появятся сущность в которых будут ссылки на заказ, то да, в коде будет смысл. в таком виде ключом является номер+дата. – Yura Ivanov Mar 21 '14 at 23:08
  • Согласен с уваж. @avp: без "многое ко многому" Вам не обойтись. Особенно, если торговать, например, научно-популярными журналами; там соавторство - частое явление. А так, получилась у Вас вполне пристойная НФ, по крайней мере, не ниже третьей. Мне понравилось. – BuilderC Mar 23 '14 at 09:24
  • тут на самом деле вопрос в том, какая задача решается. в качестве обучения написать структуру баз в разных НФ или создать структуру, с которой удобно работать. В частности суррогатные ключи для корректной 3-й НФ не нужны, но в реальной жизни без них никуда... – Yura Ivanov Mar 23 '14 at 19:10

1 Answers1

1

Уточнение, нормальная форма это термин, который относится к отношению (таблице), но не ко всей БД.

Теперь по поводу 2НФ в отношении данных таблиц. Мы знаем из определения, что отношение, которое находится в 1НФ и у которой все не ключевые атрибуты зависят целиком (т.е. в составе ключа нет под-ключей) от ключа (потенциальных ключей), находится во 2НФ.

Ввиду вышесказанного все отношения у которых имеется ключ, состоящий лишь из одного атрибута находятся во 2НФ, в данном случае это: Код, Автор, Издательство, Жанр, ну и скорее всего Оператор и Покупатель (у них на схеме не указаны ключи в самих таблицах просто).

Остаётся отношение Заказ. У него имеется составной ключ (если судить по схеме): Код книги, Код оператора, Код клиента и атрибут Код заказа, который скорее всего и является первичным ключом (если посмотреть на список атрибутов в первой таблице). Если это так и у отношения Заказ основой ключ это Код заказа, то она также находится во 2НФ. Если же ключ всё-таки составной, то и в данном случае отношение отношение будет находится во 2НФ, так как ни Код книги, ни Код оператора, ни Код клиента поодиночке и в комбинации друг с другом не определяют не ключевые атрибуты Код заказа, Дата заказа и Срок выполнения.

edem
  • 5,970