CM, as you can imagine - in fact, “imagine” is a keyword here - comparing can take several forms. You can look at a student record and see a list of assignments with some “completed” checkbox, or you can select an assignment and see an associated list of students who have that assignment, along with their completed indicator.
Compare could also mean seeing a sorted list of students where rank is based on the number of completed assignments.
My suggestion is, before you begin, to sketch on paper what you want to see on the screen. Then make a list of the desired functionalities; add/delete assignments, complete/incomplete indicator, perhaps the date of completion, etc. Then you work towards those goals - like building a building one floor at a time.
One feature that was more complex than users - in the olden days - realized was having the ability to both see the individual student’s assignments and also see all the students who had a specific assignment. In other words, “These assignments belong to this student.” and “These students belong to this assignment.” Accomplishing that would require a third file with student/assignment parings. From that file, you could select all the assignments for a student or all the students for an assignment.
Your situation adds a third element - completed or not. This is a new world for me but I imagine a third file that holds studentID, AssignmentID, and Completed status.
But one doesn’t want to go too far down the “How” road without a more specific “What” map.
The difference between my vision and Bruce’s is he seems to use the omega feature that is often used for items in some invoice designs. The student is the invoice itself and the line items (products) are the assignments. The “price” is the completion status of those assignments. That style requires you to predetermine the maximum number of assignments ahead of time. Nothing wrong with that; it’s one way to go. My vision allows just adding students, as many as you want, and just adding assignments, as many as you want. The databases grow in records, not in fields.
This is an important concept. When people would migrate from a spreadsheet to Panorama, they were used to seeing fixed items, categories for costs, and expenses, vertically down the left side of the worksheet. The monthly amounts of those items were shown across the top of the worksheet. So they’d design their panorama datasheet to look the same way. Problem was, they had to constantly go into the design and add new fields as time continued. It was better to have the categories as fields and add records for the dates. That way the information could grow without having to constantly change the design. Sometimes I’d see a database with nearly 100 fields - and growing - when it could have only 15 fields and 100 records. That style makes a much happier database.
So think about how you want this to grow over time. You want to be adding records, not adding fields.
That’s my story and I’m sticking to it.
PS: Yes, I skipped over all the “This is how you relate the student/assignment/completion status.” That’s because it’s a little work and I’m not sure you are asking to see it both ways (from the student’s point of view and the assignment’s point of view). If you are talking about 20 students and 10 assignments, and you don’t care about looking back from the assignment to the students, Bruce’s suggestions are much simpler to implement.