Дизайн базы данных для университета. Вопрос по дизайну базы данных - PullRequest
0 голосов
/ 30 мая 2019

Я новичок в разработке баз данных.Я разрабатываю базу данных для отдела в университете.Нет никакой реляционной базы данных, и я должен проектировать с нуля.Я должен использовать Microsoft Access для базы данных.


Вот моя модель, а ниже приведено некоторое объяснение таблиц (сущностей).

A student can register in many programs.
A program can have many students.
A program can have many levels.
A program can have many courses.
A course can be in many programs
A student can take many courses.
A course can have many programs.
A course can have many sections.
A course can have many groups.
A course can be taken in many semesters.

(я не уверен, еслиЯ прав)


Мои проблемы:

Я не уверен, можно ли создавать составные ключи, которые я создал.Я не знаю, где я должен поставить оценку за каждый курс.Должен ли я создать новую таблицу?Я предполагаю, что это сущность, но как я могу связать оценку с номером студента и кодом курса.Я не знаю, как с соответствующими курсами и программами таблиц.

Не могли бы вы проверить эту модель и написать свою идею и решения. enter image description here

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

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

Кажется, ваш дизайн не совсем соответствует требованиям, которые вы описываете.

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

Вы не захватываете A program can have many levels, A program can have many courses или A course can be in many programs, A course can have many programs, A course can have many sections, A course can have many groups.

Чтобы ответить на ваши вопросы:

где я должен поставить оценку за каждый курс

Оценка является признаком участия студента в курсе. Так что это относится к student_course_registration. Отношения между этим участием и «семестром» не совсем четко представлены в определении вашей проблемы «можно взять», не предполагает, что студент может записаться на курс только на один семестр. Вместо этого он предполагает, что между курсом и семестром существует отношение «многие ко многим» (т. Е. Таблица соединений course_semesters).

is (it) OK to have composite keys 

Да, если вы уверены, что созданные вами ключи являются инвариантными.

I do not know how to related courses and programs tables.

Требования предполагают отношения «многие ко многим» (курс относится к 1 или более программам, программа имеет 1 или более курсов). Вы фиксируете это через таблицу соединений programs_courses с внешними ключами к курсу и программе.

0 голосов
/ 17 июня 2019

Во-первых, если места недостаточно, позвольте доступу предоставить первичные ключи для таблиц.Вы не контролируете коды курсов, коды семестров и т. Д., Когда университет перепроектирует там коды курсов, имеющие первичный ключ базы данных, что позволяет базе данных различать два курса с одинаковым кодом и другие подобные проблемы.Далее ваша структура таблицы в порядке, но добавьте таблицу типов оценок, включая такие типы, как «годен / не годен», «аудит» и «неполный».установить отношение один ко многим между таблицей типов оценок и таблицей регистрации курсов студентов.Добавьте столбец оценки типа (связанный с типами оценки) и столбец оценки (число) в таблицу регистрации курса студента.эти два столбца предоставляют простой способ представления оценки ученика, и оценка ученика естественным образом вписывается в таблицу регистрации курса ученика.
В этом решении вам нужно придумать код, который присваивает число (значение оценки), представляющее каждого учащегося.оценка по каждому типу курса.Например, в проходе / неудаче курс 0 не пройден, а 1 - пройден.Если вы не можете придумать такой код, просто замените столбцы gradetype и gradevalue ссылкой на таблицу StudentCourseRegistrationGrade, предназначенную для описания более сложных отношений.

...