Хранение “полученных” значений по сравнению с вычислением их на извлечении

Когда у Вас есть значения, который только зависит от одного или нескольких других полей +/-, константы (скажите, что розничная цена и сниженная цена), лучше сохранить те значения также или вычислить их "на лету" при получении данных?

7
задан Matteo Riva 21 April 2010 в 07:22
поделиться

2 ответа

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

Тем не менее, есть исключения, которые не связаны с производительностью базы данных, которые стоит рассмотреть.

  • Когда сложно вычислить значение (например, какая-то сложная математическая функция), имеет смысл сохранить (вы можете представить столбец как «последнее вычисленное значение»).
  • У вас могут быть входные данные, которые меняются со временем, напримерПлата выводится из ставки комиссии, но ставка комиссии сохраняется как единое значение в таблице конфигурации. Возможно, вы захотите записать комиссию, потому что исторические комиссии будут рассчитываться только на основе текущей ставки комиссии. В качестве альтернативы вы можете сохранить скорость по времени, чтобы обойти эту проблему.
  • Если производное значение может быть переопределено пользовательским вводом или каким-либо другим процессом, то снова имеет смысл сохранить. В качестве альтернативы вы можете смоделировать это с двумя состояниями «РАСЧЕТАН» и «ПЕРЕПРЕТЕНДЕН», чтобы вы сохраняли значение только в последнем состоянии.
6
ответ дан 6 December 2019 в 15:19
поделиться

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

Очевидно, что «достаточно хорошо» и «достаточно большой» - это квалификаторы, которые означают что-то только в данном контексте. Как бы то ни было, расчет розничной цены / цены со скидкой кажется слишком дешевым и простым для выполнения, чтобы оправдать введение избыточного столбца в большинстве (очевидно, не во всех) случаях.

8
ответ дан 6 December 2019 в 15:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: