Võtmed andmebaasisüsteemides
SQL PRIMARY KEY
Primary key (первичный ключ) — это столбец (или несколько), который уникально определяет каждую строку в таблице.
Главное:
- Значения не повторяются.
- Не может быть NULL (пустым).
- В таблице может быть только один primary key.
- Он может состоять из одного столбца или нескольких.
Простой пример:
CREATE TABLE Persons (
ID int NOT NULL,
FirstName varchar(255),
LastName varchar(255) NOT NULL,
PRIMARY KEY (ID)
);
Здесь ID
— это primary key. Он уникален для каждого человека.
Пример с несколькими столбцами в ключе:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
CONSTRAINT PK_Person PRIMARY KEY (ID, LastName)
);
Здесь первичный ключ — это сразу два столбца: ID
и LastName
. Вместе они создают уникальную комбинацию.
Как добавить primary key после создания таблицы:
ALTER TABLE Persons
ADD PRIMARY KEY (ID);
С указанием имени:
ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID, LastName);
Как удалить primary key:
В MySQL:
ALTER TABLE Persons
DROP PRIMARY KEY;
В SQL Server / Oracle:
ALTER TABLE Persons
DROP CONSTRAINT PK_Person;
ССЫЛКА НА ИНФОРМАЦИЮ

SQL FOREIGN KEY
Foreign key (внешний ключ) — это столбец, который ссылается на первичный ключ из другой таблицы. Он соединяет таблицы между собой.
📌 Главное:
- Внешний ключ помогает поддерживать связи между таблицами.
- Значение во внешнем ключе должно уже быть в основной (родительской) таблице.
- Таблица, где находится foreign key — это дочерняя таблица.
- Таблица, на которую он ссылается — это родительская таблица.
Пример:
Таблица Persons
(родительская):
PersonID | LastName | FirstName | Age |
---|---|---|---|
1 | Hansen | Ola | 30 |
2 | Svendson | Tove | 23 |
3 | Pettersen | Kari | 20 |
Таблица Orders
(дочерняя):
OrderID | OrderNumber | PersonID |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Здесь столбец PersonID
в таблице Orders
— это внешний ключ, он ссылается на PersonID
из таблицы Persons
.
Как создать внешний ключ при создании таблицы:
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
С именем ограничения:
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);
Как добавить внешний ключ в уже существующую таблицу:
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
С именем:
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
Как удалить внешний ключ:
В MySQL:
sqlКопироватьРедактироватьALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;
В SQL Server / Oracle:
sqlКопироватьРедактироватьALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;
ССЫЛКА НА ИНФОРМАЦИЮ

SQL UNIQUE KEY
UNIQUE — это ограничение (constraint), которое говорит:
в этом столбце все значения должны быть разные (никаких повторов).
Главное:
- Значения не повторяются, но могут быть NULL (в отличие от primary key).
- В одной таблице может быть много UNIQUE столбцов.
- PRIMARY KEY тоже делает значения уникальными, но он один, а UNIQUE можно сколько угодно.
Пример:
sqlКопироватьРедактироватьCREATE TABLE Persons (
ID int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
Здесь ID
— уникальный: нельзя два раза вставить один и тот же ID.
Пример с именем ограничения и несколькими столбцами:
sqlКопироватьРедактироватьCREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT UC_Person UNIQUE (ID, LastName)
);
В этом случае сочетание ID и LastName должно быть уникальным.
Как добавить UNIQUE в уже существующую таблицу:
sqlКопироватьРедактироватьALTER TABLE Persons
ADD UNIQUE (ID);
С названием:
sqlКопироватьРедактироватьALTER TABLE Persons
ADD CONSTRAINT UC_Person UNIQUE (ID, LastName);
Как удалить UNIQUE:
В MySQL:
sqlКопироватьРедактироватьALTER TABLE Persons
DROP INDEX UC_Person;
В SQL Server / Oracle:
sqlКопироватьРедактироватьALTER TABLE Persons
DROP CONSTRAINT UC_Person;
ССЫЛКА НА ИНФОРМАЦИЮ

SQL SIMPLE KEY
Simple key — это ключ из одного столбца, который уникально определяет строку в таблице.
Главное:
- Это один единственный столбец.
- Он не делится на части (то есть не составной).
- Значения уникальные (не повторяются).
Пример:
CREATE TABLE Students (
StudentID int PRIMARY KEY,
FirstName varchar(255),
LastName varchar(255)
);
Здесь StudentID
— это simple key, потому что:
- он один;
- он уникален;
- его нельзя разделить на части (это не FirstName + LastName, а один столбец).
ССЫЛКА НА ИНФОРМАЦИЮ

SQL COMPOSITE KEY
Composite key (составной ключ) — это первичный ключ, который состоит из двух или более столбцов.
Каждый по отдельности может не быть уникальным, но вместе они создают уникальную комбинацию.
Главное:
- Это несколько столбцов, объединённых в один ключ.
- Вместе они гарантируют уникальность строки.
- Ни один из этих столбцов не может быть NULL.
- Используется, если одного столбца недостаточно для уникальности.
Пример:
CREATE TABLE student (
rollNumber INT,
name VARCHAR(30),
class VARCHAR(30),
section VARCHAR(1),
mobile VARCHAR(10),
PRIMARY KEY (rollNumber, mobile)
);
Здесь rollNumber
и mobile
— вместе составляют composite key.
Отдельно они могут повторяться, но их сочетание будет уникальным.
📥 Примеры вставки данных:
INSERT INTO student (rollNumber, name, class, section, mobile)
VALUES (1, "AMAN", "FOURTH", "B", "9988774455");
INSERT INTO student (rollNumber, name, class, section, mobile)
VALUES (2, "JOHN", "FIRST", "A", "9988112233");
🧐 Когда использовать composite key?
- Когда одного столбца мало, чтобы отличить строки.
- Когда связь между колонками логически важна (например, студент и его номер телефона).
- Когда ты хочешь сохранить целостность данных, не допуская повторений комбинаций.
📌 Вывод:
Composite key — это удобный способ сделать так, чтобы несколько столбцов вместе uniquely определяли каждую строку.
Очень полезно в таблицах со связями или когда у тебя много одинаковых значений в отдельных столбцах.
ССЫЛКА НА ИНФОРМАЦИЮ

