Нормальная форма доменного ключа

Нормальная форма доменного ключа ( DK/NF или DKNF ) — это нормальная форма , используемая при нормализации базы данных , которая требует, чтобы база данных не содержала никаких ограничений, кроме ограничений домена и ограничений ключа.

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

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

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

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

Третья нормальная форма , нормальная форма Бойса–Кодда , четвертая нормальная форма и пятая нормальная форма являются частными случаями нормальной формы домена/ключа. Все они имеют либо функциональные , либо многозначные , либо зависимости соединения , которые могут быть преобразованы в суперключи . Домены в этих нормальных формах были неограниченными, поэтому все ограничения домена удовлетворены. Однако преобразование более высокой нормальной формы в нормальную форму домена/ключа не всегда является преобразованием, сохраняющим зависимость, и поэтому не всегда возможно.

Пример

Нарушение DKNF имеет место в следующей таблице:

Богатый человек
Богатый человекТип богатого человекаЧистая стоимость в долларах
Стивмиллионер124,543,621
РодерикМиллиардер6,553,228,893
КатринаМиллиардер8,829,462,998
Гэримиллионер495,565,211

(Предположим, что домен для «Богатого человека» состоит из имен всех богатых людей в предопределенной выборке богатых людей; домен для типа богатого человека состоит из значений «Миллионер» и «Миллиардер»; а домен для чистого капитала в долларах состоит из всех целых чисел, больших или равных 1 000 000.)

Существует ограничение, связывающее тип богатого человека с чистым капиталом в долларах, хотя мы не можем вывести одно из другого. Ограничение диктует, что миллионер будет иметь чистый капитал от 1 000 000 до 999 999 999 включительно, в то время как миллиардер будет иметь чистый капитал 1 000 000 000 или выше. Это ограничение не является ни ограничением домена, ни ограничением ключа; поэтому мы не можем полагаться на ограничения домена и ограничения ключа, чтобы гарантировать, что несогласованная комбинация типа богатого человека / чистого капитала в долларах не попадет в базу данных.

Нарушение DKNF можно устранить, удалив столбец Wealthy Person Type. Статус богатого человека как миллионера или миллиардера определяется его чистым капиталом в долларах, как определено в таблице Wealthiness Status, поэтому никакая полезная информация не теряется.

Богатый человек
Богатый человекЧистая стоимость в долларах
Стив124,543,621
Родерик6,553,228,893
Катрина8,829,462,998
Гэри495,565,211
Статус благосостояния
СтатусМинимумМаксимум
миллионер1,000,000999,999,999
Миллиардер1,000,000,000999,999,999,999

Внешние ключи

Отношения, которые невозможно выразить как внешние ключи, являются очевидными нарушениями DKNF. Например, атрибут "Parent ID", который указывает на одну из нескольких ссылочных таблиц, в зависимости от второго атрибута "Parent Type", нарушает DKNF.

Смотрите также

Ссылки

  • Фагин, Рональд (1981). «Нормальная форма для реляционных баз данных, основанная на доменах и ключах» (PDF) . ACM Transactions on Database Systems . 6 (3): 387– 415. CiteSeerX  10.1.1.73.373 . doi :10.1145/319587.319592. S2CID  14664427.
  • Основы нормализации баз данных. Архивировано 05.02.2007 на Wayback Machine Майком Чапплом (About.com)
  • Введение в нормализацию баз данных Майка Хиллера.
  • Нормализация по ИТС, Техасский университет.
  • Учебник по первым 3 нормальным формам от Фреда Коулсона
  • Описание основ нормализации базы данных от Microsoft
Retrieved from "https://en.wikipedia.org/w/index.php?title=Domain-key_normal_form&oldid=1215870167"