How to Normalize Schema for Students and Courses – Database Design

database-designnormalization

1NF:

enter image description here

I am working on 2NF:

student (student_id, name, start, program)
course (coure_code, course_name, faculty, credits, time)
student_course(student_id, course_code, grade)

I am trying to achieve 3NF and BCNF.

I have identified what I believe are transitive dependencies: { credit } → { time }, and maybe { program } → { start }.

Does this make any sense?

Best Answer

I would not think that credits and time would really have anything to do with each other. One is essentially a count of how many credits they have accumulated, and the other relates to their status as a student. As far as the degree program and start date, those are also just data points to keep in the student's record. For more info on this topic, this article helped me. https://www.lifewire.com/transitive-dependency-1019760

In your course table, I would use professor_id to indicate who is teaching it, and have that table hold the faculty department information. I am a bit confused on what you are calling 'time.' Is it related to a specific class, or a student, or a course?

If you would like, I can help walk through your Entity Relationship Diagram. I have found the rubber duck method really helps clear things up.