THIS EXPLANATION
THE ROOM
CDA·204 Computing, Data & AI 6 MIN · 8 STATIONS

Six names for one field

A Socratic walk-through of six names for one field — reasoned out one step at a time, not lectured.

abcdefgh
a

The question we started with

THE QUESTION #

Why does the same piece of information end up with six different names and six slightly different meanings?

Trace one date across an insurance estate and you find EFF-DT in the policy copybook, EFFECTIVE_DATE in the warehouse, startDate in the API, BILL_FROM_DT in billing, covStart in the pricing service, and DT_EFF_POL in a reporting extract.

The tidy reading is that this is sloppiness — six teams who could not agree, and a cleanup waiting to happen. But it is worth asking whether the sloppiness story explains what we see. Because if these were merely six labels for one value, reconciling them would be a rename. It almost never is. The values disagree, in small numbers of rows, in ways that turn out to matter.

b

Reasoning it through

REASONING #

Ask first where a name actually comes from. Not from the concept — from the circumstances of the copy. A field entering a system is named to fit that system's constraints and conventions: the eight-character limit of a job control name, the thirty-character COBOL data name, a database's column-length rule, a house style that abbreviates or that spells out, a language community that prefers camel case. The name records where and when it landed, not what it means. That is path dependence in its plainest form: the outcome is explained by the history of the process rather than by the properties of the thing.

Now the harder half. Why do the meanings drift too?

Consider what happens at each hop. A system receives the date and must do something with it that its own model requires. Billing needs a value it can put on an invoice line, so it moves the date to the first of the billing month. Pricing needs a moment, not a day, so it adds a time and a timezone — and picks one. The warehouse loads nightly, so its copy is the value as of last night's snapshot, which for recently backdated policies is not the current value. Reporting handles a null by substituting a low date so its joins behave.

Each of those transformations was locally correct. Each was made for a reason that made sense inside one system's model. And none of them was a decision about the shared concept, because at no point was there a place where the shared concept lived. So the drift is not carelessness — it is the accumulated residue of many small, individually justified local rules.

Which suggests the reconciliation instinct is dangerous. If you declare one of the six canonical and align the rest to it, you are not removing duplication; you are silently overwriting five local rules, at least some of which encode something real. The right first question is not "which name wins" but "in which rows do these six disagree, and why".

How would you even find that they are the same field, given the names are no help? Not by matching names, which is what most tooling reaches for first and which produces both misses and false hits. By profiling the values: the shape and range of the data, how many distinct values, the overlap of value sets between two columns sampled over the same entities, whether one determines the other. Two columns whose value sets agree on ninety-nine per cent of matched rows are almost certainly the same concept — and the one per cent is the interesting part, because that is exactly where a local rule is hiding.

And the hazard that runs the other way deserves naming: homonyms are worse than synonyms. Six names for one thing is a discoverability problem. One name for six things — customer meaning the billed party in one system, the insured party in another, the broker in a third — is a correctness problem, and it is far harder to detect, because the name reassures everyone that the conversation is going fine.

c

The analogy

THE ANALOGY #
THE FIGURE

Think of a river crossing several counties, each of which named it independently when they first mapped their own ground. The names differ because the surveys happened separately, not because anyone disagreed. But each county also dredged, dammed, or diverted its own stretch for local reasons, so by the time you compare the flow at each boundary the water is genuinely not the same water — a fact the naming honestly reflects even though it arose from an accident.

WHERE IT BREAKS DOWN

a river's course is visible from the bank, whereas the transformations between systems are invisible until you compare the values themselves, so the divergence accumulates without anyone being in a position to notice it.

d

Clarifying the model

THE MODEL #

Three refinements.

First, "the same field" is doing too much work. There are at least three relations worth keeping apart: identical, meaning every row agrees; derived, meaning one is a deterministic function of the other; and related, meaning they are about the same real-world property but neither derives from the other. A glossary that flattens all three into "synonym" loses the only information a migration needs.

Second, the surviving evidence for which relation holds is usually in the transformation code, not in either schema. The job that loaded the warehouse column contains the rule that made it differ. Schemas record the endpoints; the mapping records the meaning, and mappings are the artefacts most often lost.

Third, a caution about what a canonical name achieves. Agreeing one term for the concept genuinely helps people talk to each other and is worth doing. It does not make the values agree, and treating it as though it does converts a visible problem — six names, obviously needing care — into an invisible one, where a single name implies an equivalence nobody verified.

e

A picture of it

