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

множина атрибутів (колонок), яка унікально визначає кортеж (рядок) відношення

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

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

Первинний ключ у мові 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. Процитовано 19 грудня 2018. {{cite web}}: Cite має пустий невідомий параметр: |1= (довідка)