Хранение ответов с множественным выбором формы параметров модуля в базе данных Microsoft Access

В настоящее время я пытаюсь решить, как создать реляционную базу данных для формы параметров модуля университета. Сначала вы вводите свой идентификатор студента, имя, фамилию и выбираете свою программу на получение степени, например, Управление персоналом, затем выбираете несколько модулей в форме, используя флажки, пока не будет выбрано общее количество кредитов за каждый семестр для каждой программы.

Однако, выбирая несколько модулей и будучи реляционной базой данных, я не уверен, как сохранить эти несколько ответов в таблице параметров ученика, как показано ниже.

В настоящее время у меня есть таблицы

Таблица: Имена поля ученика: ID ученика (первичный ключ) Имя Фамилия

Таблица: Программа программы (первичный ключ) Кредиты 1-го семестра (разные программы допускают разное количество кредитов) Кредиты 2-го семестра (разные программы допускают разное количество кредитов)

Таблица: Идентификатор модуля модуля (первичный ключ) Имя модуля Кредиты Обязательное условие

С последней таблицей я борюсь, так как после того, как модули выбраны из формы, они будут храниться в этой таблице и в настоящее время имеют это...

Таблица: Параметры студента Идентификатор студента (первичный ключ) Программа (ссылка на таблицу программ)

Однако я не уверен, в каких полях их нужно хранить, не перегружая их и все же имея ссылку на таблицу модулей, как показано ниже, которые хранятся по отдельности.

Должна ли моя таблица модулей иметь связь с таблицей опций студента, чтобы быть реляционной базой данных?

Как мне сохранить несколько выбранных модулей в форме опций для студентов?

Спасибо

1 ответ

Что касается вашей основной проблемы, я думаю, что описанный ниже дизайн базы данных должен быть достаточным:

Простое ERM решение проблемы

Вы не должны хранить оба модуля, выбранные студентом, и программу, в которой он зарегистрирован, в одной таблице. Вместо этого сделайте это, как описано выше.

  • Программа, в которую зачислен учащийся, должна быть просто внешним ключом в таблице ученика, поэтому она дает вам отношение "один ко многим" (хотя это очень важный момент, потому что это означает, что любой студент может быть зачислен только в одну программу! Если в вашей базе данных должна быть возможность зачисления одного учащегося в более чем одну программу, вам также необходимо иметь отношение "многие ко многим".).
  • Модули должны быть связаны со студентом через промежуточный стол (в данном случае я назвал его StudentModule), поэтому вы должны получить желаемое отношение "многие ко многим". Конечно, теперь вам нужно проверить с помощью кода, если студент еще не выбрал модуль (а также все другие мелкие и большие детали, которые есть...). Но это вам придется делать с любым дизайном базы данных, насколько я знаю.
  • Как видите, я также вставил промежуточную таблицу для связи между модулем и программой. Это потому, что я предполагаю, что один модуль подходит для нескольких программ. Связывая модули с программами таким образом, вы можете проверить такие вещи, как "может ли этот студент выбрать этот модуль", ...
Другие вопросы по тегам