A data model should make current rules explicit while leaving a clear path for likely changes.
Write down entities, ownership rules, and lifecycle states before adding tables. Identify required fields, unique values, and how records relate across accounts.
Use constraints for invariants the database can enforce, and indexes for real query patterns. Keep derived data only when its update rules are clear.
As requirements change, use deliberate migrations and preserve data during transitions. Check both the migration and the application behavior that depends on the model.