Since questionnaires can always change and the questions themselves could be lengthy it seems silly to use questions as column names.
Is there any convention or proven method for storing a questionnaire within a database?
I was thinking of having a table with (Question-ID, Question) and then a second table for question-id and answer. But this solution might be too slow cause a third join would be necessary to join the questions with a particular user.
What’s wrong with a join? That’s the entire point of a relational database, a join.
Store questions in one table.
Store question answers in another table.
If answers are predefined those and are common among more then one question then store common answers in their own table and create another table that has a QuestionID with an AnswerID.
Don’t be scared of joins, they are part of relational databases. Without joins you’re merely dealing with flat files.