Обычная форма доменного ключа - Domain-key normal form
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
Обычная форма доменного ключа (DK / NF) это нормальная форма используется в нормализация базы данных который требует, чтобы база данных не содержала ограничений, кроме ограничения домена и ключевые ограничения.
Ограничение домена определяет допустимые значения для данного атрибута, в то время как ограничение ключа определяет атрибуты, которые однозначно идентифицируют строку в данной таблице.
Нормальная форма домена / ключа достигается, когда каждое ограничение отношения является логическое следствие определения ключей и доменов, а также обеспечения соблюдения ограничений и условий ключей и доменов приводит к соблюдению всех ограничений. Таким образом, он избегает всех вневременных аномалий.
Причина использования нормальной формы домена / ключа состоит в том, чтобы избежать общих ограничений в базе данных, которые не являются четкими ограничениями домена или ключа. Большинство баз данных могут легко протестировать доменные и ключевые ограничения атрибутов. Однако общие ограничения обычно требуют специального программирования базы данных в форме хранимых процедур (часто триггерных), которые дороги в обслуживании и дорогостоящи для выполнения базы данных. Таким образом, общие ограничения делятся на ограничения домена и ключевые.
Гораздо проще создать базу данных в нормальной форме домена / ключа, чем преобразовать меньшие базы данных, которые могут содержать многочисленные аномалии. Однако успешное построение базы данных нормальной формы домена / ключа остается сложной задачей даже для опытных программистов баз данных. Таким образом, хотя нормальная форма домена / ключа устраняет проблемы, обнаруживаемые в большинстве баз данных, она, как правило, является наиболее затратной нормальной формой. Однако неспособность достичь нормальной формы домена / ключа может повлечь за собой долгосрочные скрытые затраты из-за аномалий, которые со временем появляются в базах данных, придерживающихся только более низких нормальных форм.
В третья нормальная форма, Нормальная форма Бойса – Кодда, четвертая нормальная форма и пятая нормальная форма являются частными случаями нормальной формы домена / ключа. Все они имеют функциональные, многозначные или объединяемые зависимости, которые можно преобразовать в суперключи. Области на этих нормальных формах были неограниченными, поэтому все ограничения области удовлетворены. Однако преобразование более высокой нормальной формы в нормальную форму домена / ключа не всегда является преобразованием, сохраняющим зависимость, и поэтому не всегда возможно.
Пример
Нарушение 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 может быть устранено путем изменения домена типа богатого человека, чтобы он состоял всего из двух значений: «злой» и «эксцентричный» (статус богатого человека как миллионера или миллиардера подразумевается в его чистой стоимости в долларах, поэтому нет полезная информация теряется).
Богатый человек | Тип состоятельного человека | Чистая стоимость в долларах |
---|---|---|
Стив | Эксцентричный | 124,543,621 |
Родерик | Зло | 6,553,228,893 |
Катрина | Эксцентричный | 8,829,462,998 |
Гэри | Зло | 495,565,211 |
Положение дел | Минимум | Максимум |
---|---|---|
Миллионер | 1,000,000 | 999,999,999 |
Миллиардер | 1,000,000,000 | 999,999,999,999 |
Внешние ключи
Отношения, которые невозможно выразить как внешние ключи являются очевидными нарушениями ДКНФ. Например, атрибут «Parent ID», указывающий на одну из нескольких ссылочных таблиц, в зависимости от второго атрибута «Parent Type», нарушает DKNF.
Смотрите также
Рекомендации
- Феджин, Рональд (1981). «Нормальная форма для реляционных баз данных, основанная на доменах и ключах» (PDF). Транзакции ACM в системах баз данных. 6 (3): 387–415. CiteSeerX 10.1.1.73.373. Дои:10.1145/319587.319592.
внешняя ссылка
- Основы нормализации базы данных Майк Чаппл (About.com)
- Введение в нормализацию базы данных Майк Хиллер.
- Нормализация ITS, Техасский университет.
- Учебник по первым трем нормальным формам Фред Коулсон
- Описание основ нормализации базы данных от Microsoft