And almost every data model of one is a faithful model of a single country

There is a particular kind of confidence that appears when addresses come up in a design session. Someone says it's a solved problem. Someone else suggests four columns. A third person, the cautious one, proposes six. The meeting moves on in under ten minutes, because everybody in the room has an address, has always had one, and has never once found it difficult.

That confidence is real, and it is earned. It is just earned in one country.

An address model is one of the few artefacts in enterprise data where personal experience feels like domain expertise. Nobody walks into a session on derivative settlement or clinical coding assuming their private life qualifies them. But everyone has filled in an address form. Everyone has received post. The subject appears fully known, and the model that results is genuinely excellent — at representing addresses in the place where its authors learned what an address is.

Then the company opens in a second country, and the excellent model starts lying.

Nine things everybody knows about addresses

What follows is not a list of edge cases. Each item below is ordinary, unremarkable addressing for tens or hundreds of millions of people. What makes them look like edge cases is only where you happen to be standing.

1. Addresses have a street.

Japanese addresses, outside a few cities, do not. Addressing proceeds by nested area: prefecture, municipality, ward, district, then a numbered block within the district, then a numbered lot within the block, then a building. The street is not merely absent from the notation — most Japanese streets have no name at all. They are the gaps between blocks, and it is the blocks that carry identity.

Address National Variants

This is not a formatting difference. Every downstream capability that assumes a street breaks: route optimisation that groups by thoroughfare, deduplication that fuzzy-matches street names, territory assignment drawn along roads, the address autocomplete that asks for a street first. And in older districts the numbering within a block follows the order in which lots were registered rather than their position, so two adjacent buildings may be numbered fourteen apart. Adjacency in the data implies nothing about adjacency in the world.

2. A number identifies a building.

In Russia, a plot number may cover several physically separate buildings, which is what korpus distinguishes; those may be further divided, which is what stroenie distinguishes; and the flat is a third level below that. Four numeric components, all mandatory in the population, none of them meaning what "house number" means elsewhere.

Address JP and RU Components

3. Every premise has a number.

Rural Britain runs on names. Rose Cottage, Nether Poppleton, York is a complete, deliverable, unambiguous address containing no number whatsoever. Brazil goes further and gives you the positive case: s/n, sem número — this address has been assigned no number. That is a different assertion from "we do not know the number," and a nullable column cannot express either one, let alone tell them apart. The delivery exception that results is unresolvable from the data.

4. Postal codes exist.

The United Arab Emirates does not use them. Post there runs through box numbers at named offices, and a large fraction of the population has no premise-level postal address at all. Ireland had none until 2015. A mandatory postal code field is not a validation rule; it is a statement that some countries are not customers.

5. The place on the envelope is the place you live in.

In the United States the postal city is frequently not the incorporated municipality. An address can be postally Beverly Hills and municipally Los Angeles. Merge those two into one field — as nearly every model does, because in most countries they coincide — and you have quietly broken tax jurisdiction, sales territory assignment and regulatory reporting in the same stroke, in a way that stays invisible until an auditor finds it.

6. The descriptive parts identify the address.

Pre-Eircode Ireland is the standing refutation: in a rural townland, dozens of separate dwellings could share an identical written address, distinguished only by local knowledge of the family name. The text was a complete address and identified nothing. Post-Eircode, the situation inverts — the code identifies, and it is deliberately non-geographic, so neighbouring houses share nothing beyond the routing prefix. Neither state fits a model where the descriptive components are assumed to be the key.

7. Addresses are absolute.

In Costa Rica, addresses are given relative to landmarks and measured in metres and compass directions: two hundred metres north of the church, green house on the right. This has a consequence no other paradigm produces — the address depends on another object's lifecycle. When a well-known fig tree in San Pedro was felled, addresses referring to it stayed in daily use for years. The address outlived its own referent. Any model treating the landmark as a reference to a currently existing thing cannot hold that population.

Address Landmarks and Bearings

India shows the same element in a different role: landmarks there supplement a fully structured address rather than replacing it. So "landmark" is not a variant type of address. It is an optional fact that can attach to several.

8. The unit is an afterthought.

Spanish addresses carry escalera, piso and puerta — stair, floor, door — as part of identity. Two addresses differing only in door are as distinct as two differing in house number. Relegate the vertical component to a free-text "unit" line, as models built in countries with mostly-detached housing do by reflex, and you lose uniqueness in the countries with the densest populations.

9. Addresses are stable.

They are not, and the instability has nothing to do with anyone moving. Streets are renamed. Municipalities merge — the Netherlands has been consolidating for decades, rewriting the administrative component of millions of addresses without a brick moving. Postcodes are reallocated. Countries dissolve, and addresses that were correct in Yugoslavia or Czechoslovakia are now in successor states. In Australia, a property under development carries a lot number and a deposited plan, and becomes a street address when the council assigns one — a change of addressing paradigm for an unchanged parcel of land, with contracts of sale still referencing the old form.

The move that feels like a solution

The standard escape is address line 1, line 2, line 3, plus country and postal code. It is genuinely better than four opinionated columns, and it survives contact with every population above.

It is also not a model. It is a serialisation format that has been mistaken for one.

