logo

Външен ключ в СУБД

Външният ключ е различен от супер ключ, кандидат ключ или първичен ключ, тъй като външният ключ е този, който се използва за свързване на две таблици заедно или за създаване на връзка между двете.

Тук, в този раздел, ще обсъдим външния ключ, неговата употреба и ще разгледаме някои примери, които ще ни помогнат да разберем работата и използването на външния ключ. Ще видим и практическата му реализация в база данни, т.е. създаване и изтриване на външен ключ в таблица.

Какво е външен ключ

Външен ключ е този, който се използва за свързване на две таблици заедно чрез първичния ключ. Това означава, че колоните на една таблица сочат към атрибута на първичния ключ на другата таблица. Освен това означава, че ако някой атрибут е зададен като атрибут на първичен ключ, ще работи в друга таблица като атрибут на външен ключ. Но трябва да се знае, че външният ключ няма нищо общо с първичния ключ.

Използване на външен ключ

Използването на външен ключ е просто да се свържат атрибутите на две таблици заедно с помощта на атрибут на първичен ключ. По този начин той се използва за създаване и поддържане на връзката между двете връзки.

Пример за външен ключ

Нека обсъдим един пример, за да разберем работата на външен ключ.

python генерира uuid

Разгледайте две таблици Студент и Отдел имащи съответните им атрибути, както е показано в структурата на таблицата по-долу:

Външен ключ в СУБД
Външен ключ в СУБД

В таблиците един атрибут, можете да видите, е общ, т.е Stud_Id , но има различни ключови ограничения за двете таблици. В таблицата Student полето Stud_Id е a първичен ключ защото уникално идентифицира всички други полета на таблицата Student. От друга страна, Stud_Id е a външен ключ атрибут за таблицата Department, защото той действа като атрибут на първичен ключ за таблицата Student. Това означава, че таблицата Student и Department са свързани една с друга поради атрибута Stud_Id.

На фигурата по-долу можете да видите следната структура на връзката между двете таблици.

предаване на низ като int java
Външен ключ в СУБД

Забележка: Референтната цялост в СУБД е разработена от концепцията за външния ключ. Ясно е, че първичният ключ е самостоятелен съществуващ ключ и външният ключ винаги препраща към първичен ключ в друга таблица, в която таблицата, която съдържа първичния ключ, е известна като референтната таблица или родителска таблица за другата таблица, която има външния ключ.

Създаване на ограничение за външен ключ

На CREATE TABLE

По-долу е синтаксисът, който ще ни накара да научим създаването на външен ключ в таблица:

 CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int, FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id) ); 

Така че по този начин можем да зададем външен ключ за таблица в базата данни на MYSQL.

В случай на създаване на външен ключ за таблица в SQL или Oracle сървър, следният синтаксис ще работи:

 CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int FOREIGN KEY REFERENCES Student (Stud_Id) ); 

На ALTER TABLE

Следва синтаксисът за създаване на ограничение за външен ключ на ALTER TABLE:

npm команда за инсталиране
 ALTER TABLE Department ADD FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id); 

Отпадане на външен ключ

За да изтриете външен ключ, има описан по-долу синтаксис, който може да се използва:

 ALTER TABLE Department DROP FOREIGN KEY FK_StudentDepartment; 

Така че по този начин можем да изпуснем външен ключ, използвайки ALTER TABLE в базата данни на MYSQL.

Точка за запомняне

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

Референтни действия

Има някои действия, които са свързани с действията, предприети от притежателя на таблицата с външни ключове:

1) Каскада

Когато изтрием редове в родителската таблица (т.е. тази, която съдържа първичния ключ), същите колони в другата таблица (т.е. тази, която държи чужд ключ) също се изтриват. По този начин действието е известно като Каскада .

екземпляр на

2) Задайте NULL

Такова референтно действие поддържа референтната цялост на двете таблици. Когато манипулираме/изтриваме референтен ред в родителската/реферираната таблица, в дъщерната таблица (таблица с външен ключ), стойността на такъв референтен ред се задава като NULL. Такова извършено референтно действие е известно като Задайте NULL .

3) Задайте ПО ПОДРАЗБИРАНЕ

Такова действие се извършва, когато стойностите в посочения ред на родителската таблица се актуализират или редът се изтрие, стойностите в дъщерната таблица се задават на стойности по подразбиране на колоната.

4) Ограничете

алгебра на множествата

Това е ограничителното ограничение, при което стойността на реферирания ред в родителската таблица не може да бъде модифицирана или изтрита, освен ако не е реферирана от външния ключ в дъщерната таблица. Следователно това е нормално референтно действие на външен ключ.

5) Без действие

Това също е ограничително ограничение на външния ключ, но се прилага само след опит за промяна или изтриване на посочения ред на родителската таблица.

6) Тригери

Всички тези и други референтни действия основно се изпълняват като тригери, където действията на външен ключ са много подобни или почти подобни на дефинираните от потребителя тригери. В някои случаи обаче подредените референтни действия се заменят с техните еквивалентни дефинирани от потребителя тригери за осигуряване на правилното изпълнение на тригера.