Ted,
I think you need a fourth entity – lets call it CustomerQuestion. Each SurveyQuestion object could be associated to many CustomerQuestion objects. The association between SurveyQuestions_SurveyAnswers really needs to be between SurveyAnswers and CustomerQuestion. Each Customer could be association with many CustomerQuestions.
This new entity will keep track of the answers to a certain question by a customer.
Hope that helps,
Mike
**EDIT**
Ted, to provide some more detail regarding my suggestion
- SurveyQuestion is the master list of all questions, containing one object for each of the 158 questions
- CustomerQuestion contains an object for each of the questions that a given customer should answer. In other words, if I am a customer and should only answer 23 questions, then your app would create 23 CustomerQuestion objects. These would all be associated to my customer record and each would be associated with one SurveyQuestion object
- Associating SurveyAnswers to CustomerQuestion means that may answer to each of the 23 questions I should answer can be recorded
- With this structure you can
- maintain each SurveyQuestion only once (no duplication required)
- determine which questions a given customer should answer and which questions they have answered
- retrieve all answers for a given SurveyQuestion (across all customers)
These are all of the things I can think of that a survey app should be able to keep track of.
Hope that helps clarify.