Decode & Grow

Relational vs Flat Data: Why Your Spreadsheet Stopped Working

Short answer: A spreadsheet stores flat rows, so any relationship between things — one client with many projects, one project with many invoices — has to be handled by repeating data. Repeated data diverges, and divergent data can't be trusted or automated. Relational structure stores each thing once and links between them, which is why databases scale where spreadsheets don't.

What flat data actually looks like

A typical operations spreadsheet has one row per project, with the client's name, address and contact email repeated on every row. Twelve projects for one client means that client's details appear twelve times.

Now the client moves office. Somebody updates nine rows and misses three. There is no error, no warning, and no way to tell which three. From that moment the spreadsheet contains two contradictory versions of the truth, and every report, mail-merge and automation built on it inherits the contradiction.

What relational structure does differently

Each real-world thing gets one record in one table. Clients live in a Clients table, once each. Projects live in a Projects table and hold a link — a pointer — to the client rather than a copy of the client's details.

When the client moves, you change one record. Every project referencing it immediately reflects the change. There is exactly one version of the address, so there's nothing to contradict.

The three symptoms that mean you've outgrown flat

  • You're repeating information across rows. The definitive sign. Any value appearing identically in multiple rows should live in its own table.
  • You've added columns like "Project 1", "Project 2", "Project 3". This is a one-to-many relationship being forced sideways, and it breaks the moment a client has four.
  • You maintain several sheets and reconcile them manually. A clients sheet, a projects sheet and a lookup formula joining them is a relational database implemented badly.

The vocabulary, briefly

  • Table — a collection of one kind of thing. Clients. Projects.
  • Record — one instance. One client.
  • Field — one attribute. Email address.
  • Relation — a link between records in different tables.
  • Lookup — showing a field from a linked record without copying it.
  • Rollup — summarising linked records. Total value of all projects for this client.
  • Primary key — the value that uniquely identifies a record. Names are poor keys; use an ID.

Why this matters for automation and AI

Both depend on unambiguous data. An automation asked to email "the client" for a project needs one definitive address. If three exist across duplicated rows, the automation picks one and gets it wrong a third of the time — silently.

The same applies with more force to AI. A model asked to analyse your client base from duplicated flat data will produce a confident, fluent, wrong answer, because it has no way to know that three rows are one company. AI on dirty data produces confident nonsense, and flat structure is the most common source of the dirt.

When is a spreadsheet still the right answer?

Genuinely often: one-off analysis, financial modelling, a simple list with no relationships and one editor, and anything under a couple of hundred rows that isn't going to grow. The problem isn't spreadsheets — it's spreadsheets doing a database's job.

Frequently asked questions

What's the easiest way to move to relational?

Airtable or Notion for small businesses — relational concepts with a spreadsheet-like interface and no SQL required.

Do I need to learn database theory?

No. Three principles cover almost everything: one table per real thing, link instead of copy, and give each record a stable identifier.

How do I know which fields belong in which table?

Ask what the field describes. If it describes the client, it belongs on the client. If it describes this specific project, it belongs on the project.

Structure first, tools second. Book a free systems audit to see what your data should look like.

Notion &amp Airtable
Made on
Tilda