Что такое первичный и внешний ключ в SQL

В реляционных базах данных первичный и внешний ключи играют важную роль в организации данных и установлении связей между таблицами. Они обеспечивают целостность данных и помогают избегать дублирования.

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

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

Особенности первичного ключа

  • Уникальность значений в столбце.
  • Не допускает NULL-значений.
  • В таблице может быть только один первичный ключ.

Пример использования

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL
);

В этом примере столбец id является первичным ключом, автоматически увеличивающимся на единицу для каждой новой записи.

Внешний ключ

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

Особенности внешнего ключа

  • Создает связь между таблицами.
  • Поддерживает целостность данных.
  • При изменении или удалении записей в родительской таблице можно задать каскадные действия (CASCADE, SET NULL и т. д.).

Пример использования

CREATE TABLE orders (
    id SERIAL PRIMARY KEY,
    user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
    amount DECIMAL(10,2) NOT NULL
);

В этом примере столбец user_id является внешним ключом, который ссылается на id в таблице users. Если запись из users будет удалена, связанные записи в orders также удалятся.