我有以下三个表:
Form
-----------
formId INTEGER PK
name NVARCHAR(50) NOT NULL
Block
-----------
blockId INTEGER PK
name NVARCHAR(30) NOT NULL
orderInForm INTEGER NOT NULL
FormBlock
-----------
blockId INTEGER PK
formId INTEGER PK
存在多对多关系。一个块可以出现在多个表单上。orderInForm
是针对特定形式的。
在Block
表上,我想避免两个块orderInForm
在Form
.
我想我必须添加一个 UNIQUE 约束,但如果orderInForm
在Block
表上,我不知道该怎么做。
我需要搬到orderInForm
餐桌FormBlock
旁吗?
由于
orderInForm
是特定表格中特定块的位置,因此它应该是表中的FormBlock
列,而不是表中的列Block
。如果orderInForm
在Block
表中,则块在其所在的每个表单中都需要具有相同的位置。将列移动到 后,您就可以在表
FormBlock
的组合上创建唯一约束。(form_id,orderInForm)
FormBlock