0

VS2010 で Entity Designer を使用して SQL Server 2005 用のデータベースを構築します。「モデルからデータベースを生成」によって生成された SQL を介して実際にテーブルを構築しようとすると問題が発生します。テーブルはすべて正しく作成されていますが、外部キーの制約で鳴っています。

問題のエンティティは次のとおりです。

World:
  WORLD_ID [int32] (Primary Key)
  Name [String]

Zone:
  WORLD_ID [int32] (Primary key, FK on World.WORLD_ID)
  ZONE_ID [int32] (Primary key)
  Name [String]

Region:
  WORLD_ID [int32] (Primary key, FK on Zone.WORLD_ID)
  ZONE_ID [int32] (Primary key, FK on Zone.ZONE_ID)
  REGION_ID [int32] (Primary key)
  Name [String]

生成された SQL コードのこの部分が問題です。

-- Creating foreign key on [ZONE_ID], [WORLD_ID] in table 'Regions'
ALTER TABLE [dbo].[Regions]
ADD CONSTRAINT [FK_ZoneRegion]
    FOREIGN KEY ([ZONE_ID], [WORLD_ID])
    REFERENCES [dbo].[Zones]
        ([ZONE_ID], [WORLD_ID])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

エラーは次のとおりです。

参照テーブル 'dbo.Zone' には、外部キー 'FK_ZoneRegion' の参照列リストと一致する主キーまたは候補キーがありません。

この問題は、私の複数列の主キー (WORLD_ID+ZONE_ID+REGION_ID) で、ZONE_ID と WORLD_ID の両方が外部キーであり、具体的には WORLD_ID が実際には外部キーでもあるという事実と関係があると想定する必要があります。 FK のソースを含むテーブル。

ここで私の構造に何か問題がありますか?ゾーン -> リージョンから 1 つの関連付けを作成するだけでは問題でしょうか? 実際には、ワールド -> リージョンから 1 つとゾーン -> リージョンから 1 つの 2 つの関連付けを作成する必要がありますか?

ありがとう、ダン

4

1 に答える 1

0

価値があるのは、エンティティ図を最初から再構築しただけで、うまくいきました。最初の図にエラーがあったのか、それとも Entity Designer の不具合なのかわかりません。

于 2011-08-29T15:16:22.283 に答える