I have a student model that already has too many fields including the name, nationality, address, language, travel history, etc of the student. It is as below:
class Student(Model):
user = OneToOneField(CustomUser, on_delete=CASCADE)
# Too many other fields
A student has much more information I store in other tables with a OneToOne relationship with the student model such as:
class StudentIelts(Model):
student = OneToOneField(Student, on_delete=CASCADE)
has_ielts = BooleanField(default=False,)
# 8 other fields for IELTS including the scores and the date
# and file field for uploading the IELTS result
# I have other models for Toefl, GMAT, GRE, etc that
# are related to the student model in the same manner through
# a OneToOne relationship such as:
class StudentIBT(Model):
student = OneToOneField(Student, on_delete=CASCADE)
has_ibt = BooleanField(default=False,)
# other fields
Should I merge the tables into one table or the current database schema is good?
The reason I chose this schema is because I was not comfortable working with a table with too many columns. The point is that for every student, there should be a table for IELTS and other models and, as a result, the number of rows in Student table is the same as the number of rows in the IELTS table, as an example.