Database Relations - Class - Students - Grades

Hi,
I'm putting an access database together where I can track students assignments and grades but Im having trouble deciding which is the best designing solution.

This is the starting point...
Tables:
-  Classess       (id, classname)
- Students       (id, classid)  
- Assigments (id, classid, date)

I want to assign each class assignments students will be doing during the year...This is the starting poing of what Im trying to achieve.
Class      Assignments          Students
-------      -----------------           --------------
Y7            Exam1                    Stu1 - A
                                                Stu2 - B
                Exam 2                   Stu1 - A
                                                 Stu1 - B
Y9            Exam 1
Y8            Exam1
                Exam 2

My first though is I cant store all the grades in the table students as it will potentially will have lots of duplicate records for each students for different assigments.

Any starting point will be appreciated! Thanks!
LVL 8
arcrossAsked:
Who is Participating?
 
hnasrConnect With a Mentor Commented:
but Im having trouble deciding which is the best designing solution.

The best design is to start with the final report handed to the student.
This topic lies under normalization.

Assuming each report's info as one record, list say four records.
Next try to normalize the table to lead you to the needed related tables.

Start a new access database.
Create a table listing all the fields you want to appear on a student report.
Ex.
StudentID, StudentName, Class1, Subject1, Grade1, Subject2, Grade2, InstructorName, ...

Without fully completing the above record field names, it will be hard to design the datadase, and even much harder to maintain it.

The way you are following now, may require a redesign when you come to the reporting phase. That is when  you need to unnormalize the data, in different related tables, to produce the report.

Search the net for normalizing databases.
Here are two results:
https://support.microsoft.com/en-us/kb/283878
https://msdn.microsoft.com/en-us/library/cc505842.aspx
0
 
Ryan ChongCommented:
My first though is I cant store all the grades in the table students as it will potentially will have lots of duplicate records for each students for different assigments.
you also need to think the scenarios in which same student retake the same assignment in different trimester?

as a quick start, you probably can have a db design like this:

- Courses        (id, coursename, status)
-  Classess      (id, courseid, classname, termyear, status)
- Students      (id, studentname, age, status)  
- Assigments (id, classid, date, status)
- StudentAssignment (id, assignmentid, studentid, mark, status)
0
 
arcrossAuthor Commented:
Thanks for your answer Ryan.
Im uploading a screenshot of what I have so farCapture.PNG
0
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
Ryan ChongCommented:
ok, so based on what you have, I may come out with something like this, but you may or may not adopt accordingly.

- Courses        (id, coursename, status)
-  Classess      (id, courseid, classname, termyear, status)
- Students      (id, studentname, age, status)  
- Assigments (id, classid, date, status)
- StudentAssignment (id, assignmentid, studentid, markingdate, mark, status)
- Grades (id, markrangebegin, markrangeend, grade)

You may probably need a View to join tables: StudentAssignment  and Grades so that we know what grade a student get for his/her assignment if you don't want to put the grade into table: StudentAssignment  

but I'm not sure how you define "Strength" for your classes and students.
0
 
arcrossAuthor Commented:
Thanks again :)

Strength will be the next step.

Each student for each assignment will have at least one strength
Let'say ...
Assigment 1 -
             Student 1 - Grade A  
                         Strengths 1  - Accurate description
                         Strength 2 -  Range of vocabulary
                               ... etc..
            Student 2 -  Grade B
                           Strengths 1  - Accurate description
                       
and so on...
0
 
Ryan ChongConnect With a Mentor Commented:
ok, perhaps this is a good start for you

- Courses        (id, coursename, status)
-  Classess      (id, courseid, classname, termyear, status)
- Students      (id, studentname, age, status)  
- Assigments (id, classid, date, status)
- StudentAssignment (id, assignmentid, studentid, markingdate, mark, status)
- Grades (id, markrangebegin, markrangeend, grade)
- Strengths (id, strength, status)
- StudentAssignmentStrength (id, studentassignmentid, strengthid)
0
 
arcrossConnect With a Mentor Author Commented:
Thanks,

Could you show me how would these tables be related on a diagram??
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.