Data Modeling
This is where DynamoDB diverges hardest from SQL. You don't normalise into one
table per entity — you start from your access patterns and design keys that serve
them, often packing every entity into a single table. Done right, you fetch a
parent and its children in one Query, no joins.
Done wrong, you get a table you can't query and a migration you can't run. So the trade-offs matter, and this section is honest about the cases where single-table design is the wrong call.
Start with single-table design — everything after it assumes that mental model.
Sketch the schema before you build it with the free
Single-Table Design tool — it turns a
list of access patterns into a PK/SK/GSI plan. Then
try DynoTable to model and browse these layouts against a live
table — and for the ad-hoc question your keys don't serve, its
SQL Workbench runs JOIN, GROUP BY, and aggregates
client-side.