Это плохая практика иметь таблицу БД, содержащую данные, рассчитанные из других таблиц? - PullRequest
0 голосов
/ 18 апреля 2019

Я занимаюсь разработкой сайта викторины. Моя схема БД такова, что когда пользователь завершает тест, все его ответы сохраняются в таблице, называемой откликами. Я могу вернуться и рассчитать оценку для теста на лету по запросу БД. Однако мне было интересно, будет ли эффективнее хранить счет для каждой попытки теста в новой таблице для более быстрого поиска, так как мне придется выполнить некоторую постобработку моего запроса таблицы ответов (т.е. выполнить цикл по каждому тесту и затем перебирая вопросы в каждой викторине, чтобы получить оценку).

Это плохая практика для хранения данных, которые, в конечном итоге, могут быть получены из запроса?

Вот изображение соответствующей части моей схемы:

Schema

Спасибо

Martyn

1 Ответ

1 голос
/ 18 апреля 2019

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

Вот соответствующий пост о создании материализованных представлений.

https://dba.stackexchange.com/questions/86790/best-way-to-create-a-materialized-view-in-mysql

Чтобы использовать эту возможностьвам нужно будет выполнить собственные запросы.Большинство других типов баз данных поддерживают материализованные представления напрямую, поэтому вам просто нужно проверить документацию о том, как создать материализованное представление для вашей базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...