Введение

Свойство отношения в реляционной базе данных. Первая нормальная форма (1NF) – это свойство отношения в реляционной базе данных. Отношение находится в первой нормальной форме тогда и только тогда, когда ни одна область значений атрибута не содержит другие отношения в качестве элементов. Или, проще говоря, ни один столбец таблицы не может содержать таблицы в качестве значений. Нормализация базы данных – это процесс представления базы данных в виде отношений, соответствующих стандартным нормальным формам, при этом первая нормальная форма является минимальным требованием. SQL 92 не поддерживает создание или использование столбцов, содержащих табличные значения, что означает, что при использовании только "традиционных возможностей реляционной базы данных" (исключая расширения, даже если они были стандартизированы позднее) большинство реляционных баз данных автоматически будут соответствовать первой нормальной форме. Системы баз данных, не требующие соответствия первой нормальной форме, часто называют NoSQL-системами. Более новые стандарты SQL, такие как SQL:1999, начали допускать так называемые неатомные типы, включающие составные типы. Еще более новые версии, такие как SQL:2016, допускают использование JSON.

Обзор

В иерархической базе данных запись может содержать наборы дочерних записей — известные как повторяющиеся группы или атрибуты, имеющие значение в виде таблицы. Если такая модель данных представлена в виде отношений, повторяющаяся группа будет атрибутом, значением которого является само отношение. Первая нормальная форма устраняет вложенные отношения, преобразуя их в отдельные отношения "верхнего уровня", связанные с родительской записью через внешние ключи, а не через прямое включение. Цель этой нормализации — повышение гибкости и независимости данных, а также упрощение языка запросов. Она также открывает возможности для дальнейшей нормализации, которая устраняет избыточность и аномалии. Большинство реляционных систем управления базами данных не поддерживают вложенные записи, поэтому таблицы по умолчанию соответствуют первой нормальной форме. В частности, SQL не предоставляет средств для создания или использования вложенных таблиц. Следовательно, нормализация до первой нормальной формы является необходимым шагом при переносе данных из иерархической базы данных в реляционную базу данных.

Недостатки и критические замечания

Производительность ухудшается для определенных операций. В иерархической модели вложенные записи физически хранятся после родительской, что означает, что целое поддерево можно получить за одну операцию чтения. В форме 1НФ для каждого типа записи потребуется операция соединения (join), что может быть дорогостоящим, особенно для сложных деревьев. По этой причине документоориентированные базы данных избегают 1НФ. Объектно-ориентированные языки представляют состояние во время выполнения в виде деревьев или ориентированных графов объектов, связанных указателями или ссылками. Это не соответствует реляционной базе данных в 1НФ, проблема, иногда называемая несоответствием объектно-реляционных моделей, которую библиотеки объектно-реляционного отображения (ORM) пытаются преодолеть. 1НФ часто интерпретируется как запрещающая использование сложных типов данных для значений. Однако это подлежит интерпретации, и К.Дж. Дейт утверждает, что значения могут быть произвольно сложными объектами.

История

Первая нормальная форма была введена в 1970 году Эдгаром Ф. Коддом в статье «Реляционная модель данных для больших общих баз данных», хотя изначально она называлась просто «нормальной формой». Она была переименована в «Первую нормальную форму» после появления дополнительных нормальных форм в статье «Дальнейшая нормализация реляционной модели» в 1971 году.

Примеры

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

Атомность

В определении 1НФ Эдгара Ф. Кодда упоминается понятие "атомности". Кодд утверждает, что "значения в областях, на которых определено каждое отношение, должны быть атомными относительно СУБД". Кодд определяет атомное значение как значение, которое "не может быть разложено на более мелкие части СУБД (за исключением определенных специальных функций)", что означает, что столбец не должен содержать несколько типов данных, и интерпретация одной части значения СУБД не должна зависеть от другой части того же столбца. Хью Дарвен и Крис Дейт предположили, что концепция Кодда "атомного значения" является неоднозначной, и эта неоднозначность привела к широкому непониманию того, как следует интерпретировать 1НФ. В частности, проблематичным является понятие "значения, которое нельзя разложить", поскольку оно, кажется, подразумевает, что лишь немногие, если вообще какие-либо, типы данных являются атомными: строка символов, по-видимому, не является атомной, поскольку РСУБД обычно предоставляет операторы для ее разложения на подстроки. Число с фиксированной точкой, по-видимому, не является атомным, поскольку РСУБД обычно предоставляет операторы для его разложения на целую и дробную части. ISBN, по-видимому, не является атомным, поскольку он включает в себя код языка и идентификатор издателя. Дейт предполагает, что "понятие атомности не имеет абсолютного значения": значение может считаться атомным для одних целей, но сборкой более простых элементов – для других. Если принять эту точку зрения, 1НФ нельзя определить, ссылаясь на атомность. В таблице 1НФ допустимы столбцы любого мыслимого типа данных (от строковых и числовых типов до типов массивов и таблиц), хотя это не всегда желательно; например, может быть предпочтительнее разделить столбец "Имя клиента" на два отдельных столбца: "Имя" и "Фамилия".