Autowertfelder: Long durch GUID ersetzen

In den meisten Fällen ist die Wahl des Datentyps “Long” für ein Autowertfeld sinnvoll. Da es die Standardeinstellung ist, denkt man vielleicht gar nicht über alternative Datentypen nach. Manchmal kann es jedoch Vorteile haben, den Datentyp GUID zu wählen. Dann landen keine durchnummerierten Zahlen im Primärschlüsselfeld, sondern Zeichenketten im Format einer GUID. Die Nutzung der GUID ist vor allem dann anzuraten, wenn mehrere Datenbanken parallel existieren, deren Daten gelegentlich zusammengeführt werden. In diesem Fall kann man die Primärschlüsselwerte einfach weiterverwenden und muss sich nicht darum kümmern, dass der gleiche Primärschlüsselwert in mehreren Datenbanken vorkommt und angepasst werden muss.

Wie oben beschrieben, wird der Datentyp Long standardmäßig für neue Autowert-Felder vorgeschlagen. Darüber macht man sich in der Regel auch keine Sorgen, bis man feststellt, dass die Daten über mehrere Datenbanken verteilt bearbeitet und zu bestimmten Zeitpunkten zusammengeführt werden sollen.

Im ungünstigsten Fall enthalten die Tabellen dann schon eine Menge Datensätze, was ein Ändern des Datentyps unmöglich macht.

Wie kann man in diesem Fall dennoch den Datentyp der Primärschlüsselfelder ändern, ohne die vorhandenen Daten zu verlieren – mit Ausnahme der vorhandenen Long-Werte in den Primärschlüsselfeldern, die ja durch GUID-Werte ersetzt werden sollen Die Vorgehensweise hängt davon ab, ob es sich nur um eine oder mehrere Tabellen handelt, die nicht miteinander in Beziehung stehen oder ob es Beziehungen zwischen den Tabellen der Datenbank gibt.

Nicht verknüpfte Tabellen aktualisieren

Handelt es sich nur um nicht verknüpfte Tabellen, sieht die Vorgehensweise wie folgt aus:

  • Sie fügen ein neues Feld hinzu, das als neues Primärschlüsselfeld im GUID-Format mit Autowert-Funktion dienen soll.
  • Sie füllen das neue Feld mit GUID-Werten.
  • Sie löschen das vorhandene Primärschlüsselfeld.
  • Sie benennen gegebenenfalls das GUID-Feld so um, dass es den Namen des vorherigen Primärschlüsselfeldes erhält.
  • Sie machen das neue GUID-Feld zum Primärschlüsselfeld.

Die Vorgehensweise ist recht einfach und lässt sich über die Benutzeroberfläche schnell abbilden. Zunächst schauen wir uns noch die Vorgehensweise für verknüpfte Tabellen an.

Verknüpfte Tabellen aktualisieren

Der Aufwand für verknüpfte Tabellen ist ungleich höher. Angenommen, wir haben zwei verknüpfte Tabellen namens tblCodeschnipsel und tblKategorien (siehe Bild 1).

Beispieltabellen mit Beziehung

Bild 1: Beispieltabellen mit Beziehung

Hier ist die Tabelle tblCodeschnipsel über das Feld KategorieID mit dem Primärschlüsselfeld KategorieID der Tabelle tblKategorien verknüpft.

In diesem Fall sind die folgenden Schritte nötig, um die Datentypen der Primärschlüsselfelder der beiden Tabellen zu ändern:

  • Hinzufügen jeweils eines neuen Feldes zu den beiden Tabellen, das als neues GUID-Primärschlüsselfeld dienen soll – beispielsweise mit den vorübergehenden Bezeichnungen CodeschnipselID_GUID und KategorieID_GUID.
  • Hinzufügen eines neuen Fremdschlüsselfeldes namens KategorieID_GUID zur Tabelle tblCodeschnipsel.
  • Einrichten des Feldes KategorieID_GUID als Feld mit dem Datentyp Zahl und der Feldgröße Replikation-ID. Man könnte zwar versuchen, ein Nachschlagefeld mit der Tabelle tblKategorien und den Feldern KategorieID_GUID und Kategorie als Ziel einrichten (siehe Bild 2). Allerdings erkennt der Nachschlage-Assistent automatisch, dass KategorieID das Primärschlüsselfeld der Tabelle ist und nicht KategorieID_GUID – und verwendet auch das Feld KategorieID als Primärschlüsselfeld der Beziehung. Also definieren wir das Nachschlagefeld später.
  • Einrichten eines neuen Nachschlagefeldes

    Bild 2: Einrichten eines neuen Nachschlagefeldes

  • Füllen der neuen, als Primärschlüssel vorgesehenen Felder mit GUID-Werten
  • Füllen des Fremdschlüsselfeldes KategorieID_GUID der Tabelle tblCodeschnipsel mit den GUID-Werten, die dem GUID-Wert des Feldes der Tabelle tblKategorien entsprechen, das eigentlich mit dem Datensatz der Tabelle tblCodeschnipsel verknüpft ist.
  • Löschen der alten Primärschlüsselfelder und Fremdschlüsselfelder
  • Umbenennen der neuen Autowertfelder und Fremdschlüsselfelder von CodeschnipselID_GUID in CodeschnipselID und KategorieID_GUID in KategorieID.
  • Einstellen der neuen Autowertfelder als Primärschlüsselfelder
  • Einstellen des Fremdschlüsselfeldes KategorieID der Tabelle tblCodeschnipsel als Nachschlagefeld mit dem Feld KategorieID der Tabelle tblKategorien als Ziel.

Nachdem wir die Vorgehensweise theoretisch beleuchtet haben, schauen wir uns die Praxis an.

Praktisches Umwandeln nicht verknüpfter Tabellen

Zum Umwandeln einer nicht verknüpften Tabelle, hier der Tabelle tblTest, fügen wir zunächst das neue Feld namens TestID_GUID hinzu.

Den Felddatentyp stellen wir auf Autowert ein und wählen dann unter Feldgröße den Eintrag Replikations-ID aus (siehe Bild 3).

Hinzufügen des neuen Primärschlüsselfeldes, aber noch ohne Primärschlüssel

Bild 3: Hinzufügen des neuen Primärschlüsselfeldes, aber noch ohne Primärschlüssel

Wenn wir nun in die Datenblattansicht wechseln, finden wir bereits das vorausgefüllte Feld TextID_GUID vor (siehe Bild 4). Nun löschen wir das Feld TestID. Das erfordert unter anderem das Bestätigen der Meldung, das hiermit auch der Primärschlüssel gelöscht wird.

Das GUID-Autowertfeld wurde automatisch gefüllt.

Bild 4: Das GUID-Autowertfeld wurde automatisch gefüllt.

Schließlich ändern wir den Namen des neuen Feldes von TestID_GUID auf TestID und weisen diesem den Primärschlüssel für die Tabelle zu (siehe Bild 5).

Umbenennen von TestID_GUID zu TestID und Hinzufügen des Primärschlüssels

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar