#303

Даты обновлений в таблицах

Хорошей привычкой при проектировании баз данных должна стать привычка добавлять поля createdAt и updatedAt к (почти) любой таблице и обновлять их соответственно при создании и при апдейте. Хорошие ORM это делают сами, но даже и без ORM важно чтобы эти данные у тебя были. Стоимость их хранения копеечная, а иной раз они крайне, крайне полезны. Не стесняйся показывать их пользователю.

Подводный камень с этими полями: updatedAt с точки зрения пользователя и с точки зрения системы — это разные даты. Системное время обновления — это когда и в самом деле запись поменялась в самой базе. Пользовательское время — это когда конкретно сам пользователь внес изменения. Человек часто по этим датам ориентируется.

Недавно мы кое-что обновляли во всех сущностях в базе компаниии. Легко, удобно, простой скрипт, спасибо вселенной за ORM. Надежно его протестировали, затем легким движением убили updatedAt для всех пользовательских данных. Написать и протестировать скрипт мииграции: три часа. Восстановить пользовательские даты из бекапов и накатить их на живую базу: два дня.

Поэтому: внимательно следи за теми апдейтами, когда updatedAt должен остаться нетронутым. Таких кейсов очень мало, поэтому проще всего оставить одно поле updatedAt, но быть внимательным. Да и вообще в целом проще всего быть внимательным.