Что такое Primary Key (первичный ключ) в реляционных базах данных?

«Что такое Primary Key (первичный ключ) в реляционных базах данных?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Primary Key (PK) — это ограничение (constraint), которое однозначно идентифицирует каждую строку (запись) в таблице реляционной базы данных.

Основные свойства:

  1. Уникальность: В таблице не может быть двух строк с одинаковым значением первичного ключа.
  2. Отсутствие NULL: Поле (или комбинация полей) первичного ключа не может содержать значение NULL.
  3. Стабильность: Значение PK, как правило, не должно изменяться в течение жизни строки.

Практическое применение:

  • Гарантия целостности данных.
  • Создание кластеризованного индекса (в большинстве СУБД), что ускоряет поиск по PK.
  • Использование в качестве Foreign Key в связанных таблицах для установления отношений.

Пример в SQL и JPA:

-- SQL: Создание таблицы с первичным ключом
CREATE TABLE users (
    id BIGINT PRIMARY KEY, -- Простой первичный ключ
    email VARCHAR(255) UNIQUE NOT NULL
);
// Java (JPA/Hibernate): Аннотация @Id
@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id; // Поле первичного ключа

    private String email;
    // ... другие поля и методы
}

PK может быть простым (одно поле) или составным (несколько полей, аннотация @IdClass или @EmbeddedId).