I have two models, Tutor and Student. Tutor can have multiple Topics he can cover, and Student can have multiple Topics he would like to learn. There are 10 possible topics (in string).
I am thinking of creating a Topic table, which contain topic strings. But it would create unnecessary repetition of these strings (making table heavy). So I create a Topic table which contains only topic key.
However, I am undecided about how to retrieve value:
First, I can create another lookup table, which maps a key to string value. This will result in an extra merging step.
Second, I can have a class function that belongs to Topic, that returns string from value.
Which way would be more efficient in my situation? Is there a better approach that I haven’t thought of?
Thank you.
It depends. IMO “topics” sounds like something that need managing, and may change.
If that’s the case, there should be a topic table, with an id, name, probably a description, etc. Both tutors and students would
have_manytopics:througha join table. Topics wouldbelong_toboth.There are several implementations options, including a polymorphic association of topics.