π― Objective: imagine one two-column table per dimension β category β£ fact measure β if every such table makes sense, the star may be drawn.
β‘ Key Constraint: with multiple measures F={F1β,F2β,F3β}, all F must exist in all tables β one dimension that cannot carry one measure invalidates the whole star.
π Core
Column 1 = category β a candidate dimension A,B,C,D; each row is one member of it.
Column 2 = fact β the statistical numerical figure viewed from that category; the table is imaginary, never built.
One Fact Measure β draw one table per dimension; all four sensible βΉ FACT(F) with dimensions A,B,C,D is valid. (e.g. Num_of_Immigrants viewed by Year, Country, VisaType, SettlingState.)
Multiple Fact Measure β column 2 widens to F1β,F2β,F3β; the test is that every category table can display every measure. (e.g. Num_of_Employees and Total_Salary viewed by JobTitle, Month, EmploymentType, Gender.)
Failure verdict β if B carries only F1β,F2β, then F3β is not viewable from every dimension, so a single star over {A,B,C,D} with all three measures cannot be drawn β split the measure out or drop the dimension.
The grounding check β run it alongside the two-column tables
What does one cube row look like? β write four or five literal rows (Q1-2020 | Nike Shoes | Chadstone | $150,750); a row you cannot write is a grain you have not decided.
Where does the data come from? β name the operational artefact (transaction receipts; doctor records) β if no source record carries the measure, the star is undeliverable.
Where is the aggregate? β state what one source record contributes (each receiptβs total is summed; each doctor contributes 1 to Number_of_Doctors) β a count measure is easy to miss because no source column holds it.
What can be queried? β read two real questions back off the draft (βtotal sales of Nike Shoes in Chadstone in Q1-2020β; βhow many female GPs with >10 yearsβ experienceβ); a question the draft cannot answer means a missing dimension or attribute.
βοΈ Worked Failure β a measure that one dimension cannot carry
πΉ Sales with Total_SalesandNumber_of_Reviews
The three imaginary tables, and the verdict
Time | Total Sales | Number of Reviews β reviews accrue per quarterProduct | Total Sales | Number of Reviews β reviews are posted about a productLocation | Total Sales | irrelevant β a review is not tied to the shop
Rejected star β FACT(Timeβ,Productβ,Locationββ,Total_Sales,Number_of_Reviews) β every Number_of_Reviews cell would be unanswerable, because the review population is not divisible by location.
Accepted design β two stars β FACT1β(Timeβ,Productβ,Locationββ,Total_Sales)andFACT2β(Timeβ,Productββ,Number_of_Reviews) β each measure keeps only the dimensions it is genuinely viewable from.
π‘ Common Mistake:Keeping the dimension and leaving the measure NULL β a NULL here is not missing data, it is a grain error; the second measure lives at a coarser grain and needs its own fact β the Multi-Fact topic in Week 6.
β οΈ Common Mistakes
π‘ Testing only the dimensions you already like β the method is exhaustive by construction; one unchecked dimension is the one that fails.
π‘ Accepting a table whose column 2 is not numerical β a fact holds only numerical, aggregated values, so a descriptive column 2 means the βmeasureβ is really a dimension attribute.
π‘ Reading βirrelevantβ as βzeroβ β zero reviews at Chadstone is a claim about data; irrelevance is a claim about the model, and only the second one invalidates the star.
π§ Active Recall
Why does the method insist that all fact measures appear in all category tables?
Answer
Short answer: every dimension in a star joins to the same single fact row, so it must be able to qualify every measure that row stores.
Why:One fact, one grain β the factβs composite PK is the full set of dimension FKs, so each measure is simultaneously viewable from all of them. A measure missing from one category β means that measure is defined at a different grain and belongs in a separate fact table, not this one.
A draft star counts doctors by specialist area, gender and years of experience. Which source record supplies the measure, and what does one record contribute?
Answer
Short answer: the doctor records themselves; each doctor contributes exactly 1 to Number_of_Doctors in the cell matching their area, gender and experience.
Why:A count measure has no source column β nothing in the operational database stores βnumber of doctorsβ, so the grounding check is what reveals that the measure is manufactured by the aggregation. Experience is derived, not stored β the record holds Year_Graduate, so years of experience must be computed during staging before it can become a dimension key β Building Fact Tables.