Ключис

Primary Key (первичный ключ)

Primary key — это уникальный идентификатор каждой записи в таблице.
В одной таблице может быть только один первичный ключ.
Он не может содержать NULL и должен быть уникальным.

Пример (таблица «Студенты»):

Код для создания таблицы:

CREATE TABLE Uliopilased (
ID_uliopilane INT PRIMARY KEY,
Nimi TEXT,
Grupp TEXT
);

INSERT INTO Uliopilased (ID_uliopilane, Nimi, Grupp)
VALUES (1, 'Eldar', 'A1'),
(2, 'Nikita', 'B1');

SELECT * FROM Uliopilased;

Здесь ID_студента — это Primary Key.

Разница: Primary key отличается тем, что он — главный уникальный идентификатор таблицы.


Foreign Key (внешний ключ)

Foreign key — это ссылка на первичный ключ другой таблицы.
Он создаёт связь между таблицами (например, между студентами и их оценками).

Пример:

Код для создания таблицы:

CREATE TABLE Hinded (
ID_hinne INT PRIMARY KEY,
Hinne INT,
ID_uliopilane INT,
FOREIGN KEY (ID_uliopilane) REFERENCES Uliopilased(ID_uliopilane)
);

INSERT INTO Hinded (ID_hinne, Hinne, ID_uliopilane)
VALUES (1, 5, 1),
(2, 4, 2);

SELECT * FROM Hinded;;

Здесь ID_студента — это Foreign Key, который ссылается на ID_студента из таблицы Студенты.

Разница: Foreign key обеспечивает связь между таблицами, в отличие от Primary key, который идентифицирует запись внутри одной таблицы.


Unique Key (уникальный ключ)

Unique key обеспечивает уникальность значения в столбце, но в отличие от Primary key, его может быть несколько в одной таблице.
Он может содержать NULL.

Пример:

Код для создания таблицы:

CREATE TABLE Kontaktid (
ID INT PRIMARY KEY,
Email VARCHAR(100) UNIQUE,
Telefon VARCHAR(20)
);

INSERT INTO Kontaktid (ID, Email, Telefon)
VALUES (1, 'khabib@mail.com', '555111'),
(2, 'nikitos@mail.com', '555222');

SELECT * FROM Kontaktid;

Здесь Email может быть Unique Key, чтобы адреса не повторялись.

Разница: Unique key допускает несколько NULL и может быть не основным ключом.


Simple Key (простой ключ)

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

Пример:

Код для создания таблицы:

CREATE TABLE Uliopilased_Simple (
ID_uliopilane INT PRIMARY KEY,
Nimi VARCHAR(50),
Grupp VARCHAR(10)
);

INSERT INTO Uliopilased_Simple (ID_uliopilane, Nimi, Grupp)
VALUES (
1, 'Nikita', 'C2'),
(2, 'Eldar', 'A1'
);

SELECT * FROM Uliopilased_Simple;

Разница: Если ключ состоит только из одного атрибута, он простой. Если из нескольких — составной (composite/compound).


Composite Key (составной ключ)

Composite key — это ключ, который состоит из двух или более столбцов, вместе создающих уникальность записи.

Пример (таблица оценок):

Код для создания таблицы

CREATE TABLE Hinded2 (
ID_aine INT,
ID_uliopilane INT,
Hinne INT,
PRIMARY KEY (ID_aine, ID_uliopilane)
);

INSERT INTO Hinded2 (ID_aine, ID_uliopilane, Hinne)
VALUES
(1, 1, 5),
(1, 2, 4);

SELECT * FROM Hinded2;

Уникальность создаётся сочетанием ID_предмета + ID_студента.


Compound Key (составной/комбинированный ключ)

Compound key похож на composite key — это ключ, который состоит из нескольких полей, но не обязательно все поля уникальны по отдельности.
Иногда оба термина считаются синонимами.

Пример:

Код для создания таблицы:

CREATE TABLE Inimesed_Compound (
Nimi VARCHAR(50),
Perekonnanimi VARCHAR(50),
Sunnikuupaev DATE,
PRIMARY KEY (Nimi, Perekonnanimi, Sunnikuupaev)
);

INSERT INTO Inimesed_Compound (Nimi, Perekonnanimi, Sunnikuupaev)
VALUES (
'Nikita', 'Orlenko', '2008-10-10'),
('Eldar', 'Petrov', '2002-08-10'
);

SELECT * FROM Inimesed_Compound;

Superkey (суперключ)

Superkey — это любой набор атрибутов, который однозначно идентифицирует запись.
Каждый Primary key — это Superkey, но не каждый Superkey — это Primary key.

Пример:

Код для создания таблицы:

CREATE TABLE Inimesed (
ID INT PRIMARY KEY,
Email VARCHAR(100) UNIQUE,
Telefon VARCHAR(20) UNIQUE
);

INSERT INTO Inimesed (ID, Email, Telefon)
VALUES(
1, 'nikitos@mail.com', '555111'),
(2, 'eldar@mail.com', '555222'
);

SELECT * FROM Inimesed;

ID, Email, Телефон — всё это Superkey, так как каждое из этих полей по отдельности делает запись уникальной.


Candidate Key (кандидатный ключ)

Candidate key — это потенциальный ключ, который может стать первичным.
Из всех кандидатных ключей выбирают один — он становится Primary key.

Пример:

Код для создания таблицы:

CREATE TABLE Kandidaadid (
ID INT PRIMARY KEY,
Email VARCHAR(100) UNIQUE,
Telefon VARCHAR(20) UNIQUE
);

INSERT INTO Kandidaadid (ID, Email, Telefon)
VALUES (
1, 'nikitos@mail.com', '555111'
);
SELECT * FROM Kandidaadid

Кандидатные ключи: ID, Email, Телефон.
Выбранный Primary key: ID.


Alternate Key (альтернативный ключ)

Alternate key — это кандидатный ключ, который не был выбран как первичный.

Пример:

Код для создания таблицы:

CREATE TABLE Alternatiivsed (
ID INT PRIMARY KEY,
Email VARCHAR(100) UNIQUE,
Telefon VARCHAR(20) UNIQUE
);

INSERT INTO Alternatiivsed (ID, Email, Telefon)
VALUES (
1, 'nikitos@mail.com', '555111')


SELECT * FROM Alternatiivsed;

Источники:

Конспекты занятий по теме «Andmebaasid»

Учебные материалы по базам данных

https://www.geeksforgeeks.org/types-of-keys-in-database

https://www.w3schools.com/sql/

https://chat.openai.com/