Edit: Please see updated post here
In my previous post, I had mixed up Results/Marks with GradeEntryForms/Grades. Since assignments are linked to Results/Marks, that’s the one we should be changing.
To the existing schema, I added a “RemarkExtraMarks” and “RemarkMarks” table (identical to the ExtraMarks and Marks tables). The “Results” table now has 2 more boolean columns “remark_requested” and “remark_begun.” Let me explain the addition of the 2 boolean columns.
Initially, I had only planned on adding one boolean column “remark_requested” to keep track of whether there are remarks or not. However, with this schema, we run into the problem of the system not being able to distinguish between original marks being completed and released and remark requested but not processed, versus remark being completed and released. We want students to be able to see their marks until the professor has actually started looking into the remark, so the original marks need to stay ‘completed and released’ until then.
Then, I also considered adding remark states to the existing “marking_states” column, but this would create a lot of UI complications (and a lot of bug potential!). We also wanted to avoid making a “remarking_states” column because it would create redundancy.
After discussing with Mike, we decided on adding 2 boolean columns – “remark_requested” and “remark_begun.” Let me walk through the scenarios:
1) Student has put in a remark request. At this point, “remark_requested” = true and “remark_begun” = false. Original grades are still completed and released to the student.
2) Professor starts to look into the remark. This unreleases the mark to the student, marking state changes to pending, and “remark_begun” = true.
3) Professor finishes the remark, re-releases mark, marking state changes back to complete, and “remark_begun” is still true. (“remark_begun” is still true because this helps us distinguish between stage 1 and stage 3)
1b) If a student decides to cancel his/her remark request (which he/she can only do before the professor starts stage 2) “remark_requested” = false, and nothing else changes.
Thank you Mike for helping me out with the schema!!