РИС. 3.11. Создание идентификационного поля в диалоговом окне конструктора таблиц Design Table программы SQL Server Enterprise Manager

<p>Использование других методов для генерации первичных ключей</p>

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

• Первый вариант — генерация случайного значения в поле первичного ключа для каждой создаваемой записи. Этот способ используется таблицами, содержащими поля AutoNumber, которые преобразованы при переносе данных из Microsoft Access в SQL Server. Он также используется при репликации баз данных Access для устранения коллизий между записями, которые вводятся неподключенными пользователями.

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

• Третий вариант — создание первичного ключа на основе данных. Например, пер вичный ключ для записи клиента Vito Polito может иметь вид VP001. Для другого клиента с аналогичными инициалами ключ будет иметь вид VP002 и т.д. К преимуществам можно отнести ассоциацию ключа с данными, а к недостаткам – необходимость создания дополнительного кода в виде хранимых процедур.

<p>Создание поля с первичным ключом</p>

Созданное идентификационное поле можно использовать в качестве первичного ключа. Для создания первичного ключа таблицы с помощью программы SQL Server Enterprise Manager выполните приведенные ниже действия.

РИС. 3.12. Выбор поля для создания первичного ключа в программе SQL Server Enterprise Manager

1. Установите курсор мыши в том поле, которое собираетесь использовать в качестве первичного ключа.

2. Щелкните на кнопке Set primary key (Установить первичный ключ) с изображением ключа. После этого в определении таблицы появится первичный ключ, а диалоговое окно конструктора таблицы Design Table будет иметь такой вид, как на рис. 3.12. Левый столбец в перечне полей в верхней части окна содержит обозначения (в виде изображения ключа) полей, которые образуют первичный ключ таблицы. Учтите, что любое поле может быть первичным ключом, а не только идентификационным полем.

НА ЗАМЕТКУ

Для создания первичного ключа таблицы можно использовать несколько полей, и такой ключ называется конкатенированным ключом (concatenated key). Для него можно использовать, например, имя и фамилию клиента. Это позволяет предотвратить ввод записи-дубликата для клиента Amy Rosenthal. Чтобы выбрать несколько полей для первичного поля, щелкните на них, удерживая нажатой клавишу .

<p>Использование программы SQL Query Analyzer для доступа к базе данных</p>

РИС. 3.13. Основное окно программы SQL Query Analyzer

Для выполнения команд SQL Server можно использовать программу SQL Query Analyzer (раньше она называлась ISQLW). С помощью этой программы можно не только осуществлять SQL-запросы, но также обновлять записи, удалять их и выполнять другие действия над ними. Эта программа также позволяет проводить очень сложные операции с базами данных и сервером базы данных, например создавать базы данных, представления и хранимые процедуры.

Перейти на страницу:

Похожие книги