Self-Assessment Quiz: Data Modeling
Twenty questions. Aim for 16 or more. This chapter is on every learning path; treat 18 as the bar before Chapter 19.
Question 1
The strongest reason to build a dimensional model rather than copying source tables is:
- A. Query performance
- B. Storage efficiency
- C. Semantic stability — a stable interface over an unstable source
- D. Regulatory compliance
Question 2
Normalization optimizes for:
- A. Read throughput
- B. Update integrity
- C. Storage compression
- D. Join elimination
Question 3
Kimball's four steps, in order, are:
- A. Choose tables, choose keys, choose measures, choose grain
- B. Select business process, declare grain, identify dimensions, identify facts
- C. Declare grain, select business process, identify facts, identify dimensions
- D. Identify facts, identify dimensions, declare grain, select business process
Question 4
Step 1 selects a business process rather than a report because:
- A. Reports change too often to model
- B. A process generates the data for every question about that activity, including unasked ones
- C. Business processes are easier to name
- D. Reports do not have measurable events
Question 5
The grain must be declared before choosing dimensions and facts because:
- A. It determines the table name
- B. It determines which dimensions are available and which measures are valid
- C. It is required by most warehouse engines
- D. It sets the partitioning scheme
Question 6
Why choose the finest grain the source supports?
- A. Finer grain compresses better
- B. You can aggregate up but never disaggregate
- C. Query engines prefer many small rows
- D. It reduces the number of dimensions needed
Question 7
on_hand_units_eod (inventory at end of day) is:
- A. Additive
- B. Semi-additive — not summable across time
- C. Non-additive
- D. A degenerate dimension
Question 8
Why does the chapter say semi-additive measures are dangerous in BI tools?
- A. BI tools cannot read integer columns
- B. Nearly every BI tool defaults to SUM for numeric columns
- C. They require a bridge table
- D. They cannot be indexed
Question 9
An accumulating snapshot fact table:
- A. Has one row per event, appended only
- B. Has one row per entity per period
- C. Has one row per entity, updated in place as milestones complete
- D. Has no measures, only keys
Question 10
The decisive reason for surrogate keys in dimensions is:
- A. Integer joins are faster
- B. Type 2 history makes the natural key non-unique
- C. Source keys are too long
- D. They are required by dbt
Question 11
Which is the deliberate exception to the surrogate-key rule in this book?
- A.
dim_customer - B.
dim_product - C.
dim_date - D.
dim_promotion
Question 12
A customer moves from Colorado to Oregon. With a Type 2 dimension, an order placed before the move reports under:
- A. Oregon, because that is the customer's current region
- B. Colorado, because the order joins to the row valid at that time
- C. Both, producing two rows
- D. Neither, until the dimension is rebuilt
Question 13
A conformed dimension is one that:
- A. Has been normalized to third normal form
- B. Is shared identically across multiple fact tables
- C. Contains only Type 1 attributes
- D. Has a surrogate key
Question 14
The bus matrix has:
- A. Fact tables down the side, measures across the top
- B. Business processes down the side, dimensions across the top
- C. Source systems down the side, target tables across the top
- D. Dimensions down the side, SCD types across the top
Question 15
A factless fact table is characteristically used to:
- A. Store measures too large for a normal fact table
- B. Count non-events — things that did not happen
- C. Bridge many-to-many relationships
- D. Snapshot inventory levels
Question 16
A bridge table must carry:
- A. A surrogate key
- B. An allocation weight that sums to 1.0 per fact row
- C. Validity dates
- D. A degenerate dimension
Question 17
Revenue doubles when a promotion dimension is added to a report. This is:
- A. The chasm trap
- B. The fan trap
- C. A semi-additive error
- D. A null foreign key
Question 18
Joining two fact tables through a shared dimension without aggregating first produces:
- A. The fan trap
- B. The chasm trap
- C. Missing rows
- D. A snowflake schema
Question 19
Which mistake does the chapter call the most common and hardest to argue against?
- A. Mixed grain in one fact table
- B. Null foreign keys
- C. Snowflaking by default
- D. A model that mirrors the source
Question 20
Kestrel keeps both fct_order_item and fct_order because:
- A. Line grain is too fine for most queries
- B. Order-level measures like shipping cannot be honestly allocated to lines
- C. The BI tool requires two tables
- D. It halves storage cost
Answer Key
1. C — §6.1. Performance is the weakest of the three reasons. The refactor callout is the argument: one file changed, forty-one downstream objects untouched.
2. B — §6.2. If a value lives in one place, changing it is one write and cannot produce inconsistency. Analytics does not need that guarantee because it does not accept user writes.
3. B — §6.3. The order is the method.
4. B — §6.3. Model the process and you get the reports for free; model the report and you get one report and a request for another next week.
5. B — §6.3. At order-line grain you can attach product; at header grain you cannot. And
shipping_cost is invalid at line grain without an allocation rule.
6. B — §6.3. A summary table saves nothing worth the questions it forecloses.
7. B — §6.4. 400 units Monday plus 400 Tuesday is 400 units, not 800.
8. B — §6.4, ⚠️ callout. Nothing errors; the chart renders; the number is roughly thirty times too large for a monthly view.
9. C — §6.4. The deliberate exception to append-only, and it earns it by making lag analysis a subtraction instead of a self-join.
10. B — §6.5. Which is why surrogate keys and slowly changing dimensions are always discussed together.
11. C — §6.5. YYYYMMDD as an integer. Safe because dates, uniquely, never change their history.
12. B — §6.5. Which is almost always what the business means by "revenue by region."
13. B — §6.6. Without them you have data marts that cannot talk to each other.
14. B — §6.6. Each row is a fact table; each column is a dimension; the shared columns are your conformed dimensions.
15. B — §6.7. Which eligible products were never ordered during a promotion — unanswerable from an order fact table, because non-events leave no rows.
16. B — §6.7. And the weight sum must be tested, or two promotions on one line double the revenue.
17. B — §6.9. A one-to-many join fanning out fact rows.
18. B — §6.9. A Cartesian product; numbers inflate by orders of magnitude. Aggregate to a common grain first.
19. D — §6.9. Hardest to argue against because the copy works — until the source refactor.
20. B — §6.8. An allocation rule is a business decision that will be revisited; better in one named place than embedded in a column everyone sums.
Topic map
| Missed | Reread |
|---|---|
| 1, 2 | §6.1–§6.2 — why model, and what normalization is for |
| 3, 4, 5, 6 | §6.3 — the four steps |
| 7, 8, 9, 20 | §6.4 — fact tables and additivity |
| 10, 11, 12 | §6.5 — dimensions, keys, and SCDs |
| 13, 14 | §6.6 — conformed dimensions and the bus matrix |
| 15, 16 | §6.7 — the seven patterns |
| 17, 18, 19 | §6.9 — the common mistakes |