Пятая нормальная форма

Поделись знанием:
Перейти к: навигация, поиск

Пятая нормальная форма (5NF) — одна из возможных нормальных форм отношения реляционной базы данных.





Определение

Для определения пятой нормальной формы следует предварительно ввести понятие зависимости соединения, которое, в свою очередь основано на понятии декомпозиции без потерь.

Декомпозиция без потерь

Декомпозицией[1] отношения R называется замена R на совокупность отношений {R1, R2,… , Rn} такую, что каждое из них есть проекция R, и каждый атрибут R входит хотя бы в одну из проекций декомпозиции.

Например, для отношения R с атрибутами {a, b, c} существуют следующие основные варианты декомпозиции:

  • {a}, {b}, {c}
  • {a}, {b, c}
  • {a, b}, {c}
  • {b}, {a, c}
  • {a, b}, {b, c}
  • {a, b}, {a, c}
  • {b, c}, {a, c}
  • {a, b}, {b, c}, {a, c}

Рассмотрим теперь отношение R', которое получается в результате операции естественного соединения (NATURAL JOIN), применённой к отношениям, полученным в результате декомпозиции R.

Декомпозиция называется декомпозицией без потерь, если R' в точности совпадает с R.

Неформально говоря, при декомпозиции без потерь отношение «разделяется» на отношения-проекции таким образом, что из полученных проекций возможна «сборка» исходного отношения с помощью операции естественного соединения.

Далеко не всякая декомпозиция является декомпозицией без потерь. Проиллюстрируем это на примере отношения R с атрибутами {a, b, c}, приведённом выше. Пусть отношение R имеет вид:

R
a b c
Москва Россия столица
Томск Россия не столица
Берлин Германия столица

Декомпозиция R1 = {a}, R2 = {b, c} имеет вид:

R1
a
Москва
Томск
Берлин
R2
b c
Россия столица
Россия не столица
Германия столица


Результат операции соединения этих отношений:

R' = R1 NATURAL JOIN R2
a b c
Москва Россия столица
Москва Россия не столица
Москва Германия столица
Томск Россия столица
Томск Россия не столица
Томск Германия столица
Берлин Россия столица
Берлин Россия не столица
Берлин Германия столица

Очевидно, что R' не совпадает с R, а значит такая декомпозиция не является декомпозицией без потерь. Рассмотрим теперь декомпозицию R1 = {a, b}, R2 = {a, c}:

R1
a b
Москва Россия
Томск Россия
Берлин Германия
R2
a c
Москва столица
Томск не столица
Берлин столица


Такая декомпозиция является декомпозицией без потерь, в чём читатель может убедиться самостоятельно.

В некоторых случаях отношение вовсе невозможно декомпозировать без потерь. Существуют также примеры отношений, для которых нельзя выполнить декомпозицию без потерь на две проекции, но которые можно подвергнуть декомпозиции без потерь на три или большее количество проекций[2].

Зависимость соединения

Пусть R — переменная отношения, а A, B, …, Z — некоторые подмножества множества её атрибутов.

Если декомпозиция любого допустимого значения R на отношения, состоящие из множеств атрибутов A, B, …, Z, является декомпозицией без потерь, говорят, что переменная отношения R удовлетворяет зависимости соединения *{А, В, . . . , Z}[3].

Иными словами, переменная отношения R удовлетворяет зависимости соединения *{А, В, . . . , Z} тогда и только тогда, когда любое допустимое значение переменной отношения R эквивалентно соединению её проекций по подмножествам A, B, …, Z множества атрибутов.

Подобно тому, как функциональная зависимость есть частный случай многозначной зависимости, многозначная зависимость является частным случаем зависимости соединения. Зависимость соединения является предельным обобщением понятий многозначной и функциональной зависимости, то есть это наиболее общая форма зависимости между атрибутами отношения.

