0

SQL は初めてで、SQL Server Managmetn Studio V11 を使用しています。

私の構造に問題があります:

たとえば、テーブルフルーツがある場合:

FruitID、名前、FamilyID、ColorID

テーブルファミリー

家族ID、名前

テーブルの許可された色

ID, FamilyID, ColourID
1,     1,     56
2,     1,     88
3,     1,     99
4,     2,     56
5,     2,     57

そのAllowed Colourため、特定の家族が持つことができる色をリストします. Fruitテーブルに入力された値を制限して、許可された色のみが果物に与えられるようにするにはどうすればよいですか?

4

1 に答える 1

1

AllowedColors に一意の制約を追加します。(そして、列「ID」を削除することを検討してください。)

alter table AllowedColors
add constraint your_constraint_name
unique (FamilyID, ColorID);

おそらく、これらの各列も宣言する必要がありますNOT NULL。お任せします。

これで、その列のペアを外部キー制約のターゲットとして使用できます。

alter table fruit
add constraint another_constraint_name
foreign key (FamilyID, ColorID) 
  references AllowedColors (FamilyID, ColorID);

また、AllowedColors.FamilyID から Family.FamilyID への外部キーも必要になります。

于 2013-07-11T15:29:49.137 に答える