Ну, у меня есть таблица с 4 столбцами (id
, event_id
, group_id
, isbn
), где id – ПК, event_id
и group_id
– FK, и моя проблема:
Мне нужно, чтобы номер isbn был уникальным для каждого event_id
, позвольте мне привести несколько примеров некоторых строк, которые должны быть возможны, а некоторые — нет:
id | event_id | group_id | isbn
(1,1,1,123) ok
(2,1,2,123) ok
(3,1,4,123) ok
(4,1,7,1234) ok
(5,2,8,123) NOT OK, the 'isbn' must be unique for event_id('123' was already used in the first row with event_id = 1)
group_id
появляется только один раз для каждого event_id
, но если я сделаю уникальное ограничение с 3 столбцами, я смогу повторить isbn, просто изменив event_id
, и я этого не хочу, как только isbn
используется в event_id
это не может появиться в другом event_id
, event_id
(скажем, «1») может повторять одно и то же ibsn
столько, сколько потребуется для каждого group_id
Я знаю, что повторял проблему несколько раз, но это сложный вопрос, и я хочу снизить вероятность получения неправильных ответов.
EDIT1: об ответе @Andomar isbn должен быть связан с group_id кардинальностью (1,n) 1-isbn -> n-group_id, а структура в ответе не делает этого