All posts Analytics

Fact and Dimension Walk Into a Tea Stall

Reena's notebook is bursting with repetition. Her cousin wants the data organised the proper way before he comes on Sunday. Two strangers know exactly how to split it.

Rani C Rani C 7 min read
Stylised illustration of a tea stall scene — Reena stands behind her counter looking down at a thick open notebook with redundant rows and loose pages spilling out, a question mark over her head; a man with a long receipt scroll trailing down to the floor approaches from the left, a woman with a neat stack of three books labelled CUST, ITEM, DATE approaches from the right.

It’s a quiet morning. The kettle is just starting to hiss. The ceiling fan turns slowly above. Reena is at her counter, and her thirty-day notebook is open in front of her — bursting with paper. Loose pages stick out from every edge.

Each line is a transaction: Mon, Asha, Ginger Tea, 1, ₹10. Mon, Asha, Samosa, 1, ₹15. Mon, Kumar, Plain Tea, 1, ₹8. Wed, Asha, Ginger Tea, 1, ₹10… “Asha” appears thirty times. “Ginger Tea” appears two hundred times. Every single date is rewritten on every single line.

Her cousin runs an accounting practice in town. He has told her — Reena, don’t bring me that notebook on Sunday. Split it the proper way before I come. She has no idea what “the proper way” means. She scratches her head with the chalk.

She mutters, “He says the proper way. What is the proper way? Each row says everything. Every customer’s name. Every item’s name. Every day’s date. How do I split that?”

The awning rustles.

A man steps in under the awning — busy, cheerful, and behind him on the floor unspools a long, long scroll of paper receipts. The scroll trails out the door. He carries the top of it in his right hand. He sets a corner on the counter and says, “I am Fact. I keep every transaction. Every glass of tea. Every samosa. Each one is a row. Many rows. Just numbers and codes.”

A woman steps in behind him — calm, holding a small neat stack of three thumbed books, each with a chalked spine label: CUST, ITEM, DATE. She sets them down beside the scroll and says, “I am Dimension. I keep the descriptions. Who is Asha? What does Ginger Tea cost? Which day is Apr 1? My books are short — only a handful of entries each — but each entry is wide and full of detail.”

Reena looks at them, looks at her overstuffed notebook, and says, “Which one of you do I need?”

They reply in unison: “Both.”

Fact tries first

Fact pulls the notebook close. He takes a pencil and starts copying — but only the minimum. He gives every customer a number. Asha is 1. Kumar is 2. Ravi is 3. He gives every item a number. Ginger Tea is 1. Samosa is 2. Plain Tea is 3. He numbers the days too. Mon is 1. Wed is 2. Thu is 3.

Then he writes the rows on his own paper:

1, 1, 1, 1, 10 1, 2, 1, 1, 15 2, 3, 1, 1, 8 1, 1, 2, 1, 10 3, 2, 2, 2, 30 1, 1, 3, 1, 10

He says, “Customer code, item code, day code, quantity, amount. Six rows for six transactions. Many rows, narrow columns. Just numbers.”

Reena squints. “But where is Asha? Where is the Ginger Tea?”

Fact says, “I do not keep names. I only keep what happened — who, what, when, how much — but in code. The names are someone else’s job.”

He looks at Dimension.

Dimension tries

Dimension opens the first of her three little books. The cover says CUSTOMER. Inside, she writes:

1: Asha, regular morning customer 2: Kumar, occasional, comes for plain tea 3: Ravi, regular evening customer

She opens the second book. ITEM:

1: Ginger Tea, ₹10 2: Samosa, ₹15 3: Plain Tea, ₹8

She opens the third book. DATE:

1: Mon, Apr 1 2: Wed, Apr 3 3: Thu, Apr 4

She closes them and stacks them again. “Three small books. Each name appears exactly once. Fewer rows. Wider columns.”

Reena turns back to the original bulky notebook, then to Fact’s narrow rows of numbers, then to Dimension’s three small books. She says, slowly, “So the codes in his rows… look up in your books?”

