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