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

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.
- “The customer’s home address.”
- “The amount paid for this transaction.”
- “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.
