Если вы хотите хранить меняющийся справочник — так храните его! Примерно как по первой ссылке:
Справочник (иерархично) -> Элементы справочника (уникальный код элемента, ссылка_на_справочник) -> Значения элементов во временном разрезе, т.е. версии по вашей терминологии (дата_начала, дата_окончания, реальное_значение, ссылка_на_элемент, + аудит по вкусу).
Вот последнюю сущность, собственно значения, и меняйте как вам угодно, имхо. Хотите — только значение (т.е. иногда это будет изменение «задним числом»), а хотите — заводите новую запись с датами.
В таком случае, запросом всегда можно получить реальное значение на любой момент времени.
Если встраивать же такие условия во множество запросов будет не очень удобно, то можно подумать про денормализацию — т.е. хранение ссылок на нужное значение элемента в агрегации.
Не совсем понятно, зачем вам текущие актуальные сведения — в чем профит? Ну т.е. если жесткий лоад — проще в памяти поднять, имхо, врядли там такая бесконечность справочников.