предварительный
Определение нормальной формы (которая из презентации «дальнейшей нормализации базы данных Relational Model» в 1971 известен как первой нормальной форме ) и по определению реляционной парадигмы сама по себе была опубликована в 1970 году в научной работе , что при условии сильной основа для практики администрирования баз данных, то есть, «Реляционная модель данных для больших Shared банков данных» (RM для краткости) , созданный доктором Е. Ф. Кодда , который является получателем премии Тьюринга и полномочия в отношении реляционной базы.
Да, по поводу текста доктора Кодда имеется множество объяснений, толкований, изложения, отклонений и мнений, но я лично предпочитаю придерживаться первоисточника и настоятельно рекомендую вам проанализировать его самостоятельно, чтобы вы могли сделать свои собственные выводы.
Я, конечно, не понимаю РМ во всей его полноте, но то, что я понимаю, позволяет мне оценить его превосходство, видение, намерение и масштаб, и хотя спустя десятилетия можно заметить, что у него есть несколько незначительных неточностей, они не уменьшают, в любом случае, его гениальность и элегантность. В своей области РМ уникальным образом выдержала испытание временем и не имеет себе равных.
Подчеркивание вышеупомянутых неточностей было бы - использование благотворительного термина - несправедливым, потому что, видя его со значительного расстояния, этот оригинальный материал требовал нескольких доработок и расширений, да, но основная часть работы была непоколебима от очень концепция (и, действительно, доктор Кодд сделал большинство - если не все - таких усовершенствований и дополнений сам).
Я продолжаю перечитывать РМ постоянно, чтобы усилить мое понимание этого исключительного источника знаний (и мое уважение к нему растет с каждым перечитыванием); цель - встать на плечи гигантов.
Отношения и таблицы
Важно отметить, что, поскольку отношения являются абстрактными ресурсами, д-р Кодд предусмотрел полезность представления их в табличной форме (он первоначально использовал термин «представление массива», но впоследствии использовал «таблица» или «r-таблица»), так что пользователи, разработчики и администраторы реляционной базы данных (RDB) могут подходить к ним более знакомым или конкретным образом. Следовательно, в контексте реализации RDB допустимо использовать таблицу как сокращение для отношенияДо тех пор, пока указанная таблица обозначает фактическое отношение. Эта особенность - хотя и очевидна - довольно важна, потому что перед оценкой того, представляет ли таблица отношение, которое соответствует первой нормальной форме (1NF), она должна точно представлять отношение.
RM естественно содержит качества, которые должна иметь таблица, чтобы определить, изображает ли она на самом деле отношение, но я предложу здесь неформальное и простенькое толкование о них (еще одно, да!):
- У него должно быть имя (каждое конкретное отношение в структуре базы данных должно отличаться от остальных).
- Каждый из его рядов должен изображать ровно один кортеж соответствующего отношения.
- Порядок ее строк не имеет значения вообще.
- Каждый из его столбцов должен иметь имя, которое обозначает значение ровно одного домена соответствующего отношения, и упомянутое имя должно отличаться от имен остальных столбцов таблицы (столбец должен иметь уникальное различие и должен содержать особое значение и, да, роль, которую играют разработчик базы данных и бизнес-эксперты, чтобы определить каждую значимую область с точностью, имеет первостепенное значение)
- Порядок его столбцов не имеет никакого значения.
- Все его строки должны иметь одинаковое количество столбцов.
- Он должен иметь как минимум один столбец или одну комбинацию столбцов, которые однозначно идентифицируют каждый из кортежей, изображенных через строки; таким образом, все строки должны быть разными (да, это подчеркивает важность того, чтобы был объявлен хотя бы один KEY, и когда есть два или более KEY, один должен быть определен как PRIMARY на основании прагматических соображений, тогда как остальные могут быть считается альтернативным, но да, перед принятием решения каждый из КЛЮЧЕЙ был «кандидатом» на определение ПЕРВИЧНОГО).
Наличие таблицы, которая на самом деле представляет отношение, является критически важным, поскольку, когда она подвергается манипуляциям с операциями реляционного вида, в результате получается таблица, которая представляет отношение. Таким образом, поведение указанной таблицы предсказуемо .
Атомные домены (столбцы)
В первых разделах РМ доктор Кодд представляет несколько примеров отношений, чтобы представить некоторые понятия; Итак, чтобы понять значение атомного домена , давайте начнем со следующей выдержки из RM, в которой подробно описаны некоторые важные моменты:
До сих пор мы обсуждали примеры отношений, которые определены на простых доменах - доменах, элементы которых имеют атомарные (неразложимые) значения. Неатомарные значения могут обсуждаться в рамках отношений. Таким образом, некоторые домены могут иметь отношения как элементы. Эти отношения, в свою очередь, могут быть определены в непростых областях и т. Д.
Таким образом, можно сказать, что каждое из вышеупомянутых пояснительных отношений соответствует одному из двух видов, например, вида A или B :
Вид A группирует только отношения (таблицы), структурированные с доменами (столбцами), которые содержат исключительно простые значения в каждом из своих кортежей (строк), т. Е. Такие домены (столбцы) не содержат отношений (таблиц) в качестве значений, которые в этот контекст означает, что значения являются атомарными, потому что они не могут быть последовательно разложены в новые отношения (таблицы). Следовательно, отношения этого класса являются теми, которые нормированы , т.е. они соответствуют 1NF, их форма желательна.
Вид B исключительно интегрируется отношениями (таблицами), которые имеют один или несколько доменов (столбцов), которые содержат отношения как значения в каждом соответствующем кортеже (строке), и это означает, что указанные значения неатомичны, так как они могут быть впоследствии разбиты на новые отношения (таблицы), т. е. они разложимы . Таким образом, отношения такого рода являются ненормализованными, то есть они нарушают 1НФ, они находятся в нежелательной форме.
нормализация
Доктор Кодд вводит раздел о нормализации в РМ следующим параграфом:
Отношение, домены которого все простые, может быть представлено в хранилище двумерным однородным по столбцам массивом типа, который обсуждался выше. Некоторая более сложная структура данных необходима для связи с одним или несколькими непростыми доменами. По этой причине (и другим, которые будут приведены ниже) возможность исключения непростых доменов, кажется, заслуживает изучения! На самом деле существует очень простая процедура исключения, которую мы будем называть нормализацией.
Затем он продолжает показывать:
Группа отношений, где один ненормализован (у него есть области, которые содержат отношения как значения, т. Е. Они неатомичны; т. Е. Они не просты)
Группа отношений, которые являются нормализованными (то есть те, которые были разложены; то есть те, у которых домены, имеющие отношение к отношениям, были разбиты на простые, что означает, что они являются атомарными)
А затем он описывает процедуру получения нормализованных отношений из ненормализованных.
В этом отношении отношения, которые он использовал, чтобы проиллюстрировать упражнение по нормализации, и само описание упражнения вполне ясны, и я рекомендую еще раз проанализировать их самостоятельно (и я также надеюсь, что это побудит некоторых читателей заняться текстом).
Успешно он указывает:
Возможны дальнейшие операции нормализующего вида. Они не обсуждаются в этой статье.
И упомянутые операции, то есть вторая и третья нормальная форма (2NF и 3NF), на самом деле подробно описаны в «Дальнейшей нормализации реляционной модели базы данных» и, как упоминалось выше, после представления (и последующей печати и публикации) этого документа. , то оригинальная нормальная форма стала известна как первой нормальной формой.
Как заметил практик, наличие ненормализованных отношений (таблиц) вносит (почти всегда ненужный) свертку в реализации RDB.
Отношение, удовлетворяющее 1NF, облегчает определение ограничений и операций с данными, которые могут быть реализованы с помощью подъязыка данных, который является менее сложным, чем тот, который требуется для ненормализованных отношений (таблиц), как указывает д-р Кодд в следующих строках:
Принятие реляционной модели данных, как описано выше, позволяет разработать универсальный подязык данных на основе прикладного исчисления предикатов. Исчисление предикатов первого порядка достаточно, если набор отношений находится в нормальной форме. Такой язык обеспечил бы критерий языковой мощи для всех других предлагаемых языков данных и сам был бы сильным кандидатом для встраивания (с соответствующей синтаксической модификацией) в различные языки хоста (программирование, командный или проблемно-ориентированный). [...]
[...]
Универсальность подъязыка данных заключается в его описательной способности (а не в вычислительной способности).
Недоумение
С моей точки зрения, возникло недоумение из-за (а) вышеупомянутого избытка толкований, объяснений и т. Д. Относительно 1НФ и самого РМ, а также из-за (б) дальнейших попыток переопределить 1НФ того состояния, которое имеет отношения с доменами, которые содержат значения, которые, в свою очередь, являются отношениями, соответствующими 1NF, если они представляют собой одно отдельное значение для каждого соответствующего кортежа.
Мой взгляд на другие ваши очки
Между строками не должно быть никаких отношений, кроме того, что они соответствуют тем же заголовкам.
Я не уверен, правильно ли я понимаю намерение этого утверждения, но, помимо соответствия тем же заголовкам, должна быть связь между (кортежами) строк отношения (таблицы), поскольку каждая из них должна быть утверждением о конкретное вхождение конкретного типа объекта (определенного в контексте бизнес-контекста интереса), которое должно представлять отношение (таблица).
Также не должно быть связи между столбцами, но я считаю, что это предмет высших нормальных форм.
Я не знаю, правильно ли я интерпретирую значение этого утверждения, но на самом деле, и в соответствии с моим ответом на предыдущий аспект, между доменами (столбцами) отношения (таблицы) также должна быть связь Именно поэтому это отношение (существенная структура реляционной модели и конкретной реализации RDB).
В качестве примера приведем гипотетическое соотношение (таблица)
Salary (PersonNumber, EffectiveDate, Amount)
кортеж (ряд)
передал бы смысл
The Salary payed to the Person identified by PersonNumber x, on EffectiveDate y corresponds to the Amount of z
Следовательно, каждый кортеж (строка) Salary
отношения (таблицы) должен вписываться в структуру утверждения, показанного выше, и разница будет заключаться в замене значений соответствующего домена (столбца), но должна существовать связь между (a) все Salary
домены (столбцы), а также между (b) все их соответствующие значения по отношению к каждому кортежу (строке); такие отношения это обязательно.
Более высокие нормальные формы (2NF и 3NF) полезны для избавления от функциональных зависимостей между доменами (столбцами) отношения (таблицы), они помогают избежать нежелательных соединений между доменами (столбцами), поскольку указанные нежелательные соединения позволяют вводить аномалии обновления , И 2NF, и 3NF полезны для проверки правильности структуры отношений (таблиц) в определенной реализации RDB.