Vladimir Khorikov hits on a topic of particular interest:
On the front-end, the duration is represented as
1h 47m
. But how should we store it in our database? What data type should we use?We could keep the duration as a
1h 47m
string, just as we render it on the screen, but what if we later decide to change the string format? We might need to display it as1:47
or107 minutes
instead. Do we then parse all the existing strings and convert them into a new format?
I like the thrust of this article. Two things I think people forget about in data modeling are ledgers and events, instead trying to store the results of these. Ledgers and events can be slower—though there are things we can do to pre-calculate more user-friendly results and speed up the process—but they provide you auditability, flexibility in how you want to calculate and display the information, and the ability to correct errors over time.