Застосування SQL запиту FOREIGN KEY (зовнішній ключ)

Матеріал представлений на сторінці взятий з ресурсу http://www.w3schools.com/sql/


Поле таблиці з атрибутом FOREIGN KEY встановлює однозначний зв'язок онієї таблиці з полем PRIMARY KEY іншої таблиці.
Краще проілюструвати особливості foreign key (зовнішній ключ) на прикладі.
Погляньте на слідуючі дві таблиці.

Таблиця "Persons"(Люди):

P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger


Таблиця "Orders"(замовлення):
O_IdOrderNoP_Id
1778953
2448953
3245621

Зауважимо, що колонка "P_Id" в таблиці "Orders" вказує на колонку "P_Id" в таблиці "Persons".
Колонка "P_Id" в в таблиці "Persons"(Люди) є PRIMARY KEY (первиний ключ).
Колонка "P_Id" в в таблиці "Orders"(замовлення) є FOREIGN KEY (зовнішній ключ)
Атрибут FOREIGN KEY застосовується для запобігання діям, що можуть порушити зв'язки між таблицями.
Атрибут FOREIGN KEY також запобігає внесенню неіснуючих даним внаслідок внесення змін в поле з атрибутом foreign key, тому що має бути відповідність з даними таблиці, на яке поле FOREIGN KEY посилається.


Застосування SQL запиту FOREIGN KEY при створенні таблиці CREATE TABLE даних

    Слідуючий SQL запит створює FOREIGN KEY для Колонки "P_Id" в таблиці "Orders".

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons (P_Id)
)

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

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)

Застосування SQL запиту FOREIGN KEY при змінах в таблиці ALTER TABLE

Якщо необхідно додатково створити поле з FOREIGN KEY в таблиці, що вже існує, тоді використовується запис:

ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

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

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

Вилучення FOREIGN KEY з таблиці даних

    Для вилучення поля FOREIGN KEY з таблиці використовується запис:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders