GUIDs

Normalerweise verwenden Sie zur eindeutigen Kennzeichnung eines Datensatzes in einer Tabelle einen numerischen Primärschlüssel, der inkrementell für jeden neuen Datensatz erhöht wird. Manchmal reicht dies allerdings nicht aus – zum Beispiel dann, wenn es mehrere Kopien der Datenbank gibt, in denen Datensätze hinzugefügt und anschließend zusammengeführt werden müssen. Die Anforderung ist durchaus realistisch – es gibt erstens nicht immer und überall Internetzugriff, und zweitens will längst nicht jedes Unternehmen seine Datenbank über das Internet verfügbar machen. Die Lösung für die problemlose Zusammenführung der Daten sind Primärschlüssel, die weltweit eindeutig sind – und dies erreichen Sie mit den sogenannten GUIDs.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1401_GUIDs.mdb.

Die GUID

GUID ist die Abkürzung für Globally Unique Identifier. Während herkömmliche Primärschlüsselfelder normalerweise mit numerischen Werten des Datentyps Long gefüllt werden, was einem Wertebereich von -2.147.483.648 bis 2.147.483.647 entspricht (also insgesamt 2 hoch 32 Werten und einem Speicherplatz von 4 Byte entspricht, belegt ein GUID-Wert 16 Byte Speicher. Damit lassen sich allerdings auch eine ganze Reihe mehr Werte erzeugen.

Wie ist eine GUID nun aufgebaut Sie besteht aus 32 Buchstaben beziehungsweise Zahlen, wobei die Zahlen von 0 bis 9 und die Buchstaben von A bis F verwendet werden (entsprechend dem hexadezimalen System). Die 32 Zeichen werden typischerweise in einer bestimmten Anordnung notiert, die etwa so aussieht und in geschweifte Klammern eingefasst wird:

{9E0C0079-213E-48F5-9432-BC17E2D2CB9F}

Zwei Zeichen ergeben jeweils ein Byte, sodass die Anordnung bezüglich der Anzahl der verwendeten Bytes wie folgt aussieht:

4-2-2-2-6

Weltweit eindeutig

Was aber macht eine GUID nun weltweit eindeutig und somit zu einem bevorzugten Primärschlüsselwert, wenn es zum die Aufteilung und Synchronisierung von Datenbanken geht Die Eindeutigkeit ist nur gewährleistet, wenn die GUID durch einen Rechner erzeugt wird, der eine Ethernet-Netzwerkkarte verwendet. Wenn Sie sich selbst GUIDs ausdenken, können Sie natürlich leicht zwei gleiche Bytefolgen erzeugen – Gleiches gilt, wenn Sie einen eigenen Algorithmus zur Erstellung von GUIDs verwenden.

Um die Eindeutigkeit zu gewährleisten, wird ein Teil der GUID in Abhängigkeit von der physikalischen Adresse der Ethernet-Netzwerkkarte erzeugt, ein anderer Teil wir inkrementell erhöht – so ist, die Eindeutigkeit der Adresse der Ethernetkarte vorausgesetzt, die doppelter Vergabe einer GUID ausgeschlossen.

GUIDs als Autowert

Es gibt zwei Möglichkeiten, eine GUID zu erzeugen. Die erste liefert Access von Haus aus mit – es handelt sich hierbei um die Möglichkeit, Autowerte des Typs Replikations-ID zu erzeugen. Dazu legen Sie ein Feld einer Tabelle, etwa das Primärschlüssel, mit dem Datentyp Autowert und der Feldgröße Replikations-ID an (siehe Bild 1).

Tabelle mit einem GUID-Feld

Bild 1: Tabelle mit einem GUID-Feld

Wenn Sie nun in die Datenblattansicht wechseln und einige neue Datensätze anlegen, zeigt das Feld GuidID frisch erzeugte GUID-Werte an (siehe Bild 2).

GUID-Werte einer Tabelle

Bild 2: GUID-Werte einer Tabelle

Aber warum eigentlich Replikations-ID Dies ist in einer von den aktuellen Versionen von Access nicht mehr unterstützten Technik begründet. Früher konnten Sie Access-Datenbanken replizieren und wieder synchronisieren, das heißt, dass Access Funktionen angeboten hat, mit denen Sie mehrere Versionen (Replikate) einer Datenbank erstellen konnten. Diese haben etwa Außendienstmitarbeiter zur Erfassung von Kunden, Aufträgen et cetere verwendet. Später wurden die ermittelten Daten per Synchronisation wieder zu einer Datenbank zusammengeführt.

GUID per API

Es gibt auch eine API-Funktion, mit der Sie GUIDs erstellen können. API-Funktionen sind Windows-Funktionen, die Sie aber auch von VBA aus verwenden können (mehr dazu in einem weiteren Artikel). Windows verwendet GUIDs beispielsweise in der Registry (die Sie mit dem Befehl RegEdit im Startmenü von Windows anzeigen und bearbeiten können), wie Bild 3 zeigt.

GUIDs in der Registry von Windows

Bild 3: GUIDs in der Registry von Windows

Um eine GUID per VBA zu erzeugen, benötigen Sie zunächst die Deklaration der zu verwendenden API-Funktion. Diese fügen Sie am besten in ein Standardmodul ein (in der Beispieldatenbank unter den Namen mdlGUID zu finden):

Private Declare Function CoCreateGuid Lib "ole32.dll" (tGUIDStructure As GUID) As Long

Außerdem benötigen Sie eine weitere API-Funktion als Hilfsfunktion, die Sie an gleicher Stelle deklarieren:

Private Declare Function StringFromGUID2 Lib "ole32.dll" (rGUID As Any, ByVal lpstrClsId As Long, ByVal cbMax As Long) As Long

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar