大约有数百万在线学生有50个考试,一个人可能会或可能不会写一个以上的考试。一个人也可以多次写一次考试(重试)。
以下哪种解决方案对于这种情况更好,I am okay with a better solution than these two as well
选项1.将每个考试存储在一个表中:
主题1
+----------------+---------+
| student id | Marks |
+----------------+---------+
| 1 | 85 |
| 2 | 32 |
| 2 | 60 |
+----------------+---------+
主题2
+----------------+---------+
| student id | Marks |
+----------------+---------+
| 1 | 85 |
| 2 | 32 |
| 2 | 60 |
+----------------+---------+
如上所述,只有当某个人参加过该考试时,每个表都会有学生ID,并且如果他多次参加考试,则会多次出现学生ID。
选项2:
+----------------+---------+---------+
| student id | Subject | Marks |
+----------------+---------+---------+
| 1 | Subj1 | 85 |
| 2 | Subj1 | 32 |
| 2 | Subj1 | 60 |
| 1 | Subj2 | 80 |
| 3 | Subj2 | 90 |
+----------------+---------+---------+
包含单个表中的所有值。
在性能和存储方面,哪个更好。
我的各种阙
答案 0 :(得分:0)
我认为这里最好的是:
表STUDENT
包含有关学生的信息
表EXAM
包含有关考试的信息
表EXAM_TRY
参考STUDENT
和EXAM
表格以及字段DATE_OF_EXAM
和RESULT_OF_EXAM
表EXAM_TRY
视情况而定 - 日期字段索引(例如,您需要它来为审查员规划工作)