Tenho as três tabelas a seguir:
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
Existe uma relação muitos-para-muitos. Um bloco pode aparecer em vários formulários. orderInForm
é para uma forma particular.
Na Block
tabela, quero evitar que dois blocos tenham o mesmo orderInForm
em um arquivo Form
.
Acho que tenho que adicionar uma restrição UNIQUE, mas se orderInForm
estiver na Block
tabela, não sei como fazer.
Posso precisar ir orderInForm
para a FormBlock
mesa?
Como
orderInForm
é a posição de um bloco específico em um formulário específico, deve ser uma coluna naFormBlock
tabela, não uma coluna naBlock
tabela. SeorderInForm
estiver naBlock
tabela, um bloco precisaria ter a mesma posição em todas as formas em que estivesse.Depois de mover a coluna para
FormBlock
, você pode criar uma restrição exclusiva na combinação de(form_id,orderInForm)
naFormBlock
tabela.