Первинний ключ

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Первинний ключ — атрибут або набір атрибутів, який однозначно ідентифікує кортеж даного відношення. Первинний ключ обов'язково унікальний.

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

Первинний ключ у мові SQL[ред. | ред. код]

У мові SQL первинний ключ описують обмеженням PRIMARY KEY, яке задається в операторах DDL (Create, Alter). Наприклад[1],

CREATE TABLE fools(id integer primary key auto_increment, name char(20), folly char(40));

Під час створення первинного ключа рушій бази даних зазвичай перевіряє метадані та дані відповідних стовпчиків (англ. columns) щодо їх відповідності таким правилам:

Стовпчики не повинні допускати значень NULL
Стовпчики первинного ключа неявно набувають обмеження NOT NULL[note 1][2]. Розріджений стовпчик[уточнити] можна використовувати як частину первинного ключа, оскільки вони мають дозволяти значення NULL.
Якщо первинний ключ додається до вже наявної таблиці, то набір значень у визначених стовпчиках має бути унікальним (не містити повторів)
Якщо повтори трапляються, то рушій бази даних не створює обмеження та повертає помилку.

Приклади застосування первинного ключа[ред. | ред. код]

Приклад створення таблиці мовою SQL з обмеженням первинного ключа:

CREATE TABLE "Student" (
"id_student" int(120) NOT NULL auto_increment,
"first_name" varchar(120) NOT NULL,
"last_name" varchar(120) NOT NULL,
"birth_date" date,
"address" varchar(255),
PRIMARY KEY ("id_student"));

Інший приклад:

CREATE TABLE "Car" (
"Id_Car" int NOT NULL,
"CarName" varchar(120) NOT NULL,
"Price" float NOT NULL,
"BodyType" varchar(120),
PRIMARY KEY ("Id_Car"));

Для створення обмеження первинного ключа в колонці «Id_Car», коли таблиця «Car» вже існує, використовують наступний сценарій мовою SQL з використанням оператора ALTER TABLE:

ALTER TABLE "Car"
ADD PRIMARY KEY ("Id_Car")

Щоб розподілити обмеження первинного ключа на декілька колонок, доцільно використовувати такий синтаксис SQL:

ALTER TABLE "Car"
ADD CONSTRAINT "PrimaryKey_Car" PRIMARY KEY ("Id_Car", "CarName")

Для видалення обмеження первинного ключа використовують наступний SQL:

ALTER TABLE "Car"
DROP PRIMARY KEY

Примітки[ред. | ред. код]

  1. У деяких реалізаціях перевірка не неприпустимість значень NULL не виконується. Наприклад, в SQLite в полях первинного ключа дозволено порожні значення (NULL). Це зумовлено сумісністю з попередніми реалізаціями, у яких обмеження не було.

Джерела[ред. | ред. код]

  1. Create-table в MySQL. dev.mysql.com (англійською). 
  2. SQLite Primary Key: The Ultimate Guide To Primary Key. SQLite Tutorial. Процитовано 2018-12-19.