Важно понимать, что зависимость соединения определяется не для конкретного значения переменной отношения в тот или иной момент времени, а по всем возможным значениям. Поэтому понятие зависимости соединения определено не для отношения (конкретного значения), а для переменной отношения. Зависимость соединения определяется не механически по текущим значениям, а следует из внешнего знания о природе и закономерностях данных, которые могут находиться в переменной отношения. То же самое относится к многозначной и функциональной зависимостям.

Зависимость соединения *{A, B,…, Z} является тривиальной тогда и только тогда, когда по крайней мере одно из подмножеств A, B, …, Z является множеством всех атрибутов отношения (включает все атрибуты). В противном случае зависимость соединения является нетривиальной.

Формулировка определения

Отношение находится в пятой нормальной форме (иначе — в проекционно-соединительной нормальной форме) тогда и только тогда, когда каждая нетривиальная зависимость соединения в нём определяется потенциальным ключом (ключами) этого отношения[2].

Зависимость соединения *{A, B,…, Z} определяется потенциальным ключом (ключами) тогда и только тогда, когда каждое из подмножеств A, B, …, Z множества атрибутов является суперключом отношения[2].

Условие «каждое из подмножеств A, B,…, Z множества атрибутов является суперключом отношения» можно эквивалентно сформулировать так: «каждое из подмножеств A, B, …, Z множества атрибутов включает некоторый потенциальный ключ отношения».

Свойства 5НФ

Любое отношение в 5НФ автоматически находится также в 4НФ и, следовательно, во всех других нормальных формах. 5НФ является окончательной нормальной формой (по крайней мере в контексте операций проекции и соединения).

Рональд Фейгин в 1979 г. показал, что любая переменная отношения может быть подвергнута декомпозиции без потерь на эквивалентный набор переменных отношения в 5НФ, то есть 5НФ всегда достижима. Однако К. Дейт отмечает, что процедура определения того, что некоторая переменная отношения находится в 4НФ, а не в 5НФ, и, таким образом, существует возможность её дальнейшей выгодной декомпозиции, всё ещё остаётся не вполне ясной. Это связано с тем, что задача определения всех зависимостей соединения для отношения может оказаться очень сложной, а по поводу отношения можно утверждать, что оно находится в 5НФ, только при условии известности всех его потенциальных ключей и всех его зависимостей соединения.

Очень редко отношение, находящееся в 4НФ, не соответствует 5НФ. Это те ситуации, в которых реальные правила, ограничивающие допустимые комбинации атрибутов, никак не выражены в структуре отношения (см. пример ниже). В таком случае, если отношение не приведено к 5НФ, бремя обеспечения логической целостности данных отчасти перекладывается на приложение, отвечающее за добавление, удаление и изменения данных. В этом случае существует риск возникновения ошибок. Пятая нормальная форма исключает возникновение таких аномалий.

Пример

Предположим, что нужно хранить данные об ассортименте нескольких продавцов, торгующих продукцией нескольких фирм (номенклатура товаров фирм может пересекаться):

Ассортимент (продавцы, фирмы, товары)
Продавец Фирма Товар
Иванов Рога и Копыта Пылесос
Иванов Рога и Копыта Хлебница
Петров Безенчук&Ко Сучкорез
Петров Безенчук&Ко Пылесос
Петров Безенчук&Ко Хлебница
Петров Безенчук&Ко Зонт
Сидоров Безенчук&Ко Пылесос
Сидоров Безенчук&Ко Телескоп
Сидоров Рога и Копыта Пылесос
Сидоров Рога и Копыта Лампа
Сидоров Геркулес Вешалка

Если дополнительных условий нет, то данное отношение, которое находится в 4-й нормальной форме, является корректным и отражает все необходимые ограничения.

Теперь предположим, что нужно учесть следующее ограничение: каждый продавец имеет в своём ассортименте ограниченный список фирм и ограниченный список типов товаров и предлагает товары из списка товаров, производимые фирмами из списка фирм.

То есть продавец не имеет право торговать какими угодно товарами каких угодно фирм. Если продавец П имеет право торговать товарами фирмы Ф, и если продавец П имеет право торговать товарами типа Т, то в этом случае в ассортимент продавца П входят товары типа Т фирмы Ф при условии, что фирма Ф производит товары типа Т.

