2014-09-28 2 views
0

Я строю систему, в которой учащиеся могут просматривать свои результаты, как только они выходят. Предполагается, что система будет записывать отметки студента в течение периода обучения, когда они переходят к следующему году. Однако я не уверен в использовании внешних ключей в таблице Module_tests. У меня есть два внешних ключа в этой таблице, чтобы идентифицировать метку теста для конкретного ученика и конкретного модуля. Я думаю, эта пара внешних ключей является первичным ключом таблицы Module_tests. Это разумный дизайн? Есть ли более эффективный?Не уверен в использовании внешних ключей

Заранее спасибо

Student таблица имеет три колонки: StudentID, первое имя, фамилию. Таблица модулей состоит из трех столбцов: ModuleID, ModuleName, Year. В таблице Module_tests имеется пять столбцов: StudentID, ModuleID, Assignment, PracticalTest, FinalExam. (надеюсь, что это ясность как текст, поскольку я не могу прикрепить изображения в своих сообщениях)

ответ

0

Я думаю, вы должны добавить дополнительный столбец Module_tests, который может быть первичным и автоматическим приращением.

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

0

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

+0

Но Module_tests имеет еще три столбца. Я понимаю, что в совместной таблице есть два внешних ключа, иначе это таблица сущностей. – twobits

+0

Отношения могут иметь атрибуты. (некоторые эксперты не согласны) –