#ms-access #ms-access-2016
#ms-access #ms-access-2016
Вопрос:
Я пытаюсь связать таблицу «Subject» с таблицей «StudentSubject» на изображении ниже, но я получаю ошибку «Недопустимое определение поля ‘SubjectID’ в определении индекса или отношения». при попытке сделать это. Конечная цель состоит в том, что я хочу создать отношение «многие ко многим» между учащимся и предметом, такое, чтобы учащийся мог изучать много предметов, а предмет может быть изучен многими учащимися. Я уверен, что это основная ошибка, но я не нашел общего решения этой проблемы, и я устал от Access.
Я перетаскиваю «SubjectID» из таблицы Subject в SubjectID из таблицы StudentSubject и пытаюсь создать связь, устанавливая оба флажка для обеспечения ссылочной целостности. Возвращает ошибку.
Вот свойства для соответствующей таблицы:
И вот свойства для таблицы StudentSubject:
Свойства те же, поэтому я не уверен, почему это не работает. Это работает, если я не включаю ссылочную целостность, но тогда это отношение «один к одному», и я подумал, что оно должно быть «один ко многим», поскольку должно быть несколько студентов, изучающих один и тот же предмет.
Был бы признателен за любые советы по этой ошибке, спасибо.
Комментарии:
1. Идентификатор студента в таблице StudentSubject — определяется ли он как длинное целое число того же формата, что и поле AutoNumber, к которому вы его присоединяете?
2. Я пытаюсь связать его с SubjectID, а не StudentID, но да, все они имеют тип Long Integer.
Ответ №1:
Чтобы установить эту связь, ваша объединяющая таблица StudentSubject SubjectID не должна иметь тип autonumber, это должен быть только тип Number. Автоматический номер должен быть указан в SubjectID в таблице Subject
Комментарии:
1. Это работает! Но это все еще отношение «один к одному», есть ли способ сделать его «один ко многим»?
2. Удалите уникальный индекс на
StudentSubject.SubjectID
. @Lou3. Идеальный. Спасибо @Andre и CJtheLion, теперь это работает.