A new column is more than just metadata. It is a contract between data and code. Add it wrong, and migrations fail. Add it right, and you extend your data model without breaking production.
Start by defining the column at the database layer. Choose the correct data type—INTEGER, VARCHAR, BOOLEAN—based on the exact use case. Enforce constraints early. Defaults and NOT NULL requirements prevent invalid states before your application sees them.
Next, handle migrations. In PostgreSQL, a simple ALTER TABLE ADD COLUMN works for small datasets. For large databases under heavy load, use concurrent-safe strategies. Apply columns with defaults in steps, backfill with controlled jobs, then add constraints after the data aligns. Minimize lock times and latency.