---
title: Create a Driving Key Link
description: A Model Object of type Driving Key Link can be created in the Raw Vault Layer. A relation or transaction is often identified by a combination of business keys in one source system. In Data Vault 2.0,
---

[Skip to content](https://knowledge.bigenius-x.com/create-a-driving-key-link#main-content)

[Contact us](https://knowledge.bigenius-x.com/kb-tickets/new?hsLang=en) [Go to Customer Portal](https://knowledge.bigenius-x.com/customer-portal?hsLang=en)

[![TRI\_Logo\_biGENIUS\_2020\_RGB\_s](https://knowledge.bigenius-x.com/hs-fs/hubfs/Marketing/TRI_Logo_biGENIUS_2020_RGB_s.png?width=150&height=42&name=TRI_Logo_biGENIUS_2020_RGB_s.png)](https://www.bigenius-x.com/)

Open main navigation

Close main navigation

- [Contact us](https://knowledge.bigenius-x.com/kb-tickets/new)
- [Go to Customer Portal](https://knowledge.bigenius-x.com/customer-portal)

 How can we help you?

- There are no suggestions because the search field is empty.

1. [biGENIUS-X Knowledge Base](https://knowledge.bigenius-x.com/?hsLang=en)
2. [Generators](https://knowledge.bigenius-x.com/generators?hsLang=en)
3. [Model Object Type](https://knowledge.bigenius-x.com/generators?hsLang=en#model-object-type)

# Create a Driving Key Link

A **Model Object** of type ***Driving Key Link*** can be created in the **Raw Vault** Layer.

### What is a Driving Key Link

A relation or transaction is often identified by a **combination of business keys** in one source system.  
In Data Vault 2.0, this is modeled as a normal link connecting multiple Hubs,each containing a Business Key.

A **Link also contains its hash key**, calculated over the **combination of all parent business keys**. So, when the Link connects four Hubs and **one Business Key changes**, the **new record will show a new Link hash key**.  
There is a **problem when four Business Keys describe the relation, but only three identify it uniquely**.  We cannot identify the business object by using only the hash key of the link.  
The problem is not a modeling error, but we should **identify the correct record in the related Satellite** when we query the data.  
In Data Vault 2.0, this is called a **Driving Key**. It is a **consistent key in the Relationship and often the primary key** in the source system.

*Hint*: More information in [this article](http://roelantvos.com/blog/driving-keys-and-relationship-history-one-or-more-tables/%20) from Roelant Vos.

In biGENIUS-X, the **Combined LSAT approach** is implemented - look at the last figure in Roelant's article.

### Use case example

The statements to reproduce the example are available here: [ManualData.sql](https://f926da42ec3845beb4acf72f.blob.core.windows.net/hubspotknowledgebase/ManualData.sql).

#### Source data

Our initial source data correspond to an employee, Sepp MAIER, who works at the company Trivadis and has been happy with this situation since February 2, 2012:

- Table **MD\_Company**  
  ![](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Jan-08-2024-12-41-45-0657-PM.png?width=156&height=66&name=image-png-Jan-08-2024-12-41-45-0657-PM.png)
- Table **MD\_Employee**  
  ![](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Jan-08-2024-12-41-53-3566-PM.png?width=302&height=47&name=image-png-Jan-08-2024-12-41-53-3566-PM.png)
- Table **MD\_Company\_Employee**  
  ![](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Jan-08-2024-12-41-59-7490-PM.png?width=340&height=44&name=image-png-Jan-08-2024-12-41-59-7490-PM.png)

#### Data Vault Model

We create in biGENIUS-X:

- 2 Hubs: **MD\_Company\_Hub** (based on MD\_Company) and **MD\_Employee\_Hub **(based on MD\_Employee)
- 1 Driving Key Link: **MD\_Company\_Employee\_Link **(based on MD\_Company\_Employee) with two relationships: 
    - To *Employee\_Hub*: Driving the Relationship (Property *Driving Key* will be set to True)
    - To *Company\_Hub*: Not driving the Relationship (Property *Driving Key* set to False)

- 1 Link Satellite: **MD\_Company\_Employee\_LinkSatellite** (based on MD\_Company\_Employee + MD\_Employee) with *FirstName, Name, Mood* and *MoodDate* as terms

#### Load of initial data

Generate, deploy, and load the project.

Then check the data:

```
-- Check the data of the Link and the Link SatelliteSELECT * FROM [RDV].[RDV_LNK_MD_Company_Employee_Link];SELECT * FROM [RDV].[RDV_LSAT_MD_Company_Employee_LinkSatellite];
```

You should have this result:

- ***LnkEmployeeCompany** ***table**:  
    - one record
    - MD\_Company\_MD\_Company\_HK = Hash key from Trivadis
    - MD\_Employee\_MD\_Employee\_HK = Hash key from Sepp
    - DrivingKeyLink\_HK = Hash key of the Driving Relationship = MD\_Employee\_MD\_Employee\_HK 
    - Link\_HK = Combination of MD\_Company\_MD\_Company\_HK and MD\_Employee\_MD\_Employee\_HK   
      ![](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Sep-09-2025-07-45-54-5651-AM.png?width=670&height=165&name=image-png-Sep-09-2025-07-45-54-5651-AM.png)
- ***LnkSatEmployeeCompany** ***table**:  
    - 1 record: mood Happy at 2012-02-02  
      ![](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Sep-09-2025-07-46-14-4762-AM.png?width=670&height=143&name=image-png-Sep-09-2025-07-46-14-4762-AM.png)

#### First change

- Sepp MAIER changes the company and moves from Trivadis to biGENIUS
- His mood changed now from Happy to Excited on 2018-01-01

Update the source data:

```
UPDATE [dbo].[MD_Company_Employee]SET [CompanyID] = 2, [Mood] = 'Excited', [MoodDate] = CONVERT(date,'2018-01-01')WHERE [EmployeeID] = 10;
```

Load the project again.

Then, check the data. You should have this result:

- ***LnkEmployeeCompany** ***table**:  
    - two records
    - Sepp has a new relation to the biGENIUS company
    - DrivingKeyLink\_HK = No change as the Employee didn't change
    - Link\_HK = Changed as it is a Combination of MD\_Company\_MD\_Company\_HK and MD\_Employee\_MD\_Employee\_HK  
      ![](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Sep-09-2025-07-58-51-5539-AM.png?width=670&height=109&name=image-png-Sep-09-2025-07-58-51-5539-AM.png)

- ***LnkSatEmployeeCompany** ***table**:  
    - two records
    - The Link HK has changed for the second record because Sepp changed the company, and now there's a new link between Employee and Company
    - Mood and MoodDate have changed to Excited / 2018-01-01  
      ![](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Sep-09-2025-08-00-12-3305-AM.png?width=670&height=94&name=image-png-Sep-09-2025-08-00-12-3305-AM.png)

#### Second change

- Sepp Maier still works at biGENIUS, and he is now Very satisfied
- His mood changes now from Excited to Very satisfied on 2018-07-01

Update the source data:

```
UPDATE [dbo].[MD_Company_Employee]SET [Mood] = 'Very satisfied', [MoodDate] = CONVERT(date,'2018-07-01')WHERE [EmployeeID] = 10;
```

Load the project again.

Then, check the data. You should have this result:

- ***LnkEmployeeCompany** ***table**:  
    - Still the same two records  
      ![](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Sep-09-2025-08-03-19-1911-AM.png?width=670&height=110&name=image-png-Sep-09-2025-08-03-19-1911-AM.png)
- ***LnkSatEmployeeCompany** ***table**:  
    - three records (only the last two are presented below in the picture)
    - The Link HK has not changed because Sepp didn't change the company
    - Mood and MoodDate have changed to Sad / 2018-07-01  
      ![](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Sep-09-2025-08-12-25-1263-AM.png?width=670&height=96&name=image-png-Sep-09-2025-08-12-25-1263-AM.png)

#### Third change

- Sepp Maier changes back from biGENIUS to Trivadis
- Sepp Maier became Sad on 2019-01-01

Update the source data:

```
UPDATE [dbo].[MD_Company_Employee]SET [CompanyID] = 1, [Mood] = 'Sad', [MoodDate] = CONVERT(date,'2019-01-01')WHERE [EmployeeID] = 10;
```

Load the project.

Then, check the data. You should have this result:

- ***LnkEmployeeCompany** ***table**:  
    - Still the same two records
- ***LnkSatEmployeeCompany** ***table**:  
    - Four records (only the last two are presented below in the picture)
    - The Link HK has changed because Sepp changed the company from biGENIUS to Trivadis
    - Mood and MoodDate have changed to Sad / 2019-01-01  
      ![](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Sep-09-2025-08-13-06-7173-AM.png?width=670&height=98&name=image-png-Sep-09-2025-08-13-06-7173-AM.png)

### Creation steps

There are two possibilities to create a ***Driving Key Link* Model Object**:

- [Create a Model Object with the Wizard](https://knowledge.bigenius-x.com/create-a-model-object-with-the-wizard?hsLang=en): 
    - **Recommended** possibility
    - Use the Wizard **Create a Driving Key Link from Stage or Raw Vault Composite**that contains the following steps: 
          - [Create Model Object](https://knowledge.bigenius-x.com/wizard-step-create-model-object?hsLang=en)
          - [Create Dataflow](https://knowledge.bigenius-x.com/wizard-step-create-dataflow?hsLang=en)
          - [Create Relations](https://knowledge.bigenius-x.com/wizard-step-create-relations?hsLang=en): number = {null}
          - [Map Foreign Key Terms](https://knowledge.bigenius-x.com/wizard-step-map-foreign-key-terms?hsLang=en)
          - [Add to View](https://knowledge.bigenius-x.com/wizard-step-add-to-view?hsLang=en)
- Create a Model Object manually: 
    - **Not recommended** possibility
    - [Create a Model Object](https://knowledge.bigenius-x.com/create-a-model-object?hsLang=en) of type Driving Key Link in the Raw Vault Layer
    - [Create a Dataflow Set ](https://knowledge.bigenius-x.com/create-a-data-flow-set?hsLang=en)
    - [Add a Model Object to the Dataflow Set](https://knowledge.bigenius-x.com/add-a-model-object-into-a-data-flow-set?hsLang=en): add the Stage or Raw Vault Model Object

- - [Add a Relationship](https://knowledge.bigenius-x.com/add-a-relationship?hsLang=en) to all the needed Hubs
    - [Edit the Foreign Key Terms](https://knowledge.bigenius-x.com/edit-a-term?hsLang=en): set them as Business Key

- - Set the **Property** ***Driving Key*** of each Relationship to True or False

At least one Relationship should have the Property Driving Key set to True. 

- - [Map the Foreign Key Terms](https://knowledge.bigenius-x.com/map-a-source-term-with-a-target-term?hsLang=en): select the target mode and manually map the Foreign Key Terms to the corresponding Source Terms

### Properties

A ***Driving Key Link*** **Model Object** can be configured through the following **Properties**: 

- [Foreign Key Mode](https://knowledge.bigenius-x.com/foreign-key-mode-model-object?hsLang=en)
- [Implementation Type](https://knowledge.bigenius-x.com/implementation-type-model-object?hsLang=en)
- [Load caching](https://knowledge.bigenius-x.com/load-caching-model-object?hsLang=en)
- [File format](https://knowledge.bigenius-x.com/file-format-model-object?hsLang=en) (Only for Spark Generator)
- [Use Sequential Dataflow Execution](https://knowledge.bigenius-x.com/use-sequential-dataflow-execution-model-object?hsLang=en) (Only for Spark Generator)

### Default Terms

A ***Driving Key**** Link*****Model Object** will include the following **Default Terms**:  

- [BG\_LoadTimestamp](https://knowledge.bigenius-x.com/bg_loadtimestamp?hsLang=en)
- [BG\_SourceSystem](https://knowledge.bigenius-x.com/bg_sourcesystem?hsLang=en)
- [Link\_HK](https://knowledge.bigenius-x.com/link_hk?hsLang=en)
- [DrivingKeyLink\_HK](https://knowledge.bigenius-x.com/drivingkeylink_hk?hsLang=en)

- [Getting started](https://knowledge.bigenius-x.com/getting-started?hsLang=en#main-content)

    - [Guidelines](https://knowledge.bigenius-x.com/getting-started?hsLang=en#guidelines)
    - [Start working](https://knowledge.bigenius-x.com/getting-started?hsLang=en#start-working)
    - [Account](https://knowledge.bigenius-x.com/getting-started?hsLang=en#account)
- [General overview](https://knowledge.bigenius-x.com/general-overview?hsLang=en)
- [Artificial Intelligence](https://knowledge.bigenius-x.com/artificial-intelligence?hsLang=en)
- [Application Modules](https://knowledge.bigenius-x.com/application-modules?hsLang=en#main-content)

    - [Administration](https://knowledge.bigenius-x.com/application-modules?hsLang=en#administration)
    - [Solutions](https://knowledge.bigenius-x.com/application-modules?hsLang=en#solutions)
    - [Global Features](https://knowledge.bigenius-x.com/application-modules?hsLang=en#global-features)
    - [Projects](https://knowledge.bigenius-x.com/application-modules?hsLang=en#projects)
    - [Branches](https://knowledge.bigenius-x.com/application-modules?hsLang=en#branches)
    - [Data Connections](https://knowledge.bigenius-x.com/application-modules?hsLang=en#data-connections)
    - [Dataflow Modeling - Overview](https://knowledge.bigenius-x.com/application-modules?hsLang=en#dataflow-modeling-overview)
    - [Dataflow Modeling - Wizard Steps](https://knowledge.bigenius-x.com/application-modules?hsLang=en#dataflow-modeling-wizard-steps)
    - [Dataflow Modeling - Terms](https://knowledge.bigenius-x.com/application-modules?hsLang=en#dataflow-modeling-terms)
    - [Dataflow Modeling - Term Mapping](https://knowledge.bigenius-x.com/application-modules?hsLang=en#dataflow-modeling-term-mapping)
    - [Dataflow Modeling - Relationships](https://knowledge.bigenius-x.com/application-modules?hsLang=en#dataflow-modeling-relationships)
    - [Dataflow Modeling - Data Quality](https://knowledge.bigenius-x.com/application-modules?hsLang=en#dataflow-modeling-data-quality)
    - [Dataflow Modeling - Indexes](https://knowledge.bigenius-x.com/application-modules?hsLang=en#dataflow-modeling-indexes)
    - [Relationship Modeling](https://knowledge.bigenius-x.com/application-modules?hsLang=en#relationship-modeling)
    - [Generate Artifacts](https://knowledge.bigenius-x.com/application-modules?hsLang=en#generate-artifacts)
    - [Project Settings](https://knowledge.bigenius-x.com/application-modules?hsLang=en#project-settings)
    - [Data Marketplace](https://knowledge.bigenius-x.com/application-modules?hsLang=en#data-marketplace)
- [Generators](https://knowledge.bigenius-x.com/generators?hsLang=en#main-content)

    - [Fabric Warehouse](https://knowledge.bigenius-x.com/generators?hsLang=en#fabric-warehouse)
    - [Fabric Lakehouse](https://knowledge.bigenius-x.com/generators?hsLang=en#fabric-lakehouse)
    - [Databricks](https://knowledge.bigenius-x.com/generators?hsLang=en#databricks)
    - [Snowflake](https://knowledge.bigenius-x.com/generators?hsLang=en#snowflake)
    - [Microsoft SQL Server](https://knowledge.bigenius-x.com/generators?hsLang=en#microsoft-sql-server)
    - [Artifacts](https://knowledge.bigenius-x.com/generators?hsLang=en#artifacts)
    - [Replace Placeholders](https://knowledge.bigenius-x.com/generators?hsLang=en#replace-placeholders)
    - [Target solution environment](https://knowledge.bigenius-x.com/generators?hsLang=en#target-solution-environment)
    - [Deployment](https://knowledge.bigenius-x.com/generators?hsLang=en#deployment)
    - [Deployment with an Azuze DevOps pipeline](https://knowledge.bigenius-x.com/generators?hsLang=en#deployment-with-an-azuze-devops-pipeline)
    - [Delta Deployment](https://knowledge.bigenius-x.com/generators?hsLang=en#delta-deployment)
    - [Load control environment](https://knowledge.bigenius-x.com/generators?hsLang=en#load-control-environment)
    - [Load data with a native load control](https://knowledge.bigenius-x.com/generators?hsLang=en#load-data-with-a-native-load-control)
    - [Load data with Apache Airflow](https://knowledge.bigenius-x.com/generators?hsLang=en#load-data-with-apache-airflow)
    - [Model Object Type](https://knowledge.bigenius-x.com/generators?hsLang=en#model-object-type)
    - [Properties](https://knowledge.bigenius-x.com/generators?hsLang=en#properties)
    - [Default Terms](https://knowledge.bigenius-x.com/generators?hsLang=en#default-terms)
- [Discovery application](https://knowledge.bigenius-x.com/discovery-application?hsLang=en#main-content)

    - [Discovery configurations](https://knowledge.bigenius-x.com/discovery-application?hsLang=en#discovery-configurations)
- [Best practices](https://knowledge.bigenius-x.com/best-practices?hsLang=en#main-content)

    - [Modeling Approaches](https://knowledge.bigenius-x.com/best-practices?hsLang=en#modeling-approaches)
    - [Use Cases](https://knowledge.bigenius-x.com/best-practices?hsLang=en#use-cases)
    - [Business Rules](https://knowledge.bigenius-x.com/best-practices?hsLang=en#business-rules)
    - [Data Quality Rules](https://knowledge.bigenius-x.com/best-practices?hsLang=en#data-quality-rules)
- [FAQs](https://knowledge.bigenius-x.com/faqs?hsLang=en)
- [Product Release Notes](https://knowledge.bigenius-x.com/product-release-notes?hsLang=en#main-content)

    - [SaaS Application](https://knowledge.bigenius-x.com/product-release-notes?hsLang=en#saas-application)
    - [Discovery application](https://knowledge.bigenius-x.com/product-release-notes?hsLang=en#discovery-application)
    - [Generators](https://knowledge.bigenius-x.com/product-release-notes?hsLang=en#generators)
- [Legal Documents](https://knowledge.bigenius-x.com/legal-documents?hsLang=en#main-content)

    - [Current legal docs](https://knowledge.bigenius-x.com/legal-documents?hsLang=en#current-legal-docs)
    - [Software Product and Limits](https://knowledge.bigenius-x.com/legal-documents?hsLang=en#software-product-and-limits)

- [Contact us](https://knowledge.bigenius-x.com/kb-tickets/new?hsLang=en)
- [Customer Portal](https://knowledge.bigenius-x.com/customer-portal)
- [Sign in](https://knowledge.bigenius-x.com/_hcms/mem/login)

[![biGENIUS logo](https://knowledge.bigenius-x.com/hubfs/TRI_Logo_biGENIUS_2020_RGB-1.svg "biGENIUS logo")](https://www.bigenius-x.com)

<https://www.linkedin.com/company/bigenius> <https://www.youtube.com/@biGENIUS_DWA>

All rights reserved © 2025, biGENIUS AG