Можно ли создать уникальный составной индекс в базе данных?
Ответ от нейросети
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 будут допустимы.
Ключевые моменты:
- Уникальный индекс может быть как по одному полю, так и по нескольким.
- В составном уникальном индексе уникальность проверяется по всей комбинации колонок.
- Отдельные значения в колонках могут повторяться, если комбинация отличается.
- Такой индекс помогает защищать целостность данных на уровне базы.
- Обычно его используют для бизнес-ограничений, которые должны быть гарантированы независимо от приложения.