THE PICTURE #
Six names for one field
Six names for one field the root is the concept, and each branch is one system's landing point rather than one system's opinion. Under each name sits the local rule that made that copy differ -- a naming constraint in some cases, a genuine transformation in others. Reading across the leaves shows why the names cannot simply be aliased to one another: three of the six branches change the value, not just the label, so a rename would erase a rule rather than a duplicate. The tree has no edges between the branches on purpose, because there was never a place where the six were compared. {"generator":"mermaid-svg-renderer@3.2.1","source":"../Socrates/.diagram-cache/_src/six-names-for-one-field.md","sourceIndex":1,"sourceLine":4,"sourceHash":"a144d69ccffbd58ff42b384238cb33734a7e0e5f0744e9df8785add9087f2d3a","diagramType":"mindmap","layoutVariant":"source","repairedDuplicateIds":[{"original":"mermaid-a144d69ccffbd58f-0-node_1","replacement":"mermaid-a144d69ccffbd58f-0-node_1--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_2","replacement":"mermaid-a144d69ccffbd58f-0-node_2--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_3","replacement":"mermaid-a144d69ccffbd58f-0-node_3--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_4","replacement":"mermaid-a144d69ccffbd58f-0-node_4--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_5","replacement":"mermaid-a144d69ccffbd58f-0-node_5--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_6","replacement":"mermaid-a144d69ccffbd58f-0-node_6--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_7","replacement":"mermaid-a144d69ccffbd58f-0-node_7--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_8","replacement":"mermaid-a144d69ccffbd58f-0-node_8--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_9","replacement":"mermaid-a144d69ccffbd58f-0-node_9--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_10","replacement":"mermaid-a144d69ccffbd58f-0-node_10--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_11","replacement":"mermaid-a144d69ccffbd58f-0-node_11--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_12","replacement":"mermaid-a144d69ccffbd58f-0-node_12--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_13","replacement":"mermaid-a144d69ccffbd58f-0-node_13--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_14","replacement":"mermaid-a144d69ccffbd58f-0-node_14--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_15","replacement":"mermaid-a144d69ccffbd58f-0-node_15--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_16","replacement":"mermaid-a144d69ccffbd58f-0-node_16--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_17","replacement":"mermaid-a144d69ccffbd58f-0-node_17--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_18","replacement":"mermaid-a144d69ccffbd58f-0-node_18--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-node_19","replacement":"mermaid-a144d69ccffbd58f-0-node_19--duplicate-2"},{"original":"mermaid-a144d69ccffbd58f-0-gradient","replacement":"mermaid-a144d69ccffbd58f-0-gradient--duplicate-2"}],"motion":"entrance-with-reduced-motion-fallback","presentation":"editorial","attempt":1,"viewBox":{"x":0,"y":0,"width":1168,"height":651},"qa":{"passed":true,"findings":[]}} One date, six landings Policy admin EFF-DT Copybook name limit Stored as day of coverstart Billing BILL_FROM_DT Moved to first of billingmonth Pricing service covStart Given a time and atimezone Warehouse EFFECTIVE_DATE Value as of last nightsnapshot Public API startDate House style is camel case Reporting extract DT_EFF_POL Nulls replaced by a lowdate

How to readthe root is the concept, and each branch is one system's landing point rather than one system's opinion. Under each name sits the local rule that made that copy differ — a naming constraint in some cases, a genuine transformation in others. Reading across the leaves shows why the names cannot simply be aliased to one another: three of the six branches change the value, not just the label, so a rename would erase a rule rather than a duplicate. The tree has no edges between the branches on purpose, because there was never a place where the six were compared.

f

What became clearer

WHAT CLEARED #
WHAT CLEARED

Six names is a fossil record. The names record where the value landed and under what constraints, and alongside each name sits a local transformation that was reasonable in its own system and invisible everywhere else. That is why reconciliation is a data problem before it is a naming problem: the useful first output is not a canonical term but a list of the rows where the six copies disagree, since each disagreement is a business rule that nobody has written down.

g

Where to go next

ONWARD #
  • How value-based profiling decides that two columns are the same concept, and where it misleads.
  • Whether a canonical model can hold local variants explicitly rather than forcing them out.
  • How to detect homonyms, given that no name mismatch signals their presence.
h

Key terms

TERMS #
TermWhat it means
Path dependencean outcome explained by the sequence of events that produced it rather than by present conditions.
Data profilinginspecting actual values to infer a column's type, range, cardinality, and relationships.
Alias resolutiondeciding which differently named fields refer to the same underlying concept.
Homonymone name used for genuinely different concepts in different systems.
Canonical modelan agreed shared definition that participating systems map to and from.

Every term the collection defines is gathered in the glossary.

Nearby on the shelf

4