@immelnikoff
Изучаю БД

Существуют ли в каких-либо СУБД такое понятие, как условный уникальный индекс?

Условный уникальный индекс мог бы:
1) обеспечивать уникальность значений в поле для каждого уникального значения в соседнем поле таблицы (решение: составной уникальный индекс);
2) обеспечивать уникальность значений в поле для каждого уникального значения каком-то поле родительской таблицы.
Например, имеются две таблицы:
5db93fc070443303286956.png
Мне нужно обеспечить уникальность поля addr в таблице Line, но не просто уникальность (адреса в разных городах могут же совпадать), а уникальность для каждого уникального значения в поле city_id таблицы Group. Это возможно?
  • Вопрос задан
  • 134 просмотра
Пригласить эксперта
Ответы на вопрос 1
Decadal
@Decadal
Вы можете сделать Composite Unique Key по полям addr, city_id или addr и group_id
Например:
ALTER TABLE Line ADD UNIQUE KEY `uk_address_city` (addr, group_id);


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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы