2012-03-09 3 views
1

Итак, для моего курса по разработке программного обеспечения, как части более крупного проекта, нам необходимо реализовать базу данных с использованием HSQLDB. К сожалению, я еще не принял дизайн базы данных, и 3 из 5 человек в нашей группе отказались от курса, оставив эту часть для меня.SQL Database ER Diagram

В настоящее время, я пришел с этой ER диаграммы для нашего проекта: enter image description here

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

Я думаю, что диаграмма, которую я придумал, представляет это довольно хорошо; однако, я только начал об этом узнавать сегодня, поэтому я все еще немного шаткий, так сказать.

Есть ли что-нибудь, что выпрыгивает из-за этого, или части, которые можно улучшить?

P.s - Я только что заметил в таблице модулей, он содержит оценку, которая должна быть действительно в module_grade.

+0

Поскольку это HW, я задам несколько вопросов, которые могут помочь указать на возможные улучшения. Что произойдет, если учащийся (учетная запись AKA) не выполнит требуемый курс? Выходят они из школы? Как вы препятствуете студенту брать модуль для курса, в который они не участвуют? Вам нужно отслеживать семестры или кварталы? Какова цель объекта 'course_grade'? Почему «класс» должен быть тип данных с плавающей точкой против другого типа? Какую выгоду вы получите, имея сложный первичный ключ в сущности 'Module' (может ли эта проблема быть решена с помощью индекса)? – gangreen

+0

Мы планируем внедрить неудачи на нашей следующей итерации, только двое из нас работают над тем, что должно было быть проектом из 5 человек. Студенты добавляются в курсы по учетной записи администратора через отдельный интерфейс. Интерфейс для доступа к БД выполнен, у нас уже есть заглушка. Семестры, кварталы нет. Я забыл поместить десятичное число в курс_grade. Это общее число модулей_градов. Я понятия не имею, почему класс должен или не должен быть плавающим. Мне сказали перейти на десятичную. PK на модуле ничего не понимаю – Tanner

+0

Подождите немного дольше ... кто-то решит эту проблему для вас. ;) –

ответ

0

Таблица курса_знания абсолютно бесполезна в вашей модели. Вы должны сохранить информацию о классе в курсе_grade и module_grade, а не непосредственно в модуле. Подумайте о модуле как основных данных (так что вы хотите использовать для всех учеников), что означает, что вы не должны хранить в нем информацию о студенте.

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

Если вы используете SQL для доступа к своей модели, подумайте об изменении столбцов внешнего ключа в курсовом классе и module_grade, что-то уникальное. Это делает запросы более читабельными imo. Возможно, для курса класса переименования course_id в cg_course_id.

+0

Я думаю, что 'module_grade' должен иметь FK для' module' и 'account_course' (не для учетной записи). И PK - тройной '(number, course_id, acc_id)'. Это делается для того, чтобы студент мог зарегистрироваться и получить оценки только для модулей на курсах, которые он зарегистрировал. –

Смежные вопросы