Использование Entity Designer в VS2010 для создания базы данных для 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.
Что-то не так с моей структурой здесь?Разве это не нормально для меня, чтобы просто иметь одну ассоциацию, идущую из Зоны -> Регион, и на самом деле мне нужно иметь две ассоциации, одну из мира -> Регион и одну из Зоны -> Регион?
Спасибо, -Дан