DataBase Analysis-соединительная таблица

Этот вопрос меня смущает, у меня есть информационная система колледжа, в которой таблица соединения между таблицей студентов и таблицей предметов (учебная программа), первичный ключ является составным ключом (StudentID, SubjectID), и оба они являются внешними ключами, но студент может не сдать экзамен и повторите тему, чтобы у нас был дубликат ПК, и нам нужно записать все данные. У меня есть два способа решить этот вопрос, но я не знаю, как лучше всего?

  1. Добавьте новый столбец в качестве первичного ключа вместо составного ключа.
  2. Присоединитесь к столбцу составного ключа Season Column и year, и составной ключ будет (StudentID, SubjectID, Season, Year). Я должен упомянуть, что мне не нужен этот составной ключ в качестве внешнего ключа.

Какой способ лучше для производительности и целостности БД?


person Ziad Salem    schedule 02.01.2014    source источник


Ответы (1)


Предмет и экзамен — это отдельные (если они связаны) понятия, поэтому не следует пытаться представить их в одной таблице. Кроме того, тот факт, что по данному предмету был проведен экзамен, не связан с фактом, что какой-либо конкретный студент сдавал этот экзамен. Разделите все эти понятия на свои таблицы, и модель станет более естественной, например:

введите здесь описание изображения

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


ПРИМЕЧАНИЕ. STUDENT_SUBJECT просто записывает тот факт, что учащийся записался на предмет, но не когда (какой год/семестр). Для хранения информации о семестре могут потребоваться дополнительные таблицы и более сложные отношения в модели.

ПРИМЕЧАНИЕ. В этой модели есть ромбовидная зависимость. Поскольку SUBJECT_ID был передан «сверху» (SUBJECT), вниз с обеих «сторон» (STUDENT_SUBJECT, EXAM), а затем объединен в «низу» (STUDENT_EXAM) ромба, студент не может сдать экзамен по предмету (предметам) он не зарегистрирован.

person Branko Dimitrijevic    schedule 03.01.2014
comment
это хорошо, я не упоминал об этом, но основная концепция, о которой я просил, - это составной ключ, и я понимаю, что это нормально. Большое спасибо Муш - person Ziad Salem; 11.01.2014