Where do you Store Point in Time for Information for a Link - OptimalBI/optimal-data-engine-mssql GitHub Wiki

The purpose of the Link is to capture and record the past, present, and future relationship (intersection) of data elements at the lowest possible grain.   The Link Entity also provides flexibility and scalability to the Data Vault modeling technique.   Typical examples of Links include: transactions, associations, hierarchies, and re-definition of business terms. Warning: Any change to the Link structure (like adding begin/ end dates, adding business keys), or changing the architectural definition of the Link will result in the need for re-engineering later.   Changes to the architecture compromise the agility and flexibility of the data model.   DO NOT MAKE CHANGES TO THE ARCHITECTURAL DEFINITIONS.

Linstedt, Dan (2012-05-20). Super Charge Your Data Warehouse: Invaluable Data Modeling Rules to Implement Your Data Vault (Data Warehouse Architecture Book 1)

 

Recording  Relationships over time has been a very difficult structure in older "3rd Normal Form" Time Variant Warehouses.

DV solves the problem by breaking it into 2 pieces - the Link records the existence of a relationship while the Satellite takes care of state.

In order to discover whether a Link (relationship) is valid at a point in time, you have to query the Satellite which supports the Link.

In SQL terms:

SELECT from {LINK} INNER JOIN {SATELLITE} on {HUB_KEY} = {HUB_KEY} where {NOW} >= {ROW_START_DATE} and {NOW} < {ROW_END_DATE}

will return all current Links.

This may seem like an unnecessary extra join, but in practice this is what enables much of the flexibility which is the hallmark of Data Vault.