I am working on a new feature for my website which allows Members to rate Articles (if they so choose).
Below are two different designs. I would be curious to what everyone thinks.
Business Rules:
- For now, all Survey Questions will be Multiple Choice (i.e. Scale 1 to 5) and so there is only one value stored for each.
- One Survey (i.e. certain set of Survey Questions) is related to zero or more Articles
- One Survey will likely have maybe 5 Survey Questions but that can change
- Survey Questions should be “banked” and may be used on many Surveys and re-used at later dates
- One Article can have many Survey Questions
- One Survey Question can be related to many Articles
- One Member can rate many Articles
- One Article can be rated by many Members
- One Member can respond to many Survey Questions
- One Survey Question can be answered by many Members
Approach #1:
article -||------- 0<- survey_results ->0-------|- article_survey_questions
member -||--------0<- survey_results
article
- id
member
- id
article_survey_question
- id
survey_results
- article_id
- article_survey_question_id
- member_id
Approach #2:
article -||--------0<- article_survey_map ->0---------||- article_survey_question
member -||---------0<- survey_results ->0-----------||- article_survey_map
article
- id
article_survey_question
- id
article_survey_map
- article_id
- article_survey_question_id
survey_results
- article_id
- article_survey_question_id
- member_id
member
- id
I like Approach #2 as it seems more robust. Particularly, I think the concept of a “Survey Map” is important and great for managing things. (I got the idea from work.)
Thanks,
Debbie