Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: database, primary key

Первичный ключ vs уникальный индекс — сходства, различия, когда какой применять?

Этот вопрос сравнивает первичные ключи и уникальные индексы в базах данных, их особенности и области применения.

Короткий ответ

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

Длинный ответ

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

Сходства:

  • Обеспечивают уникальность данных

  • Создают индекс для ускорения поиска

  • Используются для связей между таблицами

Различия:

  1. Первичный ключ (Primary Key)

    • Только один на таблицу

    • Не допускает NULL значения

    • Автоматически создает кластерный индекс (в некоторых СУБД)

    • Используется по умолчанию для внешних ключей

  2. Уникальный индекс (Unique Index)

    • Может быть несколько на таблицу

    • Позволяет один NULL (зависит от СУБД)

    • Создает некластерный индекс

    • Не используется автоматически для связей

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

-- Первичный ключ
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    ...
);

-- Уникальный индекс для email
CREATE UNIQUE INDEX idx_users_email ON users(email);

-- Уникальный индекс для пары полей
CREATE UNIQUE INDEX idx_users_phone_company ON users(phone, company_id);

Когда что использовать:

  • Primary Key: для идентификации записей, связи таблиц

  • Unique Index: для бизнес-правил уникальности, оптимизации запросов

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • Postgres

    Postgres

Ключевые слова

#database

#primary key

Подпишись на PHP Developer в телеграм

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.