Think of the middle table with records:
Code:
StudentId, SubjectID, Mark
1, 4, 79 ---------------> so student: John, Subject: Geography scores a Mark of 79
2, 4, 82---------------> so student: Otis, Subject: Geography scores a Mark of 82
3, 4, 67---------------> so student: Sally, Subject: Geography scores a Mark of 67
...
1, 2, 80---------------> so student: John, Subject: Algebra scores a Mark of 80
1, 9, 78---------------> so student: John, Subject: History scores a Mark of 78
Structure wise:
tblSubject
SubjectId
SubjectName
It seems elective /core depends on the Student and Subjects (if it is Student selectable)
So I'd add a field in the junction table
SubjectType <-------------------either core or elective depending on the student