Разработать таблицу для хранения различных значений для одного объекта? - PullRequest
0 голосов
/ 05 ноября 2019

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

  1. student_id и каждый предмет в виде столбца и хранить одну запись для каждого учащегося.
  2. student_id, subject_name, счет в виде столбцов и храненияодна запись на предмет.

Мне нужна помощь в понимании плюсов и минусов каждого типа реализации.

Ответы [ 2 ]

3 голосов
/ 05 ноября 2019

Или таблица для Students:

StudentID - primary key
StudentName
etc.

и одна для Subjects:

SubjectID - primary key
SubjectName
etc.

и одна для Scores:

SubjectID 
StudentID
Score
etc. (might be you want date here)
PrimaryKey (SubjectID, StudentID, SemesterID?)

Подумайте о последней таблице - она ​​будет объединять сведения об ученике и предмете с учетом балла для каждого субъекта, но вам может потребоваться добавить здесь некоторую дату, или идентификатор экзамена, или что-то еще, поскольку один ученик может иметь баллы по тому же предмету в течение года (дляпример по математике).

0 голосов
/ 05 ноября 2019

Я думаю, вам понадобятся 3 таблицы:

  • students
  • subjects
  • scores

students и subjects являются основными таблицами. Они собираются предоставить student_id и subject_id для scores таблицы в качестве составного ключа. Вот проект реляционной базы данных.

Смысл разделения их на 3 таблицы состоит в том, чтобы избежать аномалий данных . Существует 3 аномалии:

  1. Вставить аномалию
  2. Удалить аномалию
  3. Обновить аномалию

Чтобы узнать больше об аномалиях данных: https://www.geeksforgeeks.org/anomalies-in-relational-model/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...