The complexity does not disappear when you adopt free-text lines. It relocates — into validation code, into deduplication scripts, into the geocoding vendor, into the parser that runs on ingest, and into the ticket queue where somebody is trying to work out why the parcel went to the wrong Zwolle. The line-based format is the right way to carry an address. It answers no question about one. Which customers share a building. Which addresses are in this tax jurisdiction. Whether these two records are the same place. Is this a real premise or a mail-forwarding box. Every one of those requires structure, and free-text lines have deferred the structure rather than removed the need for it.

Even as a carrier, three fixed lines is the wrong shape. A Japanese address with a building name and a floor wants six. Three roles fix an arbitrary cardinality into the schema, leave most of the population with empty roles, and require a migration the first time reality exceeds the guess. A sequenced line — line n of this address reads this — costs nothing extra and never needs the migration.

Address Temporal Design

Three concepts wearing one name

Most of the difficulty is not intrinsic. It comes from a conflation that happens so early nobody notices it: "address" names three different things.

There is a delivery instruction — a rendering aimed at one postal operator's parsing conventions, whose correctness is judged entirely by whether the item arrives.

There is a location — a real place on the earth, identified in the countries that maintain a register by a stable key: a BAG nummeraanduiding, a British UPRN, a Danish DAR identifier.

And there is a domicile claim — a jurisdictional assertion about tax residence, registered office, place of birth, whose correctness is a legal question and not a postal one.

These have different identification, different lifecycles, different verification regimes and different owners. A post box is a valid delivery instruction, an invalid registered office and not a location at all. A demolished building retains its location and loses its delivery instruction. A street rename changes the delivery instruction while location and domicile stay put.

Modelled as one object type with one identifier, every constraint that ought to apply to one of the three has to be weakened until it applies to none. That is where "addresses are hard" actually comes from. It is not the world's complexity. It is three models sharing a table.

What a fact-oriented approach contributes

Mostly, it refuses to hide any of this.

Fact-oriented modelling starts from what is actually communicated, in the words in which it is communicated, with a concrete population. That discipline does specific work here.

It forces the inapplicable-versus-unknown distinction into the open. A Japanese address has no street. Not an empty street, not an unknown street — the role does not apply. In an attribute-based model both arrive as NULL and become indistinguishable. Subtypes with their own fact types keep the difference, and the constraints on each subtype can then be stated properly instead of being weakened to accommodate every other country's exceptions.

  • It reveals that the discriminator is not the country. The obvious design is a subtype per country, and the population kills it immediately: Japan hosts both block and thoroughfare addressing, every country hosts post boxes alongside premises, and the landmark paradigm crosses borders while differing sharply from its own neighbours. The discriminator is the addressing paradigm; the country then constrains which paradigms are admissible. That is not a conclusion available from thinking about it abstractly. It falls out of trying to populate the model.
  • It exposes provenance as part of the fact. An address given by a customer is not a fact about the world. It is a statement made by a party at a moment, and it may be wrong. Modelled as an attribute of the customer, the statement and its truth are fused. Modelled as a fact with an asserter and a date, they separate — and verification against a registry becomes another fact with its own date and outcome, rather than a boolean flag whose meaning erodes.
  • It makes parsed structure honest. Structure you received is not structure you inferred. If a postcode came from a national register it is one kind of fact; if a parser extracted it from a free-text line with eighty-nine percent confidence it is another, and the model should say which. Almost none do, and the resulting inability to tell what is known from what was guessed is a large share of the mistrust enterprises have in their own address data.

And it produces an uncomfortably short list of things that are universally true. Working through the populations above, what survives as mandatory across every address on earth is: it has an identity, it is in a country, it follows some addressing paradigm, and it can be rendered as an ordered sequence of lines. That is all. No street, no number, no postal code, no administrative unit, no coordinates, no verification. Any model that makes one of those mandatory at the top is a model of somewhere specific.

The honest minimum

None of this argues for building everything at once. The opposite: the reason the usual model fails is that it committed early to structure it did not need, in a shape borrowed from one country.

The defensible core is small. An address with a surrogate identifier. A mandatory country. A paradigm, dated, so that a change of paradigm can be recorded rather than faked. A sequenced rendering, immutable once produced, so that an invoice can be reproduced as sent rather than as currently correct. And the party-to-address relationship carrying the role of use — billing, shipping, registered office — on the relationship rather than on the address, so that addresses remain shareable and so that "a registered office may not be a post box" is expressible at all.

Address Core

Everything else attaches later without disturbing that core, and each piece should wait for a business process that actually asks a question requiring it. In practice most international enterprises need genuine parsed structure for three or four jurisdictions and faithful rendering for the other hundred and ninety. Building in that order keeps the proportion visible rather than letting it be discovered in year three.

The one decision worth making at the start, because it is the only one that is genuinely expensive to retrofit, is separating the location from its designation. A building outlives its name, and every temporal problem in this domain — renames, mergers, reallocations, lot-to-street transitions, dissolved countries — is the same problem wearing different clothes.

A test

Take your current address model, pick a country none of its authors has lived in, and try to populate it with a real address from that country without leaving anything out and without putting anything in a field that does not mean it.

If you cannot, that is worth knowing. It does not mean the model is bad. It means the model has a nationality, and that nationality is about to become a constraint on where the business can operate — enforced not by anyone's decision, but by four columns chosen in a ten-minute conversation years ago, by people who were quite sure this part was easy.


If you want to know more, visit the model at our github pages.

Scheduled

There are no up-coming events

Share