0
使用VS2010中的实体设计器为SQL Server 2005构建数据库。当我试图通过“从模型生成数据库”生成的SQL实际构建表时出现问题;这些表格都是正确创建的,但它抨击外键约束。SQL Server 2005 +实体设计器 - 外键约束错误?
有争议的实体都在这里布局:
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的来源。
这里的结构有什么问题吗?对于我只从一个区域 - >区域进行单一关联是不行的,事实上我必须有两个关联,一个来自世界 - >区域,另一个来自区域 - >区域?
感谢, -Dan