Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-50.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
204.67 Кб
Скачать
  1. Обмеження primary key оператора create table

PRIMARY KEY - це обмеження дозволяє однозначно ідентифікувати кожний запис у таблиці. Первинний ключ повинен містити унікальні значення. Первинний ключ не може містити NULL значень. Кожна таблиця повинна мати первинний ключ, і кожна таблиця може мати тільки один первинний ключ. Можна розподілити обмежувач PRIMARY KEY на декілька стовпців Зауваження: Якщо ви використовуєте запит ALTER TABLE щоб додати первинний ключ, стовпець для первинного ключа повинен не містити NULL значення

  1. Обмеження foreign key оператора create table

Зовнішній ключ (FK) - це стовпець або поєднання стовпців, яке застосовується для примусового встановлення зв'язку між даними в двох таблицях. Зовнішній ключ можна створити, визначивши обмеження FOREIGN KEY при створенні або зміні таблиці.

Якщо один або декілька стовпців, в яких знаходиться первинний ключ для однієї таблиці, згадується в одному або декількох стовпцях іншої таблиці, то в посиланні зовнішнього ключа створюється зв'язок між двома таблицями. Цей стовпець стає зовнішнім ключем у другій таблиці.

Обмеження FOREIGN KEY не обов'язково має бути пов'язане з обмеженням PRIMARY KEY в іншій таблиці. Крім того, за допомогою цього обмеження можуть зазначатися стовпці обмеження UNIQUE в іншій таблиці. Обмеження FOREIGN KEY може містити значення NULL. Втім, якщо будь-який з стовпців складного обмеження FOREIGN KEY містить значення NULL, то при перевірці будуть пропущені всі значення, складові обмеження FOREIGN KEY. Щоб перевірялися всі значення складного обмеження FOREIGN KEY, вкажіть для всіх що беруть участь стовпців параметр NOT NULL.

Примітка: Обмеження FOREIGN KEY може посилатися на стовпці в таблицях цієї ж бази даних або стовпці цієї ж самої таблиці. Такі таблиці називаються посилаються на себе.

Ссилочна цілісність: Хоча головне завдання обмеження FOREIGN KEY - управління даними, які можуть бути збережені в таблиці зовнішнього ключа, це обмеження також контролює зміна даних у таблиці первинного ключа. Наприклад, при видаленні рядка для менеджера з продажу з таблиці Sales.SalesPerson, ідентифікатор якого використовується в замовленнях на продаж в таблиці Sales.SalesOrderHeader, посилальна цілісність двох таблиць буде порушена. Замовлення на продаж віддаленого менеджера в таблиці SalesOrderHeader стануть недійсними без зв'язку з даними в таблиці SalesPerson.

Обмеження FOREIGN KEY запобігає виникненню цієї ситуації. Обмеження забезпечує цілісність посилань таким чином: воно забороняє зміну даних у таблиці первинного ключа, якщо такі зміни зроблять неприпустимою посилання в таблиці зовнішнього ключа. Якщо при спробі видалити рядок у таблиці первинного ключа або змінити значення цього ключа виявиться, що видалення або зміни значенню первинного ключа відповідає значення в обмеженні FOREIGN KEY в іншій таблиці, то дія виконана не буде. Для успішної зміни або видалення рядка з обмеженням FOREIGN KEY необхідно спочатку видалити дані зовнішнього ключа у відповідній таблиці або змінити дані в таблиці зовнішнього ключа, які пов'язують зовнішній ключ з даними іншого первинного ключа.

Індексування обмежень FOREIGN KEY. Необхідність створити індекс зовнішніх ключів часто виникає з наступних причин: За допомогою обмежень FOREIGN KEY в зв'язаних таблицях перевіряються зміни обмежень PRIMARY KEY. Стовпці зовнішніх ключів часто використовуються для об'єднання критеріїв при з'єднанні даних із зв'язаних таблиць у запитах. Це робиться шляхом зіставлення стовпця або стовпців в обмеженні FOREIGN KEY в одній таблиці з одним або декількома стовпцями первинного або унікального ключів в іншій таблиці. Індекс дозволяє компоненту Database Engine швидко знаходити пов'язані дані в таблиці зовнішніх ключів. Втім, створення індексу не є обов'язковим. Дані з двох зв'язаних таблиць можна об'єднувати, навіть якщо в таблицях немає відповідних обмежень PRIMARY KEY або FOREIGN KEY, проте зв'язок зовнішніх ключів між двома таблицями означає, що ці дві таблиці оптимізовані для з'єднання в запиті, де ключі використовуються в якості критеріїв.

У SQL Server не передбачено ні максимальну кількість обмежень FOREIGN KEY в одній таблиці (з посиланнями на інші таблиці), ні максимальне число обмежень FOREIGN KEY з інших таблиць, що посилаються на одну таблицю. Тим не менш фактичне максимальне число обмежень FOREIGN KEY обмежена конфігурацією обладнання і структури бази даних і додатки. Рекомендується, щоб таблиця містила не більше 253 обмежень FOREIGN KEY, а також щоб на неї посилалося не більше 253 обмежень FOREIGN KEY. При розробці бази даних і додатків слід враховувати вартість примусових обмежень FOREIGN KEY.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]