The app's schema is normalized (Normalized Modeling): a genre lives once in books, so a change is a one-row update. Sales by genre and country then costs three joins on every query. A denormalized table copies descriptive attributes into each order line, so the same question needs one scan.

Denormalization trades storage and update cost for read speed. Repeating the genre on 137,944 rows is tolerable because analytical tables are rebuilt in bulk, not edited by an app, and column stores compress repeats to almost nothing (Columnar Compression). Its disciplined form is the star schema (Dimensional Modeling).