Der Merge-Assistent

Es kommt immer mal wieder vor, dass man Daten aus verschiedenen Quellen in einer einzigen Datenbank zusammenführen muss. Sofern die Quelldaten eine gewisse Struktur aufweisen oder sich mithilfe von Abfragen so darstellen lassen, dass das Datenmodell der Zieldatenbank abgebildet werden kann, gibt es gute Nachrichten: Sie können dann den in diesem Beitrag vorgestellten Merge-Assistent verwenden, um sich die Arbeit zu vereinfachen. Mit diesem Assistenten stellen Sie schnell die notwendigen Daten zusammen und starten den Abgleich per Mausklick.

Das Zusammenführen von Daten mehrerer Datenquellen kann eine komplizierte Angelegtenheit werden – vor allem, wenn die Daten aus verschiedenen Tabellen stammen, die auch noch miteinander verknüpft sind.

Welche Konstellationen es dort gibt und mit welchen Abläufen Sie einen solchen Import selbst programmieren können, haben wir bereits im Beitrag Daten zusammenführen beschrieben (www.access-im-unternehmen.de/803).

Im vorliegenden Beitrag stellen wir Ihnen ein Tool vor, mit dem Sie den Abgleich einfach durchführen können – vorausgesetzt, die Daten erfüllen die eine oder andere Bedingung. Zum Beispiel sollten die Daten der Ziel- und der Quelltabelle beide in einem ordentlichen Datenmodell vorliegen und die Tabellen jeweils einen Primärschlüssel aufweisen. Ist dies nicht der Fall, ist ein Import zwar nicht ausgeschlossen, aber der Aufwand wird dann höher.

Verfügbarmachen der Daten

Im ersten Schritt entscheiden Sie, welche der Datenbanken das Ziel der Zusammenführung sein soll. Diese Datenbank öffnen Sie und machen die Daten der anderen Datenquelle in Form entsprechender Verknüpfungen verfügbar.

Befinden sich die anderen Daten in einer Access-Datenbank, erstellen Sie einfache Verknüpfungen auf alle Tabellen, deren Daten in der Zieldatenbank landen sollen.

Verwenden Sie andere Datenquellen wie etwa Excel-Tabellen oder auch andere Datenbankformate, stellen Sie ebenfalls entsprechende Verknüpfungen her.

Tool installieren

Der aktuelle Beitrag liefert das Tool in Form einiger Objekte, die Sie in die Zieldatenbank importieren müssen. In diesem Fall handelt es sich um die folgenden Objekte der Beispieldatenbank:

  • Formular frmAbgleich
  • Formular frmAbgleichDetails
  • Tabelle tblPKAltUndNeu
  • Tabelle tblAbgleiche
  • Klasse clsOrder
  • Modul mdlTools_Abgleich

Was nicht passt, wird passend gemacht

Sollten die Daten aus unterschiedlich aufgebauten Datenquellen stammen, müssen Sie diese so weit wie möglich angleichen. Da es allzuviele verschiedene Varianten gibt, hier nur ein allgemeiner Hinweis: Formen Sie die Daten der verknüpften Tabellen mithilfe von Abfragen in der lokalen Tabelle so um, dass diese zu den Tabellen des hiesigen Datenmodells passen.

Damit ist sowohl die Aufteilung auf verschiedene Tabellen beziehungsweise Abfragen gemeint als auch die Benennung der Feldnamen.

Voraussetzungen

Die wichtigste Voraussetzung für das Funktionieren der Lösung ist, dass jede Zieltabelle nur einen einzigen Primärschlüssel besitzt. Mehr als einen Primärschlüssel wie etwa der zusammengesetzte Primärschlüssel der Tabelle Bestellungen der Nordwind-Datenbank kann die Anwendung nicht verarbeiten.

Festlegen der Import-Reihenfolge

Wenn die verknüpften Daten in entsprechender Form vorliegen, überlegen Sie sich, in welcher Reihenfolge Sie die Daten importieren möchten. Haben Sie beispielsweise Kunden, Artikel, Bestellungen und Bestelldetails, beginnen Sie mit den Tabellen, die keine Fremdschlüsselfelder zur Herstellung von Verknüpfungen mit anderen Tabellen enthalten.

Die Tabelle mit den Kundendaten ist ein guter Start: Sie sollte außer gegebenenfalls ein paar Lookup-Feldern wie zum Auswählen der Anrede et cetera keinerlei Fremdschlüsselfelder enthalten. Falls doch, importieren Sie diese zuerst, soweit noch nicht vorhanden.

Bestellungen werden einem Kunden zugeordnet, also werden Sie die Tabelle mit den Bestellungen erst nach den Kunden importieren. Die Bestelldetails legen fest, welche Bestellung welche Artikel enthält – hier müssen Sie zunächst die Artikeldaten abgleichen.

