Третья нормальная форма - Third normal form

Третья нормальная форма (3NF) это схема базы данных подход к дизайну для реляционные базы данных который использует нормализация принципы для уменьшения дублирования данных, избегайте аномалии данных, гарантировать ссылочная целостность, и упростить управление данными. Он был определен в 1971 году Эдгар Ф. Кодд, английский ученый-компьютерщик, который изобрел реляционная модель за база данных управление.

А отношение к базе данных (например, таблица базы данных ) считается отвечающим стандартам третьей нормальной формы, если все атрибуты (например, столбцы базы данных ) находятся функционально зависимый исключительно на первичный ключ. Кодд определил это как отношение в вторая нормальная форма где все непростые атрибуты зависят только от ключи-кандидаты и не имеют транзитивная зависимость на другом ключе.[1]

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

Позже Кодд понял, что 3NF не устранил все нежелательные аномалии данных, и в 1974 году разработал более сильную версию для устранения этой проблемы, известную как Нормальная форма Бойса – Кодда.

Определение третьей нормальной формы

Третья нормальная форма (3НФ) - это нормальная форма используется в нормализация базы данных. 3NF был первоначально определен Э. Ф. Кодд в 1971 г.[2]

Определение Кодда гласит, что таблица находится в 3НФ. если и только если выполняются оба следующих условия:

А неосновной атрибут R - это атрибут, не принадлежащий никакому кандидат ключ Р.[3] А транзитивная зависимость это функциональная зависимость в котором ИксZ (Икс определяет Z) косвенно, в силу ИксY и YZ (где это не так, YИкс).[4]

Определение 3NF, которое эквивалентно определению Кодда, но выражается по-другому, было дано Карло Заниоло в 1982 году. Это определение утверждает, что таблица находится в 3NF тогда и только тогда, когда для каждой из ее функциональных зависимостей. ИксА, выполняется хотя бы одно из следующих условий:[5][6][нужна цитата для проверки ]

  • Икс содержит А (то есть, А это подмножество Икс, смысл ИксА является тривиальной функциональной зависимостью),
  • Икс это суперключ,
  • каждый элемент А \ Икс, то установить разницу между A и X, является главный атрибут (т.е. каждый атрибут в А \ Икс содержится в некоторых кандидат ключ ).

Определение Заниоло дает четкое представление о разнице между 3NF и более строгим Нормальная форма Бойса – Кодда (BCNF). BCNF просто исключает третью альтернативу («Каждый элемент А \ Икс, установленная разница между А и Икс, является основным атрибутом. ").

"Ничего, кроме ключа"

Аппроксимация определения 3НФ, данного Коддом, параллельная традиционному приносить присягу Билл Кент дал правдивое свидетельство в суде: «[каждый] неключевой [атрибут] должен содержать факт о ключе, весь ключ и ничего, кроме ключа».[7] Распространенная вариация дополняет это определение присягой: "так помогите мне Codd ".[8]

Требование наличия «ключа» гарантирует, что таблица находится в 1NF; требование, чтобы неключевые атрибуты зависели от "всего ключа", обеспечивает 2NF; дальнейшее требование, чтобы неключевые атрибуты зависели от «ничего, кроме ключа», обеспечивает 3NF. Хотя эта фраза является полезной мнемоникой, тот факт, что в ней упоминается только один ключ, означает, что она определяет некоторые необходимые, но не достаточные условия для удовлетворения 2-й и 3-й нормальных форм. И 2НФ, и 3НФ в равной степени связаны с все возможные ключи таблицы, а не только один ключ.

Крис Дата называет резюме Кента «интуитивно привлекательной характеристикой» 3NF и отмечает, что с небольшой адаптацией оно может служить определением немного более сильного Нормальная форма Бойса – Кодда: «Каждый атрибут должен представлять факт о ключе, весь ключ и ничего, кроме ключа».[9] Версия определения 3NF слабее, чем вариант BCNF Дейта, поскольку первая касается только обеспечения того, чтобы неключевой атрибуты зависят от ключей. Основные атрибуты (которые являются ключами или их частями) вообще не должны быть функционально зависимыми; каждый из них представляет собой факт о ключе в смысле предоставления части или всего ключа. (Это правило применяется только к функционально зависимым атрибутам, так как его применение ко всем атрибутам неявно запрещает составные ключи-кандидаты, поскольку каждая часть любого такого ключа нарушает предложение «весь ключ».)

Пример таблицы 2NF, которая не удовлетворяет требованиям 3NF:

Победители турниров
ТурнирГодПобедительДата рождения победителя
Индиана Invitational1998Аль Фредриксон21 июля 1975 г.
Кливленд Опен1999Боб Альбертсон28 сентября 1968 г.
Де-Мойн Мастерс1999Аль Фредриксон21 июля 1975 г.
Индиана Invitational1999Чип Мастерсон14 марта 1977 г.

Поскольку каждая строка в таблице должна сообщать нам, кто выиграл конкретный турнир в конкретный год, составной ключ {Tournament, Year} представляет собой минимальный набор атрибутов, гарантирующих уникальную идентификацию строки. То есть {Tournament, Year} - это кандидатный ключ для таблицы.

Нарушение 3NF происходит из-за того, что непервичный атрибут (дата рождения победителя) транзитивно зависит от ключа кандидата {Tournament, Year} через непервичный атрибут Winner. Тот факт, что дата рождения Winner функционально зависит от Winner, делает таблицу уязвимой для логических несоответствий, поскольку ничто не мешает одному и тому же человеку отображаться с разными датами рождения в разных записях.

Чтобы выразить одни и те же факты, не нарушая 3НФ, необходимо разделить таблицу на две части:

Победители турниров
ТурнирГодПобедитель
Индиана Invitational1998Аль Фредриксон
Кливленд Опен1999Боб Альбертсон
Де-Мойн Мастерс1999Аль Фредриксон
Индиана Invitational1999Чип Мастерсон
Даты рождения победителя
ПобедительДата рождения
Чип Мастерсон14 марта 1977 г.
Аль Фредриксон21 июля 1975 г.
Боб Альбертсон28 сентября 1968 г.

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

Вычисление

Отношение всегда можно разложить в третьей нормальной форме, то есть отношение R переписывается как прогнозы р1, ..., Рп чей присоединиться равно исходному отношению. Далее, это разложение не теряет функциональная зависимость в том смысле, что каждая функциональная зависимость от R может быть выведена из функциональных зависимостей, которые держатся на проекциях R1, ..., Рп. Более того, такое разложение можно вычислить в полиномиальное время.[10]

Вывод условий Заниоло

Определение 3НФ, предложенное Карло Дзаниоло в 1982 году и данное выше, доказывается следующим образом: пусть X → A - нетривиальное FD (т.е. такой, где X не содержит A), и пусть A не является ключевым атрибутом. Также пусть Y - ключ R. Тогда Y → X.

Нормализация за пределами 3НФ

Большинство таблиц 3NF не содержат аномалий обновления, вставки и удаления. Некоторые типы таблиц 3NF, которые редко встречаются на практике, подвержены таким аномалиям; это таблицы, которые либо не соответствуют Нормальная форма Бойса – Кодда (BCNF) или, если они соответствуют BCNF, не соответствуют высшим нормальным формам 4NF или 5NF.

Рекомендации по использованию в средах отчетности

Хотя 3NF идеально подходит для машинной обработки, сегментированный характер модели данных может быть трудным для восприятия человеком-пользователем. Аналитика с помощью запросов, отчетов и информационных панелей часто упрощалась с помощью модели данных другого типа, которая обеспечивала предварительно рассчитанный анализ, такой как линии тренда, расчеты за период до даты (за месяц до даты, за квартал до даты, за год до даты). на сегодняшний день), кумулятивные расчеты, базовая статистика (среднее, стандартное отклонение, скользящие средние) и сравнения за предыдущий период (год назад, месяц назад, неделя назад), например размерное моделирование и помимо пространственного моделирования, сглаживание звезд с помощью Hadoop и наука о данных.[11][12]

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

Рекомендации

  1. ^ Кодд, Э. Ф. "Дальнейшая нормализация реляционной модели базы данных", стр. 34.
  2. ^ Кодд, Э. Ф. "Дальнейшая нормализация реляционной модели базы данных". (Представлено на Courant Computer Science Symposia Series 6, «Системы баз данных», Нью-Йорк, 24–25 мая 1971 г.) Отчет об исследованиях IBM RJ909 (31 августа 1971 г.). Переиздано в Randall J. Rustin (ed.), Системы баз данных: Симпозиумы Куранта по информатике, серия 6. Прентис-Холл, 1972.
  3. ^ Кодд, стр. 43.
  4. ^ Кодд, стр. 45–46.
  5. ^ Заниоло, Карло. «Новая нормальная форма для проектирования схем реляционных баз данных». Транзакции ACM в системах баз данных 7 (3), сентябрь 1982 г.
  6. ^ Авраам Зильбершатц, Генри Ф. Корт, С. Сударшан, Концепции системы баз данных (5-е издание), стр. 276–277.
  7. ^ Кент, Уильям. «Простое руководство по пяти нормальным формам в теории реляционных баз данных», Коммуникации ACM 26 (2), февраль 1983 г., стр. 120–125.
  8. ^ Автор книги 1989 года по управлению базами данных благодарит одного из своих студентов за то, что он придумал приложение «Помоги мне, Кодд». Дир, Джордж. Управление базами данных (Скотт, Foresman, 1989), стр. 331.
  9. ^ Дата, К. Дж. Введение в системы баз данных (7-е изд.) (Addison Wesley, 2000), стр. 379.
  10. ^ Серж Абитебул, Ричард Б. Халл, Виктор Виану: Основы баз данных. Аддисон-Уэсли, 1995. http://webdam.inria.fr/Alice/ ISBN  0201537710. Теорема 11.2.14.
  11. ^ «Сравнение методов моделирования хранилищ данных - Ролант Вос». roelantvos.com. Получено 5 марта 2018.
  12. ^ "Уроки моделирования данных Hadoop | EMC". Блог InFocus | Услуги Dell EMC. 23 сентября 2014 г.. Получено 5 марта 2018.

дальнейшее чтение

внешняя ссылка