6 Energieoptimierungen 9:^User.NATIOND(8)=$lb("",8,"INDIA",2,"ss excuses ca...") 10:^User.NATIOND(9)=$lb("",9,"INDONESIA",2,"slyly exp...") 11:^User.NATIOND(10)=$lb("",10,"IRAN",4,"efully alongs...") 12:^User.NATIOND(11)=$lb("",11,"IRAQ",4,"nic deposits ...") 13:^User.NATIOND(12)=$lb("",12,"JAPAN",2,"ously. final...") 14:^User.NATIOND(13)=$lb("",13,"JORDAN",4,"ic deposits...") 15:^User.NATIOND(14)=$lb("",14,"KENYA",0,"pending excu...") 16:^User.NATIOND(15)=$lb("",15,"MOROCCO",0,"rns. blith...") 17:^User.NATIOND(16)=$lb("",16,"MOZAMBIQUE",0,"s. iron...") 18:^User.NATIOND(17)=$lb("",17,"PERU",1,"platelets. bl...") 19:^User.NATIOND(18)=$lb("",18,"CHINA",2,"c dependenci...") 20:^User.NATIOND(19)=$lb("",19,"ROMANIA",3,"ular asymp...") 21:^User.NATIOND(20)=$lb("",20,"SAUDI ARABIA",4,"ts. s...") 22:^User.NATIOND(21)=$lb("",21,"VIETNAM",2,"hely entic...") 23:^User.NATIOND(22)=$lb("",22,"RUSSIA",3,"requests ag...") 24:^User.NATIOND(23)=$lb("",23,"UN<strong>IT</strong>ED KINGDOM",3,"ean...") 25:^User.NATIOND(24)=$lb("",24,"UN<strong>IT</strong>ED STATES",1,"y fi...") Der Datensatz mit der sechsten ID (Primärschlüssel) ist beispielsweise wie folgt notiert: ^User.NATIOND(5) = $lb("",5,"ETHIOPIA",0,"ven packag...") Primärschlüssel, Fremdschlüssel <strong>und</strong> Typ-Definitionen: Um das TPC-H Schema direkt abzubilden, sind verschiedene Modifikationen notwendig, nachdem die Klassen erzeugt wurden. Caché fügt automatisch jeder erstellten Tabelle zwei Spalten hinzu („ID“ <strong>und</strong> „x_classname“), welche beide interne Repräsentanten sind, die Caché zum Verwalten der Daten benötigt. Damit einhergehend ist die Tatsache, dass Caché standardmäßig seine eigene ID-Spalte als Primärschlüssel festlegt. Da die Primärschlüssel durch den TPC-H Benchmark festgelegt sind, müssen wir die Implementierung verändern, so dass die vom TPC-Benchmark festgelegten Spalten als Primärschlüssel benutzt werden. Die Änderung des Primärschlüssels erfolgt in Caché über die Änderung des Klassenschemas im Caché Studio. Die Tabelle 6.1 zeigt die Primärschlüssel wie sie im TPC-H Benchmark gefordert sind. Im TPC-H Benchmark existiert eine Auflistung von Fremdschlüsseln, welche auf immer auf einen Primärschlüssel referenzieren. Fremdschlüssel werden benutzt, um Relationen zwischen Tabellen zu definieren; sie dienen auch der Konsistenzprüfung der Daten beim Einlesen in die Datenbank. Wir definieren im Klassenschema der jeweiligen Tabelle zusätzlich noch die in Tabelle 6.2 aufgeführten Fremdschlüssel. Die Definition der Primärschlüssel <strong>und</strong> Fremdschlüssel erfolgt über die Klassendefinitionen, wie beispielhaft oben gezeigt. Das Anlegen eines Primärschlüssels in Caché geschieht über das Definieren eines Index mit speziellem Attribut; die Fremdschlüssel referenzieren dann auf den entsprechend definierten Index. Für die Tabelle Region sieht der hinzugefügte Code folgendermaßen aus: 82
Primary Key P_PARTKEY S_SUPPKEY PS_PARTKEY, PS_SUPPKEY C_CUSTKEY O_ORDERKEY L_ORDERKEY, L_LINENUMBER N_NATIONKEY R_REGIONKEY 6.1 TPC-H Benchmark-Schema in Caché Tabelle 6.1: Primärschlüssel des TPC-H Schemas. Foreign Key Referenz PS_PARTKEY P_PARTKEY PS_SUPPKEY S_SUPPKEY C_NATIONKEY N_NATIONKEY O_CUSTKEY C_CUSTKEY) L_ORDERKEY O_ORDERKEY L_PARTKEY P_PARTKEY L_SUPPKEY S_SUPPKEY L_PARTKEY, L_SUPPKEY PS_PARTKEY, PS_SUPPKEY N_REGIONKEY R_REGIONKEY Tabelle 6.2: Fremdschlüssel des TPC-H Schemas. 83