Может ли столбец с ограничением PRIMARY KEY содержать повторяющиеся значения?

«Может ли столбец с ограничением PRIMARY KEY содержать повторяющиеся значения?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, не может. PRIMARY KEY — это ограничение, которое накладывает два строгих правила на столбец (или группу столбцов):

  1. Уникальность: Каждое значение должно быть уникальным. Дубликаты запрещены.
  2. Отсутствие NULL: Значение не может быть NULL.

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

Пример (SQL):

CREATE TABLE users (
    id INT PRIMARY KEY, -- Не может быть двух одинаковых `id`
    email VARCHAR(255) UNIQUE NOT NULL
);
-- Попытка вставить дубликат вызовет ошибку нарушения ограничения первичного ключа.

Альтернативы: Если нужны неуникальные значения, используйте обычный столбец или FOREIGN KEY. Для простого обеспечения уникальности без запрета NULL используйте ограничение UNIQUE.