Separate the instruction from the attempt
An assignment describes what the teacher expects. A submission describes what one student did in response. Keeping those concepts separate supports resubmissions, feedback history and multiple file uploads.
- Assignment
- Student submission
- Submission files
- Feedback
- Status history
Treat status as a workflow
Pending, submitted, redo and reviewed are not labels added for the UI. They represent meaningful transitions and should be validated on the server.
Design for reporting while the schema is small
If the product will eventually show progress, late work or completion rates, store timestamps and identifiers that make those questions answerable without reconstructing history later.