Я нахожусь в процессе создания моего первого сделанного на заказ приложения PHP / MySQL. Это своего рода приложение для тестирования транспортных средств.
Сам опрос строится с помощью запросов к базе данных, где я хранил вопросы, и с помощью цикла они выводятся на страницу, каждый из которых имеет уникальный идентификатор и имя.
Пока все работает. Я могу успешно отправить результаты, получить доступ к массиву $ _POST и увидеть ответы, хранящиеся в правильных ключах.
Сейчас я нахожусь на этапе, когда я хочу сохранить результаты.
Я намерен использовать таблицу для записи результатов, используя одну строку для ответа. Я планирую использовать следующие столбцы: survey_id, question_id (ключ из массива), question_answer.
У меня вопрос, как правильно хранить и увеличивать сам идентификатор опроса? Если бы я записывал опрос таким образом, чтобы одна строка содержала все результаты для одного опроса, я мог бы автоматически увеличивать поле survey_id, но когда я разрабатывал приложение, я не думал, что это будет самый надежный способ хранить результаты. Каждое обследование будет превышать 100 строк в каждом, и любые изменения в структуре опроса вниз по линии было бы сложно реализовать (я подозреваю).
Сначала я хотел создать отдельную таблицу для записи и увеличения идентификаторов опросов, а затем запросить их, чтобы заполнить опроса survey_id в таблице результатов.
Я хотел бы услышать лучшую практику для достижения этой цели.
Лучший способ сделать это — иметь три таблицы:
Surveys
вероятно, будет иметь идентификатор опроса, пользователь, который создал опрос, и так далее. Questions
будет иметь идентификатор вопроса, идентификатор опроса, для которого предназначен вопрос, и что задает вопрос. И, наконец, Answers
будет иметь ответы на вопросы, скорее всего, с идентификатором ответа, идентификатором вопроса, пользователем, который ответил на него и их ответ.
По сути, ваша оригинальная идея
создайте отдельную таблицу для записи и приращения идентификаторов опроса, а затем запросите ее, чтобы заполнить опроса survey_id в таблице результатов.
является правильным в этом случае.
Других решений пока нет …