Первинний ключ
Первинний ключ — атрибут або набір атрибутів, який однозначно ідентифікує кортеж даного відношення. Первинний ключ обов'язково унікальний.
У реляційних базах даних первинний ключ обирають серед одного з потенційних ключів або ж генерують сурогатний ключ.
Первинний ключ у мові 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
Примітки
Джерела
- Create-table в MySQL. dev.mysql.com (англійською).
- SQLite Primary Key: The Ultimate Guide To Primary Key. SQLite Tutorial. Процитовано 19 грудня 2018.