Такое ограничение может быть вызвано, например, тем, что список типов товаров продавца ограничен имеющимися у него лицензиями, либо знаниями и квалификацией, необходимыми для их продажи, а список фирм каждого продавца определён партнёрскими соглашениями.

В рассматриваемом примере, в частности, предполагается, что продавец Иванов имеет право торговать товарами только фирмы «Рога и Копыта», продавец Петров — товарами только фирмы «Безенчук&Ко», зато продавец Сидоров не имеет право торговать хлебницами и сучкорезами и т. д.

Предложенное выше отношение не может исключить ситуации, при которых данное ограничение будет нарушено. Ничто не препятствует занести данные о торговле товаром, который данная фирма вообще не выпускает, либо данные о торговле товарами той фирмы, которую данный продавец не обслуживает, либо данные о торговле таким типом товара, который данный продавец не имеет право продавать.

Отношение не находится в 5NF, поскольку в нём есть нетривиальная зависимость соединения *{{Продавец, Фирма}, {Фирма, Товар}, {Продавец, Товар}}, однако подмножества {Продавец, Фирма}, {Фирма, Товар}, {Продавец, Товар} не являются суперключами исходного отношения.

В данном случае для приведения к 5NF отношение должно быть разбито на три: {Продавец, Фирма}, {Фирма, Товар}, {Продавец, Товар}.

Товары продавцов
Продавец Товар
Иванов Пылесос
Иванов Хлебница
Петров Сучкорез
Петров Пылесос
Петров Хлебница
Петров Зонт
Сидоров Телескоп
Сидоров Пылесос
Сидоров Лампа
Сидоров Вешалка
Фирмы продавцов
Продавец Фирма
Иванов Рога и Копыта
Петров Безенчук&Ко
Сидоров Безенчук&Ко
Сидоров Рога и Копыта
Сидоров Геркулес
Товары фирм
Фирма Товар
Рога и Копыта Пылесос
Рога и Копыта Хлебница
Рога и Копыта Лампа
Безенчук&Ко Сучкорез
Безенчук&Ко Пылесос
Безенчук&Ко Хлебница
Безенчук&Ко Зонт
Безенчук&Ко Телескоп
Геркулес Вешалка


См. также

Напишите отзыв о статье "Пятая нормальная форма"

Примечания

  1. Строго говоря, следует использовать термин «проекционная декомпозиция», или «декомпозиция на основе проекции», поскольку разделение исходного отношения выполняется через операцию проекции. Теоретически существуют другие варианты декомпозиции, например на основе операции сокращения (выборки), однако они являются экзотическими, вследствие чего под декомпозицией, если специально не оговорено иное, понимают именно проекционную декомпозицию.
  2. 1 2 3 Дейт К. Дж. Введение в системы баз данных. — 8-е изд. — М.: «Вильямс», 2005
  3. Читается «звёздочка А, B, …, Z»

Литература

Отрывок, характеризующий Пятая нормальная форма

– И почему вы могли поверить, что он мой любовник?… Почему? Потому что я люблю его общество? Ежели бы вы были умнее и приятнее, то я бы предпочитала ваше.
– Не говорите со мной… умоляю, – хрипло прошептал Пьер.
– Отчего мне не говорить! Я могу говорить и смело скажу, что редкая та жена, которая с таким мужем, как вы, не взяла бы себе любовников (des аmants), а я этого не сделала, – сказала она. Пьер хотел что то сказать, взглянул на нее странными глазами, которых выражения она не поняла, и опять лег. Он физически страдал в эту минуту: грудь его стесняло, и он не мог дышать. Он знал, что ему надо что то сделать, чтобы прекратить это страдание, но то, что он хотел сделать, было слишком страшно.
– Нам лучше расстаться, – проговорил он прерывисто.
– Расстаться, извольте, только ежели вы дадите мне состояние, – сказала Элен… Расстаться, вот чем испугали!
Пьер вскочил с дивана и шатаясь бросился к ней.
– Я тебя убью! – закричал он, и схватив со стола мраморную доску, с неизвестной еще ему силой, сделал шаг к ней и замахнулся на нее.
Лицо Элен сделалось страшно: она взвизгнула и отскочила от него. Порода отца сказалась в нем. Пьер почувствовал увлечение и прелесть бешенства. Он бросил доску, разбил ее и, с раскрытыми руками подступая к Элен, закричал: «Вон!!» таким страшным голосом, что во всем доме с ужасом услыхали этот крик. Бог знает, что бы сделал Пьер в эту минуту, ежели бы
Элен не выбежала из комнаты.

