2025-11-04 · 5 min read
Modeling daily vs evening retail sessions
MySQLProductRetail
Retail teams often run two operational days on one calendar day. MSTORE’s daily and evening sessions taught me not to overload a single “today” column.
Treat session as a first-class domain concept: sales, bills, and payments hang off the active session. Settlement jobs close a session explicitly instead of guessing from timestamps.
UX matters as much as schema. Group-wise quantity entry with sticky totals keeps counters fast; CSV import/export must tolerate messy real-world group names.
When reporting, be explicit about which session a number belongs to. Ambiguous “yesterday” language is how ops and engineering start arguing past each other.