Я бы сказал, что мои знания баз данных разумны, я использую для этого MySQL (InnoDb), а также проделал некоторую работу с Postgres. Так или иначе...
- У меня большое количество вопросов типа «да» или «нет».
- В одном и том же опросе может принять участие большое количество людей.
- Пользователь может выбрать любой вариант, и это будет записано в базе данных.
- Позже пользователь может передумать и поменять местами варианты, которые потребуют обновления сохраненных данных.
Мой текущий план хранения этих данных:
- POLLID, USERID, РЕШЕНИЕ, TIMESTAMP
Очевидно, пользовательские данные находятся в другой таблице.
Чтобы добавить их выбор, мне пришлось бы запросить, голосовали ли они раньше, и вставить, в противном случае обновить. Если я хочу увидеть результаты опроса, мне нужно будет перебирать все решения (хотя и проиндексированные части) каждый раз, когда кто-то хочет увидеть опрос.
Мои вопросы
- Есть ли более эффективный способ сохранить/запросить это?
- Будет ли у меня индекс POLLID или POLLID и USERID (может быть, просто уникальное ограничение)? Или другой?
- Дополнительный побочный вопрос: почему у меня нет возможности выбирать индексы HASH и BTREE для моих таблиц, как в Postgres?