Через неделю Пьер выдал жене доверенность на управление всеми великорусскими имениями, что составляло большую половину его состояния, и один уехал в Петербург.


Прошло два месяца после получения известий в Лысых Горах об Аустерлицком сражении и о погибели князя Андрея, и несмотря на все письма через посольство и на все розыски, тело его не было найдено, и его не было в числе пленных. Хуже всего для его родных было то, что оставалась всё таки надежда на то, что он был поднят жителями на поле сражения, и может быть лежал выздоравливающий или умирающий где нибудь один, среди чужих, и не в силах дать о себе вести. В газетах, из которых впервые узнал старый князь об Аустерлицком поражении, было написано, как и всегда, весьма кратко и неопределенно, о том, что русские после блестящих баталий должны были отретироваться и ретираду произвели в совершенном порядке. Старый князь понял из этого официального известия, что наши были разбиты. Через неделю после газеты, принесшей известие об Аустерлицкой битве, пришло письмо Кутузова, который извещал князя об участи, постигшей его сына.
«Ваш сын, в моих глазах, писал Кутузов, с знаменем в руках, впереди полка, пал героем, достойным своего отца и своего отечества. К общему сожалению моему и всей армии, до сих пор неизвестно – жив ли он, или нет. Себя и вас надеждой льщу, что сын ваш жив, ибо в противном случае в числе найденных на поле сражения офицеров, о коих список мне подан через парламентеров, и он бы поименован был».
Получив это известие поздно вечером, когда он был один в. своем кабинете, старый князь, как и обыкновенно, на другой день пошел на свою утреннюю прогулку; но был молчалив с приказчиком, садовником и архитектором и, хотя и был гневен на вид, ничего никому не сказал.
Когда, в обычное время, княжна Марья вошла к нему, он стоял за станком и точил, но, как обыкновенно, не оглянулся на нее.
– А! Княжна Марья! – вдруг сказал он неестественно и бросил стамеску. (Колесо еще вертелось от размаха. Княжна Марья долго помнила этот замирающий скрип колеса, который слился для нее с тем,что последовало.)
Княжна Марья подвинулась к нему, увидала его лицо, и что то вдруг опустилось в ней. Глаза ее перестали видеть ясно. Она по лицу отца, не грустному, не убитому, но злому и неестественно над собой работающему лицу, увидала, что вот, вот над ней повисло и задавит ее страшное несчастие, худшее в жизни, несчастие, еще не испытанное ею, несчастие непоправимое, непостижимое, смерть того, кого любишь.
– Mon pere! Andre? [Отец! Андрей?] – Сказала неграциозная, неловкая княжна с такой невыразимой прелестью печали и самозабвения, что отец не выдержал ее взгляда, и всхлипнув отвернулся.
– Получил известие. В числе пленных нет, в числе убитых нет. Кутузов пишет, – крикнул он пронзительно, как будто желая прогнать княжну этим криком, – убит!
Княжна не упала, с ней не сделалось дурноты. Она была уже бледна, но когда она услыхала эти слова, лицо ее изменилось, и что то просияло в ее лучистых, прекрасных глазах. Как будто радость, высшая радость, независимая от печалей и радостей этого мира, разлилась сверх той сильной печали, которая была в ней. Она забыла весь страх к отцу, подошла к нему, взяла его за руку, потянула к себе и обняла за сухую, жилистую шею.
– Mon pere, – сказала она. – Не отвертывайтесь от меня, будемте плакать вместе.
– Мерзавцы, подлецы! – закричал старик, отстраняя от нее лицо. – Губить армию, губить людей! За что? Поди, поди, скажи Лизе. – Княжна бессильно опустилась в кресло подле отца и заплакала. Она видела теперь брата в ту минуту, как он прощался с ней и с Лизой, с своим нежным и вместе высокомерным видом. Она видела его в ту минуту, как он нежно и насмешливо надевал образок на себя. «Верил ли он? Раскаялся ли он в своем неверии? Там ли он теперь? Там ли, в обители вечного спокойствия и блаженства?» думала она.
– Mon pere, [Отец,] скажите мне, как это было? – спросила она сквозь слезы.
– Иди, иди, убит в сражении, в котором повели убивать русских лучших людей и русскую славу. Идите, княжна Марья. Иди и скажи Лизе. Я приду.
Когда княжна Марья вернулась от отца, маленькая княгиня сидела за работой, и с тем особенным выражением внутреннего и счастливо спокойного взгляда, свойственного только беременным женщинам, посмотрела на княжну Марью. Видно было, что глаза ее не видали княжну Марью, а смотрели вглубь – в себя – во что то счастливое и таинственное, совершающееся в ней.
– Marie, – сказала она, отстраняясь от пялец и переваливаясь назад, – дай сюда твою руку. – Она взяла руку княжны и наложила ее себе на живот.
Глаза ее улыбались ожидая, губка с усиками поднялась, и детски счастливо осталась поднятой.
Княжна Марья стала на колени перед ней, и спрятала лицо в складках платья невестки.
– Вот, вот – слышишь? Мне так странно. И знаешь, Мари, я очень буду любить его, – сказала Лиза, блестящими, счастливыми глазами глядя на золовку. Княжна Марья не могла поднять головы: она плакала.
– Что с тобой, Маша?
– Ничего… так мне грустно стало… грустно об Андрее, – сказала она, отирая слезы о колени невестки. Несколько раз, в продолжение утра, княжна Марья начинала приготавливать невестку, и всякий раз начинала плакать. Слезы эти, которых причину не понимала маленькая княгиня, встревожили ее, как ни мало она была наблюдательна. Она ничего не говорила, но беспокойно оглядывалась, отыскивая чего то. Перед обедом в ее комнату вошел старый князь, которого она всегда боялась, теперь с особенно неспокойным, злым лицом и, ни слова не сказав, вышел. Она посмотрела на княжну Марью, потом задумалась с тем выражением глаз устремленного внутрь себя внимания, которое бывает у беременных женщин, и вдруг заплакала.
– Получили от Андрея что нибудь? – сказала она.
– Нет, ты знаешь, что еще не могло притти известие, но mon реrе беспокоится, и мне страшно.
– Так ничего?
– Ничего, – сказала княжна Марья, лучистыми глазами твердо глядя на невестку. Она решилась не говорить ей и уговорила отца скрыть получение страшного известия от невестки до ее разрешения, которое должно было быть на днях. Княжна Марья и старый князь, каждый по своему, носили и скрывали свое горе. Старый князь не хотел надеяться: он решил, что князь Андрей убит, и не смотря на то, что он послал чиновника в Австрию розыскивать след сына, он заказал ему в Москве памятник, который намерен был поставить в своем саду, и всем говорил, что сын его убит. Он старался не изменяя вести прежний образ жизни, но силы изменяли ему: он меньше ходил, меньше ел, меньше спал, и с каждым днем делался слабее. Княжна Марья надеялась. Она молилась за брата, как за живого и каждую минуту ждала известия о его возвращении.


