Иллюстрированный самоучитель по Microsoft Access 2003

Планирование базы данных

Правило 2

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

Растения Типы
Имя Тип
Латинское имя  
Заметки  
Фотография  

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

Правило 3

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

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

  • Для уникального определения каждой записи следует использовать хранящуюся в ней информацию. Одно или больше полей данных могут изначально быть уникальными для каждой записи. Такой тип первичного ключа называется натуральным.
  • Можно добавить поле типа данных с автоматической нумерацией. Использование этого типа данных позволяет Access автоматически вводить последовательное значение для каждой записи. Например, значение первой записи первичного ключа будет равно 1, второй – 2, третьей – 3 и т.д. Такой тип ключа считается искусственным.

На рис. 4.4 схематически показано различие между указанными типами ключей.

Иллюстрированный самоучитель по Microsoft Access 2003 › Планирование базы данных
Рис. 4.4. Натуральные и искусственные ключи

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

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

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

  • использовать автоматическую нумерацию в качестве искусственного ключа;
  • выбрать из данных одно поле;
  • выбрать из данных более чем одно поле.

Остановимся на последнем варианте. Допустим, тип растений все же был выбран в качестве первичного ключа таблицы. Как сделать его уникальным для каждой записи? Ключ может содержать тип или какой-то дополнительный компонент, например имя растения. Эта комбинация достаточно уникальна, хотя типы и имена могут повторяться. В случае необходимости для создания первичного ключа можно выбрать любое количество полей.

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

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.