Вы не указали значение дат. Относятся ли они к (а) периоду, когда установленный факт был истинным в реальной жизни, или (б) к периоду, когда заявленный факт был признанным истинным владельцем базы данных? Если (б), то я бы никогда так не поступил. Переместите обновленную строку в архивную таблицу / журнал сразу же после завершения обновления. Если (а), то следующее утверждение сомнительно:
"факты устарели и больше не должны отображаться в пользовательском интерфейсе"
Если факт больше не «должен отображаться в пользовательском интерфейсе», то он больше не должен находиться в базе данных. Хранение таких фактов позволяет достичь только одного: ухудшить общие показатели для всех остальных.
Если вам действительно нужны эти исторические факты, соответствующие вашим требованиям, то есть вероятность, что ваши так называемые «устаревшие факты» по-прежнему очень важны для бизнеса и поэтому вообще не «устаревшие». Предполагая, что по этой причине в вашей базе данных очень мало «действительно устаревших» фактов, ваш дизайн хорош. Просто уменьшайте количество «действительно осуждаемых фактов», периодически удаляя их из оперативной базы данных.
(PS) Сказать, что у вас хороший дизайн, не значит, что у вас не возникнет никаких проблем. SQL крайне не подходит для элегантной обработки такого рода информации. «Временные данные и реляционная модель» - отличное обращение к предмету. Часто хвалят и другую книгу, написанную Снодграссом, но не мной. Это что-то вроде кулинарной книги с рецептами для решения этих проблем в SQL, о чем свидетельствует следующий разговор на SO об этой книге:
(В) «Зачем мне это читать?»
(A) «Потому что запрошенный вами триггер находится на странице 135».