Лекции и практики (1). Курс лекций и материалы для практических занятий
Скачать 1.01 Mb.
|
Четвертая нормальная форма (4НФ).Отношение находится в 4НФ, если оно находится в 3НФ и в нем отсут- ствуют нетривиальные многозначные зависимости. Отрицательный момент в нарушении 4НФ заключается в том, что в одно отношение включаются независящие друг от друга атрибуты. Например, у кни- ги «Язык программирования СИ» (табл. 9.1) два автора и два редактора, но это не значит, что редактор Садчиков редактировал автора Бочкова, а редактор Се- дов – автора Субботина. А если у книги нет автора или редактора, то соответ- ствующие поля останутся пустыми (null). Т.е. в отношении КНИГИ–АВТОРЫ–РЕДАКТОРЫ(табл. 9.4) атрибуты Authorи Editorобразуют две многозначные зависимости от ключа, и при этом значения этих атрибутов не зависят друг от друга. Поэтому для приведения отношения к 4НФ нужно разбить его на два от- ношения КНИГИ–АВТОРЫи КНИГИ–РЕДАКТОРЫ(табл. 9.7, 9.8). Таблица 9.7. Отношение КНИГИ–АВТОРЫ(4НФ) Таблица 9.8. Отношение КНИГИ–РЕДАКТОРЫ(4НФ)
Обратите внимание, в отношениях, полученных после приведения к 4НФ, первичный ключ (ПК) состоит из всех атрибутов отношения. Примечание. Есть ещё т.н. третья усиленная форма (НФБК – нормальная форма Бойса- Кодда) и 5НФ. Описание этих форм можно найти в [1]. Нормализация сокращает дублирование данных, но появление новых от- ношений усложняет схему базы данных. Денормализация отношений Иногда после нормализации отношений проводят их денормализацию. Обоснованием денормализации может служить требование обеспечения опре- делённой производительности для критических запросов. В нормализованной БД одна сущность ПрО разбивается на несколько отношений, и для получения исходного отношения требуется выполнить операцию соединения. Эта опера- ция занимает много времени, поэтому нормализация может привести к паде- нию производительности БД. Денормализация бывает нескольких видов: Восходящая. Подразумевает перенос некоторой информации из подчинённого отношения в родительское. Например, для схемы ЗАКАЗЫ<–>> СТРОКИ ЗАКАЗОВобычно нужно знать общую сумму заказа, которая является вычисляемой величиной. Если эти вычисления производятся часто, то для повышения эф- фективности можно добавить в отношение ЗАКАЗЫполе Общая сумма. При этом возникает проблема обеспечения актуальности значения этого поля: пересчёт общей суммы при добавлении новой строки заказа, при удалении и при модификации позиций заказа. Обычно эта проблема решается програм- мно (в приложении) или с помощью триггеров БД. Нисходящая. В этом случае информация переносится из родительского отношения в под- чинённое. Например, в схеме ДОЛЖНОСТИ<–>> СОТРУДНИКИможно в качестве внешнего ключа использовать поле Названиедолжности, а не идентификатор. Для этого название в отношении ДОЛЖНОСТИдолжно быть определено как unique. Это позволяет избежать соединения отношений при запросе должности сотрудника. Разбиение одного отношения на два. В одно отношение помещаются все атрибуты сущности, которые связаны с экземпляром сущности как 1:1. Но бывает так, что запись имеет большую длину за счёт наличия атрибутов большого объёма (графические данные, текстовые описания и проч.). Если данные этих атрибутов редко использу- ются, то можно выделить в отдельное отношение атрибуты большого объё- ма. Для связи с исходным отношением вводится уникальный внешний ключ. А для получения исходного отношения создаётся представление (view), ко- торое является соединением двух полученных отношений. После нормализации/денормализации получается окончательная концеп- туальная схема БД, на основе которой проводится физическое проектирование. Далее рассмотрим пример проектирования БД с использованием метода "сущность-связь" и нормализации отношений. |