Храните ответы в таблице sql с уникальным идентификатором и сохраняйте каждый ответ в столбцах

Я программировал уже год, но с тех пор я никогда не задавал вопросов. У меня проблема с архитектурой. У меня есть 78 вопросов и ответов, вопросы статичны в html-коде, и на все их можно ответить как yes, no, n / a, за исключением вопросов 40 и 41. Я сохраняю ответы в таблице, используя столбец для каждого вопросов. Например, ответы в таблице:

userid (unique) companyid (unique) q1 q2 q3 ... q100 

Таблица ответов будет иметь уникальную строку для каждой компании. Если пользователь редактирует вопросник, строка будет перенесена в таблицу истории, и новая строка будет вставлена ​​снова. Если я использую таблицу для вопросов или ответов, то для каждой компании у меня будет 78 или 100 строк данных с ответом (в этом случае ответ будет из выпадающего списка с да, нет и n / a в качестве единственных параметров ,

Я хотел бы знать, есть ли лучший способ реализовать это, поскольку мне нужно реализовать 3 разных SQL-запроса (опрос неполного, полного или опросника с по меньшей мере одним ответом, установленным как «Нет»), или вместо использования оператора для определения каждого вопросник должен добавить новый столбец со статусом и работать с кодом?

Я старался быть как можно более ясным, и любые рекомендации будут рассмотрены.

Вы должны нормализовать свои данные. Существует ряд уровней нормализации, но, как правило, это хорошая идея для 3-й нормальной формы для стартеров. Вот учебник по первым трем нормальным формам .

В вашем случае вы, вероятно, не хотите, чтобы вопросы были столбцами, потому что вопросы могут иметь такие атрибуты, как «текст вопроса» и «тип вопроса», и потому, что его вероятные люди захотят добавлять и редактировать вопросы позже.

Подумайте о создании таблицы «Вопросы», каждый из которых является записью в этой таблице.

Ответы могут быть другой таблицей с внешним ключом, указывающим на вопрос, на который дается ответ, и столбец для фактического ответа, например. Вероятно, внешние ключи также будут возвращены пользователю и компании.

Я предпочитаю создавать таблицу, в которой хранятся идентификатор пользователя, questionid и answerid (или сам ответ). Таким образом, вы можете легко вводить новые вопросы в систему без необходимости изменять структуру таблицы. Это также должно облегчить определение того, ответил ли кто-либо по крайней мере на один вопрос.

Есть некоторые потенциальные недостатки, просто зависит от ситуации.