Проблема с базой данных - ученик дважды регистрируется в одном и том же классе. Как это остановить Access 20007 - PullRequest
0 голосов
/ 05 августа 2011

Я создаю фиктивную базу данных, и у меня есть таблица student, таблица ссылок student_class и таблица class. Как я могу сделать так, чтобы ученик не мог быть зарегистрирован в одном классе дважды?

Пример: StudentID 21 и classID 34 могут быть введены X раз в таблице связей.

Таблицы также рассчитаны на 3NF.

Ответы [ 3 ]

1 голос
/ 05 августа 2011

В вашей таблице ссылок student_class (иначе называемой составной таблицей) сделайте оба значения, StudentID и ClassID, первичными ключами. Таким образом, эта таблица будет иметь 2 столбца, которые являются составными первичными ключами, а также внешними ключами для связанных таблиц. Имеет ли это смысл?

1 голос
/ 05 августа 2011

Таблица student_class, вероятно, имеет как минимум два столбца.Один будет внешним ключом первичного ключа у студента;другой будет внешним ключом первичного ключа в классе.Вам необходимо ограничение первичного ключа для этой пары столбцов.

Например, если student_class имеет два столбца student_id и class_id.,.

  • Откройте таблицу student_class в режиме конструктора.
  • Выберите оба этих столбцов.
  • Щелкните значок ключа.

Это должно сделать это.

1 голос
/ 05 августа 2011

У вас может быть таблица, в которой указано, какие учащиеся зачислены в какие классы, с именем students_classes.Если вы создадите составной первичный ключ для этой таблицы, содержащей student_id и class_id, то будет невозможно, чтобы база данных содержала ученика в одном и том же классе дважды.

Я должен отметить, что вы не должны имеет столбец первичного ключа с идентификатором автоинкремента в этой таблице (я думаю, что Access любит добавлять его по умолчанию, поэтому, если это так, вам, возможно, придется его удалить).Если вы это сделаете, вы все равно можете получить дубликаты, если все три являются частью ключа.Пример:

ID   student_id    class_id

113          1           2
114          1           2

Наличие поля ID позволяет вам дважды зачислить учащегося в один и тот же класс.

...