Рекомендуємо, 2022

Вибір Редакції

Різниця між первинним ключем і унікальним ключем

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

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

Діаграма порівняння

Основа для порівнянняПервинний ключУнікальний ключ
ОсновнийВін використовується як унікальний ідентифікатор для кожного рядка таблиці.Він також однозначно визначає рядок, який не визначається як первинний ключ.
Прийняття значення NULLПервинний ключ не приймає значення NULL.Унікальний прийме значення NULL.
Кількість ключів, які можна визначити в таблиціТільки один первинний ключБільше одного
ІндексСтворює кластерний індексСтворює некластерний індекс

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

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

Давайте зрозуміємо поняття первинного ключа за допомогою таблиці. Тут ми створюємо таблицю з іменем Student, яка має такі атрибути, як Roll_number, Name, Batch, Phone_number, Citizen_ID.

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

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

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

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

Давайте зрозуміємо це з аналогічним прикладом, де ми мали таблицю Student з атрибутами Roll_number, Name, Batch, Phone_number та Citizen_ID. Атрибут Roll number присвоюється первинному ключу.

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

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

Ключові відмінності між первинним ключем і унікальним ключем

  1. Коли атрибут оголошений як первинний ключ, він не буде приймати значення NULL. З іншого боку, коли атрибут оголошений Unique, він може прийняти одне значення NULL.
  2. Таблиця може мати тільки первинний ключ, тоді як на таблиці можуть бути декілька унікальних обмежень.
  3. Кластерний індекс автоматично створюється, коли визначається первинний ключ. На відміну від цього, унікальний ключ генерує некластерний індекс.

Висновок

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

Top