Разлика между първичен ключ и външен ключ
Основни разлики между първичен и външен ключ
- Ограничението за първичен ключ е колона, която уникално идентифицира всеки ред в таблицата на системата за управление на релационна база данни, докато външен ключ е колона, която създава връзка между две таблици.
- Първичният ключ никога не приема нулеви стойности, докато външният ключ може да приема множество нулеви стойности.
- Можете да имате само един първичен ключ в таблица, докато можете да имате множество външни ключове в таблица.
- Стойността на първичния ключ не може да бъде премахната от родителската таблица, докато стойността на външния ключ може да бъде премахната от дъщерната таблица.
- Никакви два реда не могат да имат идентични стойности за първичен ключ; от друга страна, външен ключ може да съдържа дублирани стойности.
- Няма ограничение за вмъкване на стойностите в колоната на таблицата, докато вмъквате всяка стойност в таблицата с външен ключ; уверете се, че стойността присъства в колона на първичен ключ.

Тук анализирах разликата между първичния ключ и външния ключ и ще оценя изчерпателно техните плюсове и минуси.
Какво е първичен ключ?
Ограничение за първичен ключ е колона или група от колони, които уникално идентифицират всеки ред в таблицата на системата за управление на релационна база данни. Не може да бъде дубликат, което означава, че една и съща стойност не трябва да се появява повече от веднъж в таблицата.
Една таблица не може да има повече от един първичен ключ. The първичен ключ може да се дефинира на ниво колона или таблица. Ако създадете съставен първичен ключ, той трябва да бъде дефиниран на ниво таблица.
Пример за първичен ключ
Синтаксис:
По-долу е синтаксисът на първичния ключ:
CREATE TABLE <Table-Name> ( Column1 datatype, Column2 datatype, PRIMARY KEY (Column-Name) . );
Тук
- Table_Name е името на таблицата, която трябва да създадете.
- Column_Name е името на колоната с първичен ключ.
Пример:
StudID | Рол № | Собствено име | Фамилия | Имейл |
---|---|---|---|---|
1 | 11 | том | Цена | abc@gmail.com |
2 | 12 | Nick | Райт | xyz@gmail.com |
3 | 13 | Dana | Натан | mno@yahoo.com |
В горния пример създадохме таблица за студенти с колони като StudID, Roll No., First Name, Last Name и Email. StudID е избран като първичен ключ, защото може уникално да идентифицира други редове в таблицата.
Защо да използвате първичен ключ?
През годините, когато работех със системи за бази данни, забелязах тези недостатъци и предимства при използване на първичен ключ:
- Основната цел на първичния ключ е да идентифицира всеки един запис в таблицата на базата данни.
- Можете да използвате първичен ключ, когато не позволявате на някой да въвежда нулеви стойности.
- Ако изтриете или актуализирате записи, действието, което сте посочили, ще бъде предприето, за да се гарантира целостта на данните.
- Изпълнете операцията за ограничаване, за да отхвърлите операцията за изтриване или актуализиране за родителската таблица.
- Данните се организират в последователност от клъстерирани индекси, когато физически организирате таблица на СУБД.
Какво е външен ключ?
Външен ключ е колона, която създава връзка между две таблици. Целта на външния ключ е да поддържа целостта на данните и да позволява навигация между два различни екземпляра на обект. Той действа като кръстосана препратка между две таблици, тъй като препраща към първичния ключ на друга таблица. Всяка връзка в базата данни трябва да се поддържа от външен ключ.
Пример за външен ключ
Синтаксис:
По-долу е синтаксисът на външния ключ:
CREATE TABLE <Table Name>( column1 datatype, column2 datatype, constraint (name of constraint) FOREIGN KEY [column1, column2...] REFERENCES [primary key table name] (List of primary key table column) ...);
Тук
- Параметърът Име на таблица показва името на таблицата, която ще създадете.
- Параметрите column1, column2… изобразяват колоните, които трябва да се добавят към таблицата.
- Ограничението обозначава името на ограничението, което създавате.
- Препратките показват таблица с първичен ключ.
Пример:
DeptCode | DeptName |
---|---|
001 | Наука |
002 | английски |
005 | компютър |
ID на учителя | Fname | Lname |
---|---|---|
B002 | David | Warner |
B017 | Сара | Джоузеф |
B009 | микрофон | Брантън |
В горния пример имаме две таблици: учител и отдел в училище. Няма обаче начин да видите кое търсене в кой отдел работи.
В тази таблица, като добавим външния ключ в Deptcode към името на учителя, можем да създадем връзка между двете таблици.
ID на учителя | DeptCode | Fname | Lname |
---|---|---|---|
B002 | 002 | David | Warner |
B017 | 002 | Сара | Джоузеф |
B009 | 001 | микрофон | Брантън |
Тази концепция е известна още като референтна цялост.
Защо да използвате външен ключ?
От това, което видях, ето важните причини за внедряване на външни ключове:
- Външните ключове ви помагат да мигрирате обекти, като използвате първичен ключ от родителската таблица.
- A външен ключ ви позволява да свържете две или повече таблици заедно.
- Това прави данните от вашата база данни последователни.
- Външен ключ може да се използва за съпоставяне на колона или комбинация от колони с първичния ключ в родителска таблица.
- Ограничението за външен ключ на SQL се използва, за да се гарантира, че референтната цялост на родителските данни съответства на стойностите в дъщерната таблица.
Разлика между първичен ключ и външен ключ
Позволете ми да споделя важната разлика между първичен ключ и външен ключ, както лично съм изпитал:
База за сравнение | Първичен ключ | Чужд ключ |
---|---|---|
дефиниция | Ограничението за първичен ключ е колона или група от колони, които уникално идентифицират всеки ред в таблицата на система за управление на релационна база данни. | Външен ключ е колона, която създава връзка между две таблици. |
Basic | Помага ви да идентифицирате уникално запис в таблицата. | Това е поле в таблицата, което е първичен ключ на друга таблица. |
NULL | Първичният ключ никога не приема нулеви стойности. | Външен ключ може да приема множество нулеви стойности. |
Индексирането | Първичният ключ е клъстериран индекс, а данните в таблицата на СУБД са физически организирани в последователността на клъстерирания индекс. | Външен ключ не може автоматично да създаде индекс, клъстериран или неклъстериран. |
Броя | Можете да имате един първичен ключ в таблица. | Можете да имате няколко външни ключове в таблица. |
заличаване | Стойността на първичния ключ не може да бъде премахната от родителската таблица. | Стойността на външния ключ може да бъде премахната от дъщерната таблица. |
Временна маса | Можете да дефинирате първичния ключ имплицитно във временните таблици. | Не можете да дефинирате външни ключове на локални или глобални временни таблици. |
Връзка | Първичният ключ е клъстерен индекс. | По подразбиране това не е клъстерен индекс. |
удвояване | Никакви два реда не могат да имат еднакви стойности за първичен ключ. | Външен ключ може да съдържа дублирани стойности. |
вмъкване | Няма ограничение за вмъкване на стойностите в колоната на таблицата. | Докато вмъквате стойност в таблицата с външни ключове, уверете се, че стойността присъства в колона на първичен ключ. |
Как да избирате между първичен ключ и външен ключ
От това, което видяхме, първичните ключове уникално идентифицират записите в таблицата, а външните ключове свързват тези записи между таблиците, като и двете са критични за поддържане на целостта на данните и улесняване на ефективното извличане на данни.