Netune by DataAsh ← All eight methodologies

Inmon and the Corporate Information Factory: one integrated core, many marts

Also called: CIF, the enterprise data warehouse, the 3NF core, top-down data warehousing

The approach that treats integration as the hard problem and reporting as the easy one — and is right about that whenever more than one system describes the same customer.

What it is

Bill Inmon’s warehouse has two layers with two different jobs. The core is normalised, integrated, and modelled on the business rather than on any one system: one customer, one definition, whatever each source calls them. The marts are dimensional, built on top of the core, and shaped for whoever is asking.

Nobody queries the core directly. It is the single version of the truth and it is not built to be read — it is built to be right, and to stay right while systems come and go. The marts are the readable surface, and they are deliberately disposable: rebuild one whenever the questions change.

This is the “top-down” half of the old Inmon-versus-Kimball argument. Model the enterprise first, then serve the departments. Kimball’s bottom-up answer — serve one process well, then conform the dimensions — is faster to first value, and the two camps have long since stopped pretending either is universal.

How the tables are actually shaped

The core: third normal form, and time

The core looks like a well-designed operational schema with one difference: it keeps history. Entities are normalised, relationships are real foreign keys, and each entity version carries the period it was true for.

Ent_Customer
  CustomerKey     INT       -- surrogate, STABLE across every version
  EffectiveFrom   DATETIME2 -- key is (CustomerKey, EffectiveFrom)
  EffectiveTo     DATETIME2
  IsCurrent       BIT
  CustomerNumber  NVARCHAR  -- business key
  SourceSystem    NVARCHAR  -- business key: the same customer, twice over
  Name, Address, ...

The marts: current-only, and rebuilt

Mart dimensions read the core with IsCurrent = 1 and are replaced whole on each run. That sounds wasteful and is the correct trade: the history lives in the core, so a mart has nothing to preserve, and a mart that can be rebuilt from scratch is a mart you can change your mind about.

It does mean mart surrogate keys move between runs. Acceptable precisely because the facts are rebuilt in the same run — but it is the reason nothing outside the mart may store one of its keys.

Where staging fits

Staging lands the source data, the core integrates it, the marts present it. Three layers, and the middle one is the only one that is really Inmon — the outer two are what every methodology does under different names.

When it fits, and when it does not

The question that decides this one is not technical. It is whether your organisation is willing to argue about what a customer is, and then write the answer down.

It fits when

  • several systems describe the same things differently
  • the organisation wants one agreed definition of a customer or a product
  • many departments will each want their own reporting
  • there is time and appetite to model the business, not just the data

It fits badly when

  • one source system and one reporting need
  • results are wanted in weeks
  • nobody is available to decide what the business terms mean
  • the tables are unrelated extracts with nothing to integrate

Those two lists are Netune’s own judgement of this methodology, copied from the rule file it scores a real database with.

What it costs

 CostWhat that means here
BuildHighTwo layers, and the modelling of the core is a business exercise before it is a technical one.
MaintainModerateA new source means integrating it into the core, which is real work by design.
QueryEasy at the martsAnd deliberately hard at the core, which nobody is meant to query.
HistoryIn the core, by designEvery entity version is kept, so the marts never have to ask the SCD question.

The mistakes that are expensive

Treating the marts as a later phase

The core alone reports on nothing. A project that spends its budget perfecting the integration layer and leaves the marts for next year delivers a warehouse that is finished and unusable at the same time — which is how this methodology earned its reputation for slowness.

Budget for both, and get one thin mart working end to end before the core is anywhere near complete.

Building a core when there is nothing to integrate

With a single source system the integration layer is doing very little, and a star schema reaches the same reports with half the work. The core earns its cost when two systems disagree about the same entity — and not before.

Letting the core surrogate key move

The one invariant here is that a customer’s key is the same in every version of them. A load that renumbers from scratch turns the history into several unrelated customers, silently, and every fact pointed at the old numbers is now pointed at somebody else. Assign from the current maximum and reuse the existing key wherever the business key matches.

How it compares

Inmon or Kimball?

The honest answer is: how many source systems, and how much time. Kimball gives reports sooner and handles one or two well-behaved sources beautifully. Inmon handles the case where the sources contradict each other and somebody has to decide who is right — and that decision has to live somewhere other than in each report.

In practice most large warehouses end up with both: an integrated core and dimensional marts. That is Inmon’s design, and it is also what a Kimball shop builds after its fifth star.

Inmon or Data Vault?

Both put an integration layer between the sources and the reports, and both keep history there. The difference is what happens when a source changes shape: Data Vault absorbs it by adding tables, while an Inmon core absorbs it by somebody remodelling the entity. Vault is more mechanical and less opinionated; the core is more readable and asks more of its modellers.

Netune scores Inmon against what it measures in your database — how many source systems appear to feed it, whether the same entity shows up under different keys, how connected the tables are — and if it is the model you pick, generates the core with its stable surrogate keys and effective dates, the key map, and the current-only marts on top.

Questions people ask

What is the difference between Inmon and Kimball?

Inmon builds a normalised, integrated core first and serves departments from marts on top of it; Kimball builds a dimensional model per business process and conforms the dimensions between them. Inmon is slower to first report and better where several systems disagree about the same entity.

Can I query the Inmon core directly?

You can, and you are not meant to. It is normalised and versioned, so every question costs joins and a filter on the effective dates. That is what the marts are for — and it is why building the core without them leaves you with nothing anybody can use.

Is the Corporate Information Factory the same as an enterprise data warehouse?

Near enough in everyday use. The CIF is Inmon's fuller architecture — core, marts, operational data store, and the metadata around them — and “enterprise data warehouse” usually means the integrated core at the middle of it.

Does an Inmon core need slowly changing dimensions?

No, and that is one of its advantages. The core keeps every version of every entity by construction, so there is no per-dimension history decision to make. The marts are current-only and rebuilt, so they have nothing to keep.

The other seven

← All eight compared, and how to choose between them

Deciding between them

See whether your data has anything to integrate

Netune measures how many systems feed your database, whether the same entity arrives twice under different keys, and how much of it is really connected — the evidence that decides whether a core is worth its cost.

Download the free beta