Sobes.tech
Назад к вопросам
Junior — Middle
61

Можно ли создать уникальный составной индекс в базе данных?

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

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

Определение:

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

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

Например, в таблице заказов нужно запретить два одинаковых заказа одного и того же пользователя на один и тот же товар в один день.

CREATE UNIQUE INDEX ux_orders_user_product_date
ON orders (user_id, product_id, order_date);

Такой индекс не позволит добавить вторую строку с тем же user_id, product_id и order_date.

Пояснение кода:

Код показывает создание уникального индекса по трём полям. База будет проверять каждую новую вставку или обновление: если такая же комбинация уже существует, операция завершится ошибкой. При этом записи с тем же user_id, но другим product_id или order_date будут допустимы.

Ключевые моменты:

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