- QUESTION_TYPE table: Assuming you have more than just Yes/No types of question. This would be a type table with PK/Identify column and be filled statically with the types of questions (Yes/No, multiple choice, True/False, etc). This is not necessarily needed, but might be nice to have.
- QUESTION table: This is the main question PK/Identity column, and QuestionText varchar column, along with FK into QUESTION_TYPE table. Also, a question number, and sub-question might be useful as columns (number=1, sub=part = A, or B or NULL).
- POSSIBLE_ANSWER table: This table would have PK/IDENTITY column, an AnswerText varchar column, and would house all the possible answers to all the questions. Could include "YES", "NO", "TRUE" and "FALSE", along with all the various multiple choice answers.
- QUESTION_TO_POSSIBLE_ANSWER table: This would be an associative (e.g. a relationship) table that hold FKs for QUESTION and POSSIBLE_ANSWER table. For example, a TRUE/FALSE question would have two entries in this table, one for True, sne for False each pointing to the FK of the QUESTION.
- QUESTION_ANSWER_FOLLOWUPS table: You said that based on the answer of one question you might follow-up with another question. To allow for that FLOW you might want to populate a static table that has three FK columns: QUESTION_ID, POSSIBLE_ANSWER_ID, NEXT_QUESTION_ID. In this way, given a question (QUESTION_ID), and an answer (POSSIBLE_ANSWER_ID) you have the next question to present to the user (NEXT_QUESTION_ID).
- ANSWERS table: You also need a table for recording answers supplied by users taking the questionares. I suspect an ANSWERS table, with FK into QUESTION and POSSIBLE_ANSWERS, and a FK into a QUESTIONED_USER table is all you need.
Of course, you probably want a good administrative UI for setting up all the questions, possible answers, and follow-ups.
TJR