The schema didn’t match the data, and the only way forward was to add a new column.
A new column can be a scalpel or a sledgehammer. Done wrong, it adds weight, complexity, and risk. Done right, it unlocks features, enables faster queries, and keeps the model coherent. The difference is in how you design, migrate, and deploy.
First, decide if the new column belongs in the current table at all. Evaluate normalization, data types, and indexing. Ask if it will be used on critical read paths or large data scans. Every new column has a cost in storage and performance.
When adding a new column in production, always default to explicit migration steps. Use non-blocking ALTER operations when the database supports them. For large datasets, batch backfill to avoid load spikes. Keep the change compatible—deploy schema first, deploy code that uses it later.