– Ma bonne amie, [Мой добрый друг,] – сказала маленькая княгиня утром 19 го марта после завтрака, и губка ее с усиками поднялась по старой привычке; но как и во всех не только улыбках, но звуках речей, даже походках в этом доме со дня получения страшного известия была печаль, то и теперь улыбка маленькой княгини, поддавшейся общему настроению, хотя и не знавшей его причины, – была такая, что она еще более напоминала об общей печали.
– Ma bonne amie, je crains que le fruschtique (comme dit Фока – повар) de ce matin ne m'aie pas fait du mal. [Дружочек, боюсь, чтоб от нынешнего фриштика (как называет его повар Фока) мне не было дурно.]
– А что с тобой, моя душа? Ты бледна. Ах, ты очень бледна, – испуганно сказала княжна Марья, своими тяжелыми, мягкими шагами подбегая к невестке.
– Ваше сиятельство, не послать ли за Марьей Богдановной? – сказала одна из бывших тут горничных. (Марья Богдановна была акушерка из уездного города, жившая в Лысых Горах уже другую неделю.)
– И в самом деле, – подхватила княжна Марья, – может быть, точно. Я пойду. Courage, mon ange! [Не бойся, мой ангел.] Она поцеловала Лизу и хотела выйти из комнаты.
– Ах, нет, нет! – И кроме бледности, на лице маленькой княгини выразился детский страх неотвратимого физического страдания.
– Non, c'est l'estomac… dites que c'est l'estomac, dites, Marie, dites…, [Нет это желудок… скажи, Маша, что это желудок…] – и княгиня заплакала детски страдальчески, капризно и даже несколько притворно, ломая свои маленькие ручки. Княжна выбежала из комнаты за Марьей Богдановной.
– Mon Dieu! Mon Dieu! [Боже мой! Боже мой!] Oh! – слышала она сзади себя.
Потирая полные, небольшие, белые руки, ей навстречу, с значительно спокойным лицом, уже шла акушерка.
– Марья Богдановна! Кажется началось, – сказала княжна Марья, испуганно раскрытыми глазами глядя на бабушку.
– Ну и слава Богу, княжна, – не прибавляя шага, сказала Марья Богдановна. – Вам девицам про это знать не следует.
– Но как же из Москвы доктор еще не приехал? – сказала княжна. (По желанию Лизы и князя Андрея к сроку было послано в Москву за акушером, и его ждали каждую минуту.)
– Ничего, княжна, не беспокойтесь, – сказала Марья Богдановна, – и без доктора всё хорошо будет.
Через пять минут княжна из своей комнаты услыхала, что несут что то тяжелое. Она выглянула – официанты несли для чего то в спальню кожаный диван, стоявший в кабинете князя Андрея. На лицах несших людей было что то торжественное и тихое.
Княжна Марья сидела одна в своей комнате, прислушиваясь к звукам дома, изредка отворяя дверь, когда проходили мимо, и приглядываясь к тому, что происходило в коридоре. Несколько женщин тихими шагами проходили туда и оттуда, оглядывались на княжну и отворачивались от нее. Она не смела спрашивать, затворяла дверь, возвращалась к себе, и то садилась в свое кресло, то бралась за молитвенник, то становилась на колена пред киотом. К несчастию и удивлению своему, она чувствовала, что молитва не утишала ее волнения. Вдруг дверь ее комнаты тихо отворилась и на пороге ее показалась повязанная платком ее старая няня Прасковья Савишна, почти никогда, вследствие запрещения князя,не входившая к ней в комнату.
– С тобой, Машенька, пришла посидеть, – сказала няня, – да вот княжовы свечи венчальные перед угодником зажечь принесла, мой ангел, – сказала она вздохнув.
– Ах как я рада, няня.
– Бог милостив, голубка. – Няня зажгла перед киотом обвитые золотом свечи и с чулком села у двери. Княжна Марья взяла книгу и стала читать. Только когда слышались шаги или голоса, княжна испуганно, вопросительно, а няня успокоительно смотрели друг на друга. Во всех концах дома было разлито и владело всеми то же чувство, которое испытывала княжна Марья, сидя в своей комнате. По поверью, что чем меньше людей знает о страданиях родильницы, тем меньше она страдает, все старались притвориться незнающими; никто не говорил об этом, но во всех людях, кроме обычной степенности и почтительности хороших манер, царствовавших в доме князя, видна была одна какая то общая забота, смягченность сердца и сознание чего то великого, непостижимого, совершающегося в эту минуту.