Dimension nods. “Customer code 1 looks up in my CUSTOMER book and tells you it is Asha. Item code 1 looks up in my ITEM book and tells you it is Ginger Tea, ₹10. Date code 1 looks up in my DATE book and tells you it is Monday, Apr 1.”

What just happened

Reena pours herself a glass of tea for the first time all morning, sits down on her own counter, and asks, “So you split my one notebook into one big book of receipts and three small books of descriptions.”

Fact nods. “My book is the fact — every transaction recorded. Many rows. Narrow.”

Dimension says, “My books are the dimensions — every descriptive thing recorded once. Few rows. Wide.”

Reena says, “And in the cousin’s textbooks?”

Dimension smiles. “He calls this dimensional modelling. My books are dimension tables. His big book is the fact table. Together, when you draw them on a page, they look like a star — the fact in the middle, my books around it. Your cousin will call it a star schema.”

Fact adds, “And every name now appears exactly once in your data. Asha is in CUSTOMER once. Ginger Tea is in ITEM once. If you change Asha’s name to Aasha tomorrow, you change it in one place. Not in thirty rows.”

Reena nods slowly. “One place. Not thirty.”

The same chat, in a chart

Three-panel chart: a single bulky notebook with redundant rows of customer/item/day, then a star schema with a SALES fact table at the centre connected to CUSTOMER, ITEM and DATE dimension tables, and a small cartoon of Fact holding a long receipt scroll and Dimension holding a stack of three books.

That picture is exactly the same idea, drawn. The before-notebook has the same name written over and over. The after-layout has one SALES fact table at the centre with a row per transaction, surrounded by three small dim tables — one for customer, one for item, one for date. Each name appears once. Joined by codes.

One last warning before they leave

Fact rolls up his scroll. He says, “One thing, Reena. Don’t put names in my rows. The temptation is real — just write Asha here, easier to read — but if you write her name in every row, you are back to the bulky notebook. Keep names in Dimension’s books. My rows stay narrow with codes only.”

Dimension closes her books. “And don’t put quantities in my books. Asha bought two ginger teas is not a description of Asha — it is a transaction. That belongs in his rows. Mistake my book for his and the cousin will be unhappy.”

Reena nods slowly. “Numbers in his book. Names in your books.”

Fact says, “Codes connect them.”

Quick gut-check

You are designing a small sales database. Three pieces of information arrive.

  1. “The customer’s home address.”
  2. “The amount paid for this transaction.”
  3. “The product’s category — Beverage, Snack, or Sweet.”

Which belong in a fact table, and which belong in dimension tables?

1 and 3 are dimensions — they describe the customer and the product. 2 is a fact — it records what happened in one transaction. The dimensions explain who and what; the fact records how much.

The bill

Reena closed the bulky notebook with a small smile. She set out four fresh smaller books on the counter — one labelled SALES (the wide thin one for receipts), three smaller ones labelled CUSTOMER, ITEM, DATE. She would copy the bulky notebook over by Saturday night.

The fan ticked. The kettle hissed. Fact rolled his receipt scroll up neat and tucked it under his arm. Dimension stacked her three little books and gave Reena’s hand a small squeeze.

Use them together. Fact records every transaction. Dimension explains what every code in those transactions means. Codes connect them, names appear once, the cousin will be pleased on Sunday — and somewhere a textbook will quietly approve.


For the warehouse-curious

The pattern is called dimensional modelling — popularised by Ralph Kimball. The middle table is a fact table (transactions, measurements, events — many rows, narrow). The surrounding tables are dimension tables (descriptive context — fewer rows, wider). Drawn on a page they form a star schema.

When a dimension itself splits into smaller dimensions (e.g., a Product dimension joining to a Brand dimension joining to a Manufacturer dimension), the picture grows arms — and that is called a snowflake schema.

Same family. Different shapes.

Stay in the loop

Connect with Dr. C. Rani on LinkedIn.

New posts, research notes, and HR-analytics tips — straight to your LinkedIn feed.

Connect on LinkedIn