У меня была несколько более сложная задача, по логированию изменений и подмен информации.
Решил так.
Для определения изменения использовал функцию crc32 ( доработанную под 64бит). Соединял все важные данные в одну строку получал значение crc32. Если это число уникально, то изменения были внесены. Изменения хранил одной строкой json_encode записи до изменения, по тем полям которые контролирую, в текстовом поле. таблица логов была помоему не сильно сложна id (INT), worker_id(INT), edit_id (INT), hash (INT)(UNIQUE), replased_data (TEXT).
Потребность данного действия появилась в момент когда "крысы" компании начали подменять телефоны и утаскивать клиента на себя и можно было понять кто и что поменял. Возможно не самое изящное решение, но оно выполнило свою задачу.