Первинний ключ – це унікальне поле (або набір полів), який визначає рядки таблиці бази даних. Первинні ключі забезпечують унікальність даних шляхом створення унікального індексу в таблиці, в якій вони розміщені. Вторинні ключі – це поля таблиці, які відповідають первинним ключам інших таблиць. Співвідношення між первинними і вторинними ключами визначають область допустимих значень для вторинного ключа. Цілісність області значень зовнішнього ключа є одним із способів забезпечення цілісності зв’язків між відповідними наборами полів. При визначенні вторинних ключів індекси в таблиці не створюються.
В SQL Server первинні і вторинні ключі можна додати трьома способами: використовуючи SQL Server Enterprise Manager, оператор ALTER TABLE ... ADD CONSTRAINT або визначивши опцію PRIMARY/FOREIGN KEYв операторі CREATE TABLE.
У синтаксисі команди CREATE TABLEпередбачена можливість додавання в розділіCONSTRAINTелементів PRIMARY KEYабоFOREIGN KEY.Спрощений формат команди:
CREATE TABLE<Ім´я таблиці>
(<Ім´я поля> <Тип даних>CONSTRAINT. . ., . . . )
Наприклад, оператор для створення таблиці, коли не вказується ім’я первинного ключа (воно буде призначено сервером) виглядає так:
CREATE TABLE<Ім´я таблиці>
(<Ім´я поля> smallint PRIMARY KEY)
Якщо потрібно явно вказати ім’я первинного ключа при створенні таблиці, то команда має наступний вигляд:
Цією командою встановлюється зв’язок між таблицею_1 і таблицею_2, причому ключові поля у двох таблицях повинні мати абсолютно однакові типи даних.
Тепер розглянемо оператори, які використовуються для зміни таблиць з метою додавання первинних і вторинних ключів.
Для додавання первинного ключа без визначення його імені використовують оператор наступного формату:
ALTER TABLE<Ім´я таблиці_1>
ADD PRIMARY KEY (<Ім´я поля_1>)
Наприклад, таблиці „Штат рекламних агентів” і „Обсяг операцій” необхідно зв’язати за полем Код працівника. При цьому поле Код працівника першої таблиці є первинним ключем, а поле Код працівника другої таблиці – вторинним ключем. Команда додавання до таблиці „Штат рекламних агентів” первинного ключа має наступний вигляд:
alter tablestat
add primary key (cod)
Додавання вторинного ключа до таблиці_2, який посилається на таблицю_1, виконується командою:
Аналогічно до команди CREATE TABLE,цією командою встановлюється зв’язок між таблицею_1 і таблицею_2, причому ключові поля у двох таблицях повинні мати абсолютно однакові типи.
Наприклад, додавання вторинного ключа до таблиці „Обсяг операцій” і встановлення зв’язку з таблицею „Штат рекламних агентів” за полем Код працівника виконується командою:
alter tableobsag
add foreign key (cod) referencesstat (cod)
Для відображення інформації про ключі в SQL Server використовуються дві системні процедури. Основний спосіб відображення інформації про ключі полягає у використанні процедури sp_helpconstraint, яка має наступний формат:
SP_HELPCONSTRAINT <Ім´я таблиці>
Наприклад,
sp_helpconstraintstat
Результат виконання команди зображено на рис. 12.
Рис. 12. Інформація про ключі таблиці stat.
Системна процедура sp_help виводить загальну інформацію про таблиці баз даних. Частина цієї інформації стосується ключів таблиці. Формат процедури:
SP_HELР <Ім´я таблиці>
Видалення первинних і вторинних ключів виконується командою
ALTER TABLE<Ім´я таблиці>
DROP CONSTRAINT<Ім´я ключа>
Зауважимо, що не можна видалити первинний ключ, якщо він є вторинним ключем для інших таблиць. Спочатку потрібно видалити вторинні ключі.
Наприклад, команди для видалення зовнішнього і внутрішнього ключів: