好吧,我有一个有 4 列(、、、、id
)的表event_id
,其中 id 是 PK,是FK,我的问题是:group_id
isbn
event_id
group_id
我需要 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
在 an 中使用event_id
它就不能出现在另一个event_id
中,一个event_id
(比如说'1')可以重复相同ibsn
的时间,只要它需要每个group_id
我知道我多次重复这个问题,但这是一个棘手的问题,我想降低得到错误答案的机会
EDIT1:关于@Andomar 的答案,isbn 必须通过基数 (1,n) 1-isbn -> n-group_id 与 group_id 相关,并且答案中的结构不这样做