SQL COMPOUND KEY
Compound key (составной внешний ключ) — это ключ из двух или более внешних ключей, которые пришли из других таблиц как первичные ключи.
Главное:
- Состоит из двух и более первичных ключей из других таблиц.
- Эти ключи выступают как внешние ключи в текущей таблице.
- Вместе они уникально определяют строку.
- Обычно используется в таблицах-связках (например, many-to-many).
Пример из школы:
Есть таблица Students:
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
Name VARCHAR(100)
);
Есть таблица Courses:
CREATE TABLE Courses (
CourseID INT PRIMARY KEY,
CourseName VARCHAR(100)
);
Теперь создадим таблицу Enrolment — она показывает, кто записался на какой курс:
CREATE TABLE Enrolment (
StudentID INT,
CourseID INT,
PRIMARY KEY (StudentID, CourseID),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);
Здесь StudentID
и CourseID
— это compound key, потому что:
- Оба ключа — это первичные ключи в других таблицах.
- В таблице
Enrolment
они стали внешними ключами. - Вместе они уникально определяют каждую запись (то есть один студент — один курс).

ССЫЛКА НА ИНФОРМАЦИЮ

SQL SUPER KEY
Super key (суперключ) — это один столбец или группа столбцов, которые могут уникально определить строку в таблице.
Главное:
- Может быть один столбец (например,
Id
), или несколько вместе (например,Id + Name
). - Главное — чтобы комбинация гарантировала уникальность строки.
- Внутри может быть лишняя информация (например,
Name
не нужен, но всё равно входит). - Любой primary key — это тоже super key, но не каждый super key — это primary key.
Пример:
Представим таблицу:

Id
— это уникальный столбец, значит он уже super key. Но также и вот такие комбинации тоже будут super keys:
(Id)
(Id, Name)
(Id, Email)
(Id, Name, Email)
Почему? Потому что во всех них есть Id
, который уникально определяет строку, а остальное — просто “в придачу”.
Вывод:
- Super key — это любой набор столбцов, который может однозначно найти строку.
- Таких ключей может быть много в одной таблице.
- Он может содержать лишние столбцы, и это нормально.
ССЫЛКА НА ИНФОРМАЦИЮ

SQL CANDIDATE KEY
Candidate key (кандидат на ключ) — это один столбец или набор столбцов, которые уникально определяют строку в таблице и не содержат ничего лишнего.
📌 Главное:
- Это “чистая версия” суперключа — только нужные столбцы.
- Все значения в candidate key — уникальные и не NULL.
- В таблице может быть несколько candidate keys.
- Один из них потом выбирается как primary key.
👤 Пример:
Таблица:



Кандидаты на ключ:
Id
— уникален → candidate keyEmail
— тоже уникален → candidate keyCity
— повторяется → не может быть candidate key
Чем отличается от super key?
- Все candidate keys — это super keys.
- Но не все super keys — это candidate keys.
- Candidate key не содержит лишних столбцов — только то, что нужно для уникальности.
Вывод:
Candidate key — это один из возможных ключей, которые могут быть выбраны как primary key. Он:
- уникален;
- не содержит NULL;
- не включает ненужных атрибутов;
- и может быть не один в таблице.
ССЫЛКА НА ИНФОРМАЦИЮ

SQL ALTERNATE KEY
Alternate key (альтернативный ключ) — это любой candidate key, который не был выбран как primary key.
Главное:
- Таблица может иметь несколько candidate keys.
- Один из них становится primary key, остальные — alternate keys.
- Alternate key всё равно гарантирует уникальность.
- Он может содержать NULL, в отличие от primary key.
- Для его создания используют UNIQUE.
Пример:
В таблице Customer Information
есть такие уникальные столбцы:
Customer ID
PAN Number
Email Address
Все они — candidate keys, потому что могут уникально определить клиента.
Если primary key выбран как Customer ID
, то:
PAN Number
и Email Address
→ alternate keys
Как задать alternate key в SQL:
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
PanNumber VARCHAR(20) UNIQUE,
EmailAddress VARCHAR(100) UNIQUE,
ShippingAddress TEXT,
ProductID INT
);
Здесь PanNumber
и EmailAddress
— alternate keys, потому что они имеют UNIQUE и не выбраны как primary.
📌 Сравнение: Primary Key vs Alternate Key
Признак | Primary Key | Alternate Key |
---|---|---|
Уникальность | Да | Да |
NULL значения | Нет | Можно |
Назначение | Главный идентификатор | Альтернативный вариант |
Часть candidate keys? | Да | Да |
Сколько может быть? | Только один | Несколько |
Вывод:
Alternate key — это как “запасной вариант” для уникальности. Он:
- тоже важен;
- помогает защитить данные от повторов;
- используется, если есть несколько уникальных полей, но только одно из них — primary.



ССЫЛКА НА ИНФОРМАЦИЮ
