«Какой подход лучше?»
«Лучшего» подхода не существует.Существует только подход, который достаточно хорош для вашего приложения.Если в вашей таблице будет несколько тысяч строк, это не имеет значения.Если в вашей таблице будет несколько миллионов строк, пространство может вызывать больше проблем.
Если ваша цель - показать пользователю, какие изменения произошли с вашим предметом, и он не увидит много активности, хранение всего в виде varchar может быть достаточно хорошим.Вы, вероятно, не хотите хранить строки для полей, которые не изменились.
Я часто использую подход APC.Таблица items_log
совпадает с таблицей элементов и включает в себя идентификатор истории, метку времени, действие (I, U или D) и пользователя, а также все столбцы строки элемента.Все поддерживается триггером.Есть также встроенные функции аудита Oracle, чтобы сделать аудит для вас.