Ein kleines Beispiel mit den EMP-Tabellen von Scott
Data Vault Beispiele in SQL sind nicht immer leicht zu finden. Als Oracle-Entwickler nutze ich die berühmten EMP-Tabellen sehr gerne für Schulungen. Sie sind klein, aber so clever arrangiert, dass man sehr vielfältige SQL-Abfragen damit üben kann. So ist es auch für Data Vault. Allein aus den zwei Tabellen emp und dept lassen sich die typischen Szenarien, sowie Hubs, Links und Satelliten bilden.
Hier also mein “Hello World”-Beispiel für Data Vault.
Entity-Relationship-Modell
Visual Data Vault
Hier ist der Auszug der Raw-Vault-Tabellen.
--------------------------------------------------------
-- DDL for Table HUB_DEPT
--------------------------------------------------------
CREATE TABLE "HUB_DEPT"
( "LOAD_DATE" DATE,
"DEPTNO_HASHKEY" RAW(16),
"RECORDSOURCE" VARCHAR2(20),
"DEPTNO_BK" NUMBER(2,0)
) ;
--------------------------------------------------------
-- DDL for Table HUB_EMP
--------------------------------------------------------
CREATE TABLE "HUB_EMP"
( "LOAD_DATE" DATE,
"EMPNO_HASHKEY" RAW(16),
"RECORDSOURCE" VARCHAR2(20),
"EMPNO_BK" NUMBER(4,0)
) ;
--------------------------------------------------------
-- DDL for Table SAT_DEPT
--------------------------------------------------------
CREATE TABLE "SAT_DEPT"
( "DEPTNO_HASHKEY" RAW(16),
"LOAD_DATE" DATE,
"RECORDSOURCE" VARCHAR2(20),
"HASHDIFF" RAW(16),
"DNAME" VARCHAR2(14),
"LOC" VARCHAR2(13)
) ;
--------------------------------------------------------
-- DDL for Table SAT_EMP20
--------------------------------------------------------
CREATE TABLE "SAT_EMP20"
( "EMPNO_HASHKEY" RAW(16),
"LOAD_DATE" DATE,
"RECORDSOURCE" VARCHAR2(20),
"HASHDIFF" RAW(16),
"ENAME" VARCHAR2(10),
"HIREDATE" DATE
) ;
--------------------------------------------------------
-- DDL for Table SAT_EMP5
--------------------------------------------------------
CREATE TABLE "SAT_EMP5"
( "EMPNO_HASHKEY" RAW(16),
"LOAD_DATE" DATE,
"RECORDSOURCE" VARCHAR2(20),
"HASHDIFF" RAW(16),
"JOB" VARCHAR2(9),
"SAL" NUMBER(7,2),
"COMM" NUMBER(7,2)
) ;
--------------------------------------------------------
-- DDL for Table LINK_MANAGER
--------------------------------------------------------
CREATE TABLE "LINK_MANAGER"
( "LOAD_DATE" DATE,
"MANAGER_HASHKEY" RAW(16),
"RECORDSOURCE" VARCHAR2(20),
"EMPNO_HASHKEY" RAW(16),
"MGR_HASHKEY" RAW(16)
) ;
--------------------------------------------------------
-- DDL for Table LINK_WORKS
--------------------------------------------------------
CREATE TABLE "LINK_WORKS"
( "LOAD_DATE" DATE,
"WORKS_HASHKEY" RAW(16),
"RECORDSOURCE" VARCHAR2(20),
"EMPNO_HASHKEY" RAW(16),
"DEPTNO_HASHKEY" RAW(16)
) ;
--------------------------------------------------------
-- DDL for Table SAT_LINK_WORKS_EFF
--------------------------------------------------------
CREATE TABLE SAT_LINK_WORKS_EFF(
"WORKS_HASHKEY" RAW(16),
"BEGIN_DATE" DATE,
"END_DATE" DATE,
"LOAD_DATE" DATE,
"RECORDSOURCE" VARCHAR2(20)
);
Das gesamte Projekt ist Open Source in github verfügbar. Siehe https://github.com/universe-designer/emp-schema-data-vault/tree/main