Thanks Rusty
Design has always come easy to me, and the original post did not take me too long - I type fairly fast, and I successfully used this design a couple of years ago.
The difference with a survey design vs an oder entry system is that the survey has the question component which is similar to the order entry system. But then you have the answer component which another layer from the other side. Of course, the M:M stuff adds complexity.
[tt]
Survey ----> Topic ----> TopicQuestion ----> Question
1:M 1:M M:1
Responder ----> Response ----> Question
1:M M:1
[/tt]
Handling the questions is a tough issue since with a generic design, you don't know what type of data type to expect. Restaurant Satisfaction Survey - numbers only, perhaps -- food great - (5) great, waiter/waiteress (5), cleanliness... But then you get the question text ones - Would you come back ? What did you order ?
Then take the same design and apply it to Check List (variation of a survey) - Desktop new build preflight - Got passwords y/n, Backup drive y/n, old asset tag - text, etc.
You can probably normalize the answer type I suppose, but it would add much more complexity and most likely hinder the analysis.
Using a simipler solution and use a text or variant field to accept the data would work when entering the data, but again, using various data types in one field may hinder the analysis.
There are simiplier solutions. My sister had to come up with a simiplier design for something similar a while back. I had the last laugh because she had to go back and modify the the design and the code again and again and again to accommodate the whims of management.
You bring out a good point about manditory answer or not. My actual design includes a bit more detail...
+ other info regarding the question being asked
I have a mandatory field flag Y/N, and also the owner of each question, topic and survey along with review date and date question changed or created, etc (for ISO certification) I skipped this deail because, from my perspective is not important to the design issue, and can be added later with minimal impact to the design.
Pyrrhus will have a bit to digest, and I hope he/she agrees that it is a better solution than 300 fields. He / she is the judge because they will have to create and support the database.
Time to take the dog for a walk...
Richard