Різниця між первинним і зовнішнім ключем у СУБД

Автор: Laura McKinney
Дата Створення: 1 Квітень 2021
Дата Оновлення: 12 Травень 2024
Anonim
Інструментальні середовища та технології програмування  (26.01.2022)
Відеоролик: Інструментальні середовища та технології програмування (26.01.2022)

Зміст


Ключі - це найважливіша частина СУБД, яку вони використовують для ідентифікації та встановлення зв’язку між таблицями на схемі. Зараз ми сьогодні обговоримо два дуже важливі ключі СУБД, тобто первинний ключ та зовнішній ключ, а також ми обговоримо різницю між первинним та зовнішнім ключем. По дорозі дозвольте мені сказати вам, що основна різниця між первинним та зовнішнім ключем, що є первинним ключем, є одним із обраних ключових кандидатів, виконаним дизайнером бази даних, тоді як зовнішній ключ - це ключ, який відноситься до первинного ключа іншого відношення.

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

  1. Порівняльна діаграма
  2. Визначення
  3. Ключові відмінності
  4. Висновок

Порівняльна діаграма

Основа для порівнянняПервинний ключЗовнішній ключ
ОсновніПервинний ключ - це обраний кандидат-ключ, який однозначно визначає кортеж у відношенні.Зовнішній ключ у таблиці відноситься до первинного ключа іншої таблиці.
НУЛЬЗначення основного ключа ніколи не може бути NULL.Зовнішній ключ приймає значення NULL.
ДублікатЖоден два кортежі у відношенні не несуть повторювані значення для атрибута первинного ключа.Кортежі можуть нести подвійне значення для атрибута іноземного ключа.
ДальністьМоже бути лише один первинний ключ відносини.У відносині може бути кілька закордонних ключів.
Тимчасовий стілПервинне обмеження ключа може бути визначене у тимчасових таблицях.Обмеження зовнішнього ключа не можна визначити у тимчасових таблицях.
Індекс кластеруЗа замовчуванням первинний ключ кластерно індексується.Зовнішній ключ не кластеризується, індексується автоматично; це потрібно зробити вручну.
ВведенняМи можемо вставити значення в атрибут первинного ключа, навіть якщо в рецензуючому іноземному ключі немає цього значення в його стовпці.Ми не можемо вставити значення в іноземний ключ, якщо це значення немає в стовпці первинного ключа, на який посилається.
ВидаленняПерш ніж видалити значення первинного ключа, переконайтесь, що значення все ще не присутнє в стовпчику стороннього ключа референції таблиці посилань.Ви можете видалити значення з стовпця із зовнішнім ключем, не турбуючи, чи є це значення у стовпці первинного ключа з посиланням.


Визначення первинного ключа

Первинний ключ однозначно визначає кортежі у відношенні. Це може бути один атрибут у відношенні, або це може бути набір атрибутів у відношенні. Значення атрибута первинного ключа повинно бути ніколи або рідко змінювався. Оскільки це головне, означає ідентифікувати будь-який запис у базі даних. Зміна будь-якого значення атрибута первинного ключа створить плутанину.

Дизайнер баз даних вибирає один із кандидатські ключі як основний ключ, враховуючи деякі моменти. Перший розгляд - значення атрибута первинного ключа ніколи не може містити НУЛЬ значення. Тому що, якщо значення атрибута первинного ключа містить NULL, це означає, що ми не можемо ідентифікувати цей запис у таблиці. Це також порушує обмеження цілісності сутності. Другий розгляд, немає двох кортежів в таблиці може містити те саме значення для атрибута первинного ключа, оскільки це порушило б унікальність кортелів.


Там можуть бути тільки один первинний ключ для будь-якого відношення. Первинний ключ за замовчуванням кластерно-індексований, що означає, що всі кортежі таблиці сортуються на основі значень атрибутів первинних ключів. Обмеження основного ключа можна визначити на a тимчасовий стіл. Посередницькі таблиці, створені під час виконання запиту, називаються тимчасовими таблицями.

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

Первинний ключ таблиці при використанні в якійсь іншій таблиці, тоді він стає зовнішнім ключем для цієї таблиці. Нижчі ключові обмеження обговорюються нижче.

Визначення іноземного ключа

Коли відношення R1, серед його атрибутів, є а первинний ключ інших стосунків R2, тоді цей атрибут називається Зовнішній ключ для відношення R1. Відношення R1 що містить зовнішній ключ, називається відношення відношення оскільки він посилається на первинний ключ відношення R2 та відношення R2 це називається посилальне відношення.
На відміну від первинного ключа, зовнішній ключ може приймати НУЛЬ Значення, тому що він не має завдання чітко ідентифікувати запис у відношенні, оскільки у нас є первинний ключ для цього. Таким же чином приймається і зовнішній ключ дублюючі значення.

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

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

  1. Первинний - це набір атрибутів / кандидат-ключ, який чітко ідентифікує запис у відношенні. Однак зовнішній ключ у таблиці посилається на первинний ключ іншої таблиці.
  2. Жоден атрибут первинного ключа не може містити значення NULL, тоді як атрибут іноземного ключа може приймати значення NULL.
  3. Первинний ключ повинен мати унікальні значення атрибутів, тоді як зовнішній ключ може мати повторювані значення атрибутів.
  4. У відношенні може бути декілька сторонніх ключів, але відношення має лише один первинний ключ.
  5. Обмеження основного ключа можна застосувати до тимчасових таблиць. Однак обмеження зовнішнього ключа не можна застосовувати до тимчасових таблиць.
  6. Первинний ключ за замовчуванням кластеризований індексом, тоді як зовнішній ключ не індексується кластером автоматично, але його можна зробити вручну.
  7. Під час вставлення значення у стовпчик із зовнішнім ключем переконайтесь, що значення атрибута вставки присутнє у стовпці первинного ключа, що посилається. Однак обмеження щодо вставки в стовпчик первинного ключа не існує.
  8. Видаляючи значення з стовпця первинного ключа, переконайтесь, що значення видаленого атрибута відсутнє в стовпчику стороннього ключа, що посилається. Однак для видалення значення із стовпця із зовнішнім ключем немає обмежень.

Висновок:

І первинний, і зовнішній ключ є важливими для схеми. Первинний ключ однозначно визначає кожен кортеж у відношенні, тоді як зовнішній ключ використовується для створення зв’язку між двома відносинами.