Zusammenführung

Eine der größten Herausforderungen besteht darin, bereits vorhandene Daten zu erkennen und diese nicht erneut zu importieren – hier gewinnt das Wort Zusammenführung besondere Bedeutung. Insbesondere kann es vorkommen, dass ein Kunde sowohl in der ersten als auch in der zweiten Datenbank vorkommt.

Dann soll natürlich kein weiterer Kundendatensatz angelegt werden, sondern einer der beiden bestehenden Datensätze übernommen werden.

Dies erfordert zwei Arbeitsschritte: Zunächst den vorbereitenden Schritt, in dem Sie festlegen, nach welchen Feldern die neuen und die vorhandenen Datensätze abgeglichen werden sollen.

Im zweiten Schritt werden beim Zusammenführen der Daten Dubletten auftauchen: Hier müssen Sie eine Möglichkeit bieten, die beiden Datensätze zu vergleichen und zu entscheiden, welcher der beiden Datensätze übernommen werden soll.

Gegebenenfalls sollen ja selbst zwei Kundendatensätze noch kombiniert werden, um etwa den ersten Kundendatensatz, der zwar die richtige Adresse enthält, um die im zweiten Kundendatensatz aufgeführte Telefonnummer zu ergänzen. Prinzipiell müsste der Benutzer also für jedes einzelne Feld entscheiden können, aus welcher Datenbank der Inhalt entnommen wird. Sie ahnen es bereits: Diesem Formular messen wir besondere Bedeutung zu.

Anhängsel zusammenbringen

Beim Vereinigen der Kundendaten berücksichtigen Sie auch gleich die Daten solcher Tabellen, die per Fremdschlüsselfeld mit der Kundentabelle verknüpft sind. Im Falle der Bestellungen können folgende Situationen auftreten, wenn ein Kunde mit einer Bestellung aus Datenbank B in Datenbank A importiert werden soll:

  • Der Kunde ist bereits vorhanden. Dann wird nur der Bestelldatensatz in die Bestellungen-Tabelle der Zieldatenbank importiert und das Fremdschlüsselfeld mit dem Primärschlüsselwert des bestehenden Kundendatensatzes gefüllt.
  • Der Kunde ist noch nicht vorhanden. Dann wird zunächst der Kunde neu angelegt. Dieser erhält dabei in der Regel einen neuen Primärschlüsselwert, da der vorhandene ja bereits vergeben sein könnte. Die Bestellung wird beim Importieren mit dieser neu vergebenen Kunden-ID versehen.

Primärschlüsselfelder

Wie oben bereits erwähnt, muss zumindest die Zieltabelle genau ein Primärschlüsselfeld enthalten.

Dieses kann als Autowert oder als herkömmliches Zahlenfeld ausgelegt werden (Textfelder oder GUIDs als Datentyp von Primärschlüsselfeldern unterstützt die hier vorgestellte Lösung nicht).

Wenn es sich um einen Autowert handelt, gibt es beim Einfügen von Daten nur eine Möglichkeit: Der Datensatz muss mit einem automatisch vergebenen Primärschlüsselwert angelegt werden.

Ist das Primärschlüsselfeld nicht als Autowertfeld deklariert, soll die Lösung dieses Beitrags selbst einen geeigneten Wert bestimmen. In diesem Fall wird der bisher größte als Primärschlüssel vergebene Wert ermittelt und der Wert 1 hinzu addiert.

Ein Abgleich auf Basis der Primärschlüsselwerte ist ebenfalls vorgesehen. Sollten Sie also beispielsweise die Daten einer Kundentabelle importieren wollen, die zunächst nur in einer Kopie der Anwendung verwendet und dann in mehreren Kopien erweitert wurde, werden die Daten bei der Zusammenführung anhand des Primärschlüssels abgeglichen.

Wenn gleiche Datensätze zusammengeführt werden sollen, die aber nicht zwingend den gleichen Primärschlüsselwert besitzen, müssen Sie Vergleichskriterien wie Vorname und Nachname oder ähnliche festlegen – dazu stehen alle gemeinsamen Felder der Ziel- und der Quelltabelle bereit.

Bestehende Daten

Eine interessante Herausforderung ist der Abgleich mit bestehenden Daten. Wie soeben beschrieben, sollen die Anwendung Datensätze aus zwei Datenbanken, die übereinstimmen könnten (also beispielsweise zwei Kunden, die Produkte gekauft haben, die mit verschiedenen Datenbanken verwaltet werden), zusammenführen können.

Dazu legen Sie fest, anhand welcher Felder übereinstimmende Datensätze erkannt werden sollen, also beispielsweise Vorname und Nachname. Je nach Menge der Datensätze reicht dies bereits aus, sonst nehmen Sie noch weitere Felder wie Straße, PLZ oder Ort hinzu.

Wählen Sie die Vergleichsfelder jedoch sorgfältig aus: Kunden sind nicht zur Konsistenz verpflichtet, was die Eingabe etwa in Bestellformularen angeht. Mal schreiben sie Straße als ganzes Wort aus, mal geben sie nur Str. ein. Verlassen Sie sich also eher auf Daten wie die Postleitzahl.

Wenn die Anwendung eine Gemeinsamkeit zwischen einem bestehenden Datensatz der Zieldatenbank und einem aus der Quelldatenbank feststellt, soll ein Formular erscheinen, das die Daten nebeneinanderstellt. Es soll die folgenden Möglichkeiten bieten:

  • Bestätigen des vorhandenen Datensatzes,
  • Übernehmen des neuen Datensatzes,
  • Zusammenführen des Datensatzes aus Feldern beider Versionen oder
  • Übernahme des Datensatzes der Quelltabelle als neuen Datensatz.

Automatischer Abgleich

Wenn Sie sicher sind, dass Datensätze etwa mit gemeinsamen Werten in den Feldern Vorname, Nachname und PLZ sich auf die gleichen Personen beziehen, können Sie diese automatisch importieren lassen. Das bedeutet, dass die Anwendung zwar erkennt, dass die Datensätze aus der Ziel- und der Quelltabelle ähnlich beziehungsweise gleich sind, aber kein Formular öffnet, mit dem Sie den Abgleich prüfen können.

Stattdessen trägt die Anwendung nur den alten und den neuen Primärschlüsselwert in eine Mapping-Tabelle ein. Diese hat den Zweck, dass Tabellen, die per Fremdschlüsselfeld auf diese Tabelle verweisen, beim anschließenden Import den neuen Primärschlüsselwert der verknüpften Tabelle in das Fremdschlüsselfeld übernehmen können.

Bei Tabellen wie tblAnrede et cetera können Sie den Abgleich natürlich automatisch ablaufen lassen – vorausgesetzt, für ein Feld wie Anrede wurde ein eindeutiger Schlüssel festgelegt, würde normalerweise ebenfalls das Vergleichsformular erscheinen. Sie können solche Daten jedoch auch automatisch abgleichen lassen.

Konfiguration eines Imports

Schauen wir uns nun an, wie das alles mit der Lösung aus diesem Beitrag funktioniert. Voraussetzung dafür ist, dass Sie die oben erwähnten Objekte aus der Beispieldatenbank in die Zieldatenbank Ihrer Datenzusammenführung kopiert haben und dass Verknüpfungen zu den zu importierenden Daten bestehen.

Sollten Sie gerade keine eigenen Datenbanken für diesen Vorgang parat haben, können Sie die Beispieldatenbanken Südwind.mdb und Friseurbedarf.mdb verwenden, die über eine gleiche Datenstruktur, aber teilweise verschiedene Daten verfügen.

In diesem Fall starten Sie den Vorgang, indem Sie das Formular frmAbgleich öffnen. Dieses erlaubt zunächst die Auswahl einer ersten Kombination aus Quell- und Zieltabelle. Wählen Sie als Zieltabelle den Eintrag tblKategorien aus. Das Primärschlüsselfeld KategorieID erkennt das Tool selbstständig. Danach legen Sie die verknüpfte Tabelle tblKategorien1 als Quelltabelle fest – auch hier wird der Primärschlüssel automatisch ausgewählt.

Das Ergebnis können Sie in Bild 1 begutachten: Der Assistent zeigt gleich die gemeinsamen Felder der beiden Tabellen in zwei Listenfeldern an. Warum nur gemeinsame Felder Nun: Wie oben beschrieben, sollten Sie die zu importierenden Daten möglichst in der gleichen Form anbieten, wie diese in der Zieldatenbank vorliegen. Das heißt, dass Sie gegebenenfalls eine Abfrage auf Basis der Quelltabelle verwenden, um deren Felder entsprechend denen der Zieltabelle „umzubiegen“.

pic001.png

Bild 1: Auswahl einer ersten Zuordnung von Tabellen und Feldern für das Zusammenführen von Daten

Natürlich könnte man den Assistenten auch so programmieren, dass er die Zuteilung eines jeden Feldes der Quelltabelle zur Zieltabelle erlaubt, aber dadurch würde die Übersicht doch arg leiden.

Ein erster Import

Auch wenn es sich bisher nur um die Kategorien-Tabelle handelt, führen wir nun einen ersten Testimport durch.

Sie könnten nun bereits auf die Schaltfläche Abgleich starten klicken, dies würde jedoch nur eine Meldung hervorbringen, dass noch keine Felder für den Abgleich ausgewählt wurden.

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