== Редактировать # 3 ==
Обновлена ERD с возможностью хранения ответов в свободной форме, а также привязана Patient_reponse_option к таблице question_option_link, так что ответ пациента будет сохранен с правильным контекстом опции (мы знаем, на какой вопрос ответ тоже). Я скоро отправлю несколько запросов.

== Редактировать # 2 ==
Обновлен ERD с данными формы

== Редактировать # 1 ==
Короткий ответ на ваш вопрос - нет, 400 столбцов - неправильный подход. В качестве альтернативы, проверьте следующую схему:

== Оригинал ==
Согласно вашему недавнему редактированию, вы захотите включить сводную таблицу. Сводная таблица разбивает отношение M: M между «пациентами» и «вариантами», например, у многих пациентов может быть много вариантов. Чтобы это работало, вам не нужна таблица с 400 столбцами, вам просто нужно включить вышеупомянутую сводную таблицу.
Пример схемы:
// patient table
tableName: patient
id: int(11), autoincrement, unsigned, not null, primary key
name_first: varchar(100), not null
name_last: varshar(100), not null
// Options table
tableName: option
id: int(11), autoincrement, unsigned, not null, primary key
name: varchar(100), not null, unique key
// pivot table
tableName: patient_option_link
id: int(11), autoincrement, unsigned, not null, primary key
patient_id: Foreign key to patient (`id`) table
option_id: Foreign key to option (`id`) table
С помощью этой схемы вы можете иметь любое количество «опций», не добавляя новый столбец в таблицу пациентов. Который, если у вас есть большое количество строк, разрушит вашу базу данных, если вам когда-нибудь понадобится выполнить команду alter table add column
.
Я добавил идентификатор в сводную таблицу, поэтому, если вам когда-нибудь понадобится обрабатывать отдельные строки, с ними будет проще работать, против необходимости знать значения Patient_id и option_id.