Первичный ключ

В Конструкторе можно задать первичный ключ (primary key) таблицы, представляющий собой поле (или комбинацию полей), уникальное для каждой записи. У всех таблиц должен быть первичный ключ. Для того чтобы понять важность роли первичного ключа, нужно знать немного больше о принципах работы БД.

Как Access предотвращает дублирование записей}

 

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

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

В таблице Employees (сотрудники) номер социального обеспечения (Social Security number) мог бы служить первичным ключом. Этот метод хорошо работает, поскольку, когда вы вставляете новую запись, Access может проверить наличие дублирования, пробежав список этих номеров, что гораздо быстрее, чем просмотр целой таблицы.

 

 

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

К сожалению, как раз так и не следует делать — в конце концов, есть масса адресных книг с двумя Шонами- Смитами (Sean Smith).

Лучше всего вставить новую порцию данных. Вы можете пометить каждого человека в вашем списке контактов с помощью уникального ID-номера. Самое лучшее, что вы можете сделать, — дать возможность программе Access создать такой номер для вас (и быть уверенным в том, что ни у каких двух людей из списка не будет одинаковых номеров) и больше не думать об этом. В этом случае, если у вас есть два Шона Смита, у каждого из них будет свой ID. И даже если Феррис Вил (чертово колесо) Симпсон решит сменить имя, ID останется прежним.

Именно так действует программа Access, когда вы создаете таблицу в Режиме таблицы. Рассмотрим таблицу Dolls, созданную в главе 1. В ней есть поле, названное Код (ID) и автоматически заполняемое Access. Вы не можете вставить в таблицу значение поля Код или изменить значение в имеющейся записи. Программа Access полностью контролирует это поле, гарантируя уникальный номер для каждой куклы-болванчика. Такой подход в большинстве

 

случаев — как раз то, что вам нужно, поэтому не пытайтесь изменить его или удалить поле Код.

Но есть одно исключение. Если вы создаете таблицу в Конструкторе, выбрав на ленте Создание > Таблицы >Конструктор таблиц (Create > Tables > Table Design), Access считает, что вы знаете, что делаете, и не создает для вас поле Код. Вы должны вставить поле Код (или что-то подобное).

 

 

Создание поля для вашего собственного первичного ключа

Если в вашей БД нет поля Код (возможно, вы создали ее, выбрав Создание > Таблицы > Конструктор таблиц), ваша задача — создать его и установить первичный ключ. Вот как это делается.

1. Создайте новое поле, вставив его имя в столбец Имя поля (Field Name).

Для автоматической генерации значений лучше всего подходит имя Код (ID). Некоторые пользователи предпочитают более информативное имя (например, BobbleheadID, CustomerlD и т. д.), но это необязательно.

2. В столбце Тип данных (Data Type) выберите тип данных Счетчик (Currency).

Выбрав этот тип данных, вы можете быть уверены в том, что программа Access создаст уникальное значение ID для каждой вставляемой вами новой записи. Если этот подход вас не устраивает, можно выбрать что-то другое (например, текстовый тип данных или числовой). В этом случае вы отвечаете за ввод собственного уникального значения для каждой записи, что потребует больше работы, чем кажется на первый взгляд.

3. Щелкните поле правой кнопкой мыши и выберите команду Ключевое поле (Primary Key).

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

 

 

Примечание

Если вы хотите включить в первичный ключ несколько полей, вам придется использовать несколько иной подход. Сначала щелкните кнопкой мыши отступ на странице рядом с именем поля, а затем переместите мышь с нажатой кнопкой, чтобы выделить несколько полей. Затем нажмите и удерживайте нажатой клавишу <Shift> и щелкните правой кнопкой выделенные поля. Теперь можно выбрать команду Ключевое поле (Primary Key).

 

 

Почему так важна уникальность

 

Вы не поймете до конца важность наличия уникального ID-номера у каждой записи, пока не поработаете с более сложными примерами последующих глав. Но одну из причин можно назвать — другие программы, использующие вашу БД, должны однозначно идентифицировать запись.

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

 

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

 

 

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100