Третья нормальная форма - Third normal form
Третья нормальная форма (3NF) это схема базы данных подход к дизайну для реляционные базы данных который использует нормализация принципы для уменьшения дублирования данных, избегайте аномалии данных, гарантировать ссылочная целостность, и упростить управление данными. Он был определен в 1971 году Эдгар Ф. Кодд, английский ученый-компьютерщик, который изобрел реляционная модель за база данных управление.
А отношение к базе данных (например, таблица базы данных ) считается отвечающим стандартам третьей нормальной формы, если все атрибуты (например, столбцы базы данных ) находятся функционально зависимый исключительно на первичный ключ. Кодд определил это как отношение в вторая нормальная форма где все непростые атрибуты зависят только от ключи-кандидаты и не имеют транзитивная зависимость на другом ключе.[1]
Гипотетическим примером неспособности соответствовать третьей нормальной форме может быть база данных больницы, имеющая таблицу пациентов, в которой есть столбец для номера телефона их врача. Номер телефона зависит от врача, а не от пациента, поэтому лучше хранить его в таблице врачей. Отрицательный результат такого дизайна состоит в том, что номер врача будет дублироваться в базе данных, если у них есть несколько пациентов, что увеличивает как вероятность ошибки ввода, так и стоимость и риск обновления этого номера в случае его изменения (по сравнению с третьим обычным номером). модель данных, совместимая с формой, которая хранит номер врача только один раз в таблице врача).
Позже Кодд понял, что 3NF не устранил все нежелательные аномалии данных, и в 1974 году разработал более сильную версию для устранения этой проблемы, известную как Нормальная форма Бойса – Кодда.
Определение третьей нормальной формы
Третья нормальная форма (3НФ) - это нормальная форма используется в нормализация базы данных. 3NF был первоначально определен Э. Ф. Кодд в 1971 г.[2]
Определение Кодда гласит, что таблица находится в 3НФ. если и только если выполняются оба следующих условия:
- В связь R (таблица) находится в вторая нормальная форма (2НФ).
- Каждый непростой атрибут R нетранзитивно зависит от каждого ключа R.
А неосновной атрибут R - это атрибут, не принадлежащий никакому кандидат ключ Р.[3] А транзитивная зависимость это функциональная зависимость в котором Икс → Z (Икс определяет Z) косвенно, в силу Икс → Y и Y → Z (где это не так, 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:
Турнир | Год | Победитель | Дата рождения победителя |
---|---|---|---|
Индиана Invitational | 1998 | Аль Фредриксон | 21 июля 1975 г. |
Кливленд Опен | 1999 | Боб Альбертсон | 28 сентября 1968 г. |
Де-Мойн Мастерс | 1999 | Аль Фредриксон | 21 июля 1975 г. |
Индиана Invitational | 1999 | Чип Мастерсон | 14 марта 1977 г. |
Поскольку каждая строка в таблице должна сообщать нам, кто выиграл конкретный турнир в конкретный год, составной ключ {Tournament, Year} представляет собой минимальный набор атрибутов, гарантирующих уникальную идентификацию строки. То есть {Tournament, Year} - это кандидатный ключ для таблицы.
Нарушение 3NF происходит из-за того, что непервичный атрибут (дата рождения победителя) транзитивно зависит от ключа кандидата {Tournament, Year} через непервичный атрибут Winner. Тот факт, что дата рождения Winner функционально зависит от Winner, делает таблицу уязвимой для логических несоответствий, поскольку ничто не мешает одному и тому же человеку отображаться с разными датами рождения в разных записях.
Чтобы выразить одни и те же факты, не нарушая 3НФ, необходимо разделить таблицу на две части:
|
|
В этих таблицах не могут возникнуть аномалии обновления, потому что, в отличие от ранее, Победитель теперь является кандидатом в ключ во второй таблице, что позволяет использовать только одно значение Даты рождения для каждого Победителя.
Вычисление
Отношение всегда можно разложить в третьей нормальной форме, то есть отношение 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]
Смотрите также
Рекомендации
- ^ Кодд, Э. Ф. "Дальнейшая нормализация реляционной модели базы данных", стр. 34.
- ^ Кодд, Э. Ф. "Дальнейшая нормализация реляционной модели базы данных". (Представлено на Courant Computer Science Symposia Series 6, «Системы баз данных», Нью-Йорк, 24–25 мая 1971 г.) Отчет об исследованиях IBM RJ909 (31 августа 1971 г.). Переиздано в Randall J. Rustin (ed.), Системы баз данных: Симпозиумы Куранта по информатике, серия 6. Прентис-Холл, 1972.
- ^ Кодд, стр. 43.
- ^ Кодд, стр. 45–46.
- ^ Заниоло, Карло. «Новая нормальная форма для проектирования схем реляционных баз данных». Транзакции ACM в системах баз данных 7 (3), сентябрь 1982 г.
- ^ Авраам Зильбершатц, Генри Ф. Корт, С. Сударшан, Концепции системы баз данных (5-е издание), стр. 276–277.
- ^ Кент, Уильям. «Простое руководство по пяти нормальным формам в теории реляционных баз данных», Коммуникации ACM 26 (2), февраль 1983 г., стр. 120–125.
- ^ Автор книги 1989 года по управлению базами данных благодарит одного из своих студентов за то, что он придумал приложение «Помоги мне, Кодд». Дир, Джордж. Управление базами данных (Скотт, Foresman, 1989), стр. 331.
- ^ Дата, К. Дж. Введение в системы баз данных (7-е изд.) (Addison Wesley, 2000), стр. 379.
- ^ Серж Абитебул, Ричард Б. Халл, Виктор Виану: Основы баз данных. Аддисон-Уэсли, 1995. http://webdam.inria.fr/Alice/ ISBN 0201537710. Теорема 11.2.14.
- ^ «Сравнение методов моделирования хранилищ данных - Ролант Вос». roelantvos.com. Получено 5 марта 2018.
- ^ "Уроки моделирования данных Hadoop | EMC". Блог InFocus | Услуги Dell EMC. 23 сентября 2014 г.. Получено 5 марта 2018.
дальнейшее чтение
- Дата, К. Дж. (1999), Введение в системы баз данных (8-е изд.). Эддисон-Уэсли Лонгман. ISBN 0-321-19784-4.
- Кент, В. (1983) Простое руководство по пяти нормальным формам в теории реляционных баз данных, Сообщения ACM, т. 26. С. 120–126.
внешняя ссылка
- Советы Литта: нормализация
- Основы нормализации базы данных Майк Чаппл (About.com)
- Введение в нормализацию базы данных Майк Хиллер.
- Учебник по первым трем нормальным формам Фред Коулсон
- Описание основ нормализации базы данных от Microsoft
- Третья нормальная форма с простыми примерами от exploreDatabase