SQL Server 2008 Express - Получено «Столбцы не соответствуют существующему первичному ключу или ограничению UNIQUE», несмотря на устанавливаемые ограничения - PullRequest
0 голосов
/ 30 марта 2011

У меня есть следующие таблицы

ModuleClass ( <ModuleID>, <Section>, <Number>, StartDate, EndDate)
ClassEnrollment ( <ModuleID>, <Section>, <Term Code>, <User Name>, Role)

Теперь сущность ModuleClass может иметь более одной регистрации, поэтому существует отношение от 1 до M. Однако при попытке определить FK между ModuleClass и ClassEnrollment, используя ModuleID и Section, я получаю

Столбцы в таблице ClassEnrollment do не соответствует существующему первичному ключу или УНИКАЛЬНОЕ ограничение

Однако и ModuleID, и Section участвуют в ограничении PK.

(я использую визуальные инструменты для баз данных для создания таблиц и определения отношений).

Как лучше представить эти отношения?

Ответы [ 2 ]

2 голосов
/ 30 марта 2011

Это выглядит как первичный ключ ModuleClass - это составной ключ, состоящий из трех столбцов (ModuleID, Section, Number). Чтобы установить ссылку на внешний ключ для этой таблицы, необходимо настроить таргетинг на все три столбца.

Чтобы настроить таргетинг на все три столбца, вам необходимо включить столбец «Число» в таблицу ClassEnrollment. Тогда вы можете установить

FOREIGN KEY (ModuleID, Section, Number) 
  REFERENCES ModuleClass (ModuleID, Section, Number)
0 голосов
/ 30 марта 2011

Вы уверены, что не указали отношения ФК задом наперед? Это простая ошибка с использованием визуальных инструментов с графическим интерфейсом. Вы должны убедиться, что каждая строка в ClassEnrollment ссылается на одну строку в ModuleClass.

Если вы укажете отношение в обратном направлении, вы получите именно ту ошибку, о которой вы сообщили.

...