Объясните, как я пять -> как первичный ключ удовлетворяет первой нормальной форме


Заранее благодарю вас за ваши знания. Я готовлюсь к экзамену Microsoft Technology, и один из практических вопросов:

Создание первичного ключа удовлетворяет первой нормальной форме. Правда или ложь?

Лично я думаю, что это ложь, потому что первая нормальная форма состоит в том, чтобы избавиться от повторяющихся групп. Но есть предложение в тексте (основы базы данных, экзамен 98-364 от Microsoft Press), которое говорит следующее:

" первая нормализованная форма (1NF) означает данные представлены в формате сущности, что в основном означает, что должны быть выполнены следующие три условия: * В таблице не должно быть повторяющихся записей. Как только вы определили первичный ключ для таблицы, вы выполнили первый критерий нормализованной формы."

Пожалуйста, помогите мне понять это, пожалуйста, объясните, как будто мне пять лет. Спасибо.
5 2

5 ответов:

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

Напр.

Record 1
---------
KEY = 1
Name = Fred Boggs
Age = 84


Record 2
--------
KEY = 2
Name = Fred Boggs
Age = 84

Эти 2 записи отличаются, потому что ключ поля отличается. Поэтому, хотя остальные данные одинаковы, они отвечают требованиям для 1NF.

Я не могу объяснить этот материал в пять лет. Я пытался. Но я, возможно, смогу пролить немного света на эту тему. Первое,что вам нужно знать, - это то, что на протяжении многих лет существовало несколько определений 1NF, и эти определения иногда конфликтуют друг с другом. Это вполне может быть источником вашего замешательства или, по крайней мере, некоторой его части.

Полезно знать, какую цель имел в виду Эд Кодд, когда впервые определил ее. Эд Кодд определил первую нормальную форму, которую он называется нормальная форма, еще в статье, которую он опубликовал в 1970 году. Его целью в этой статье было продемонстрировать, что база данных, построенная по реляционным линиям, будет обладать всей выразительной силой, которой обладают существующие базы данных. Существующие базы данных часто имеют дело с родителем, который владеет набором потомков. Например, если родительский элемент данных содержит данные о студенте, то каждый дочерний элемент может содержать данные об одном курсе, который изучает студент.

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

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

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

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

Но я еще не закончил. Вы не спрашивали об этом, но это было тысячу раз в переполнении стека, так что это стоит поместить сюда. Дизайнер может опровергнуть первоначальное намерение Эда Кодда, создав столбец, содержащий текст, который, в свою очередь, содержит значения, разделенные запятыми. В оригинальной формулировке Кодда список значений не является "простым".

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

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

Таким образом, вы должны научить новичков, почему ключевой доступ ко всем данным-это хорошая вещь, и это означает, что вы должны научить их, что такое 1NF на самом деле. И это может быть так же трудно, как учить пятилетнего ребенка. Новички, как правило, менее невежественны, чем пятилетние дети, но они, как правило, более упрямы.

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

Аналогично, в реляционной базе данных все атрибуты содержат идентифицируемые значения. по названию, а не по позиционному индексу и поэтому вопрос о "повторяющихся группах" не относится. Понятие "повторяющейся группы" существует в некоторых нереляционных системах, и именно это Кодд имел в виду, когда он первоначально определял 1NF.

Однако проблемы интерпретации 1NF возникают из-за того, что большинство современных СУБД не являются по-настоящему реляционными, хотя люди пытаются использовать их как реляционные системы. Поскольку СУБД SQL не являются реляционными, как мы должны интерпретировать реляционные понятия как 1NF в СУБД SQL? Суть 1NF состоит в том, что каждая таблица должна иметь ключ и что кортежи состоят из отдельных значений для каждого атрибута. Большинство систем на основе SQL не поддерживают концепцию " повторяющихся групп "(несколько значений в одной позиции атрибута), поэтому обычно можно с уверенностью сказать, что если таблица SQL имеет ключ и не допускает нулей в любой позиции атрибута, то она является" реляционной " и удовлетворяет духу 1NF.

Вы цитируете только фрагмент текста основы администрирования базы данных. Более полная цитата:

Первая нормализованная форма (INF) означает, что данные находятся в формате сущности, что в принципе означает, что должны быть выполнены следующие три условия:
* В таблице не должно быть повторяющихся записей. [...]
* Таблица также не должна иметь многозначных атрибутов, что означает, что вы не можете объединить в одном столбце несколько значений, которые являются считаются допустимыми для колонка. [...]
* Записи в столбце или атрибуте должны содержать одни и те же данные • тип.

(история термина " 1NF " полна путаницы, неясности и изменений. Но вот что говорится в этом тексте.)

Позвольте мне присоединиться к партии ;)

Чтобы вопрос "Является ли это отношение в 1NF" имел смысл, вам сначала нужно отношение. А чтобы ваш стол был родственником, вам нужен ключ. Таблица без ключей не является отношением.

Почему? Потому что отношение-это множество (кортежей / строк), и множество не может содержать один и тот же элемент более одного раза (иначе оно было бы многосетью), что обеспечивается ключом.

Как только у вас есть отношение с помощью ключа, вы можете увидеть, все ли ваши атрибуты являютсяатомарными , и если они есть, то у вас есть 1nf.

Итак, ответ...

Создание первичного ключа удовлетворяет первой нормальной форме. Правда или ложь?

... ложь. Вам нужен ключ, но вам также нужна атомарность.