Jump to content

Третья нормальная форма

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

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

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

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

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

[ редактировать ]

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

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

  • Отношение R (таблица) находится во второй нормальной форме (2НФ).
  • Ни один неосновной атрибут R не является транзитивно зависимым от первичного ключа.

Непростой атрибут R — это атрибут, который не принадлежит ни одному потенциальному ключу R. [3] Транзитивная зависимость — это функциональная зависимость , в которой X Z ( X определяет Z ) косвенно, в силу X Y и Y Z не так (где Y X ). [4]

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

Если перефразировать определение Заниоло более просто, отношение находится в 3НФ тогда и только тогда, когда для каждой нетривиальной функциональной зависимости X → Y X является суперключом или Y \ X состоит из простых атрибутов. Определение Заниоло дает четкое представление о разнице между 3NF и более строгой нормальной формой Бойса-Кодда (BCNF). BCNF просто исключает третью альтернативу («Каждый элемент Y \ X , установленная разница между Y и X , является простым атрибутом»).

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

[ редактировать ]

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

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

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

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

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

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

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

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

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

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

Вычисление

[ редактировать ]

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

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

Эквивалентность определений 3NF Кодда и Заниоло

[ редактировать ]

Можно показать, что определение 3NF, предложенное Карло Заниоло в 1982 году и данное выше, эквивалентно определению Кодда следующим образом: пусть X → A — нетривиальная FD (т. е. такая, где X не содержит A) и пусть A быть непростым атрибутом. Также пусть Y будет потенциальным ключом R. Тогда Y → X. Следовательно, A не является транзитивно зависимым от Y, если существует функциональная зависимость X → Y тогда и только тогда, когда X является суперключом R.

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

[ редактировать ]

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

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

[ редактировать ]

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

См. также

[ редактировать ]
  1. ^ Кодд, Э.Ф. «Дальнейшая нормализация реляционной модели базы данных», стр. 34.
  2. ^ Кодд, Э.Ф. «Дальнейшая нормализация реляционной модели базы данных». (Представлено на 6-м симпозиуме по компьютерным наукам Courant, «Системы баз данных», Нью-Йорк, 24–25 мая 1971 г.) Отчет об исследовании IBM RJ909 (31 августа 1971 г.). Переиздано в Рэндалле Дж. Растине (ред.), Системы баз данных: Courant Computer Science Symposium Series 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 года благодарит одного из своих учеников за то, что он придумал приложение «Так помоги мне, Кодд». Дир, Джордж. Управление базами данных (Скотт, Форесман, 1989), с. 331.
  9. ^ Дейт, CJ. Введение в системы баз данных (7-е изд.) (Аддисон Уэсли, 2000), стр. 10. 379.
  10. ^ Серж Абитебул , Ричард Б. Халл, Виктор Виану : Основы баз данных. Аддисон-Уэсли, 1995. http://webdam.inria.fr/Alice/ ISBN   0201537710 . Теорема 11.2.14.
  11. ^ Хаммо, Басам. «Разложение, 3NF, BCNF» (PDF) . Архивировано (PDF) из оригинала 15 марта 2023 г.
  12. ^ «Сравнение методов моделирования хранилищ данных - Роелант Вос» . Роэлант Вос . 12 февраля 2013 года . Проверено 5 марта 2018 г.
  13. ^ «Уроки моделирования данных Hadoop | EMC» . Блог InFocus | Услуги Dell EMC . 23 сентября 2014 года . Проверено 5 марта 2018 г.
  14. ^ Уикхэм, Хэдли (12 сентября 2014 г.). «Точные данные» . Журнал статистического программного обеспечения . 59 : 1–23. дои : 10.18637/jss.v059.i10 . ISSN   1548-7660 .

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

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: ee92386180d9211825735f59ea543543__1716729060
URL1:https://arc.ask3.ru/arc/aa/ee/43/ee92386180d9211825735f59ea543543.html
Заголовок, (Title) документа по адресу, URL1:
Third normal form - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)