Drucken

sQLshell-Plugin HandleDuplicates

Dieses sQLshell Plugin dient der Bereinigung eines Datenmodells von doppelten Datensätzen.

Funktion

Dieses sQLshell Plugin dient der Arbeit mit doppelten Datensätzen. Dazu müssen die Datensätze nicht in jeder Spalte identisch sein. Der Nutzer kann angeben, welche Spalten zur Suche nach Duplikaten berücksichtigt werden sollen. Es existieren drei verschiedene Aktionen, die auf solche Duplikate angewendet werden können:

  • Suchen und Zählen von Duplikaten.
  • Löschen von Duplikaten und allen abhängigen Datensätzen (Datensätze, die mittelbar oder unmittelbar über Fremdschlüsselbeziehungen von den zu löschenden abhängen)
  • Löschen von Duplikaten nach vorherigem Umsetzen deren Fremdschlüssel auf den beibehaltenen Datensatz. Deuteten vor dem Löschen zwei Referenzen auf den beibehaltenen Datensatz und drei auf den zu löschenden, deuten nach dem Löschen alle fünf auf den Datensatz, der nicht gelöscht wurde.

Voraussetzungen

Damit das sQLshell Plugin benutzt werden kann, muss genau eine Tabelle selektiert sein - nämlich die, die nach Duplikaten durchsucht werden soll.

Arbeitsweise

Auswählen der Spalten

Zunächst öffnet sich unabhängig von der gewälten Funktion immer der Dialog zur Auswahl der Spalten, die zur Suche nach Duplikaten berücksichtigt werden sollen. In diesem Dialog existiert eine Tabelle, die alle Spalten der gewählten Datenbank-Tabelle enthält. Jeder Spalte, für die hier ein Haken gesetzt ist, wird in die Suche nach Duplikaten einbezogen.

Suchen und Zählen von Duplikaten

Das Resultat der Suche nach Duplikaten wird nicht in einem eigenen Dialog dargestellt, sondern als View in der sQLshell geöffnet. Dieser View zeigt für jede Kombination von mehrfach auftretenden Einträgen in den ausgewählten Spalten der Zieltabelle die Anzahl des Auftretens.

Löschen von Duplikaten sowie aller abhängiger Datensätze

Diese Funktionalität ermittelt zunächst ausgehend von den zu löschenden Duplikaten alle Datensätze in allen mittelbar oder unmittelbar mit der Zieltabelle über Fremdschlüsselbeziehungen verknüpften Tabellen, die geändert werden müssten. Sind in einer solchen Tabelle gar keine Datensätze betroffen, wird mit der nächsten fortgefahren. Existieren betroffene Datensätze, wird analysiert, wie die ON DELETE - Festlegungen für die betreffende Fremdschlüsselbeziehungen definiert sind.

Ist dafür DO NOTHING festgelegt, verhindert das das Löschen von Datensätzen, deren Schlüssel von abhängigen Tabellen importiert werden. In diesem Fall wird der Nutzer darüber informiert, dass die Operation nicht durchgeführt werden kann. Der Prozeß bricht nach Schließen des Dialogs ab.

Ansonsten wird für jede mittelbar oder unmittelbar mit der die Duplikate enthaltenden Tabelle verknüpften Tabelle ein Dialog angezeigt über die Anzahl zu ändernder Datensätze in der betroffenen Tabelle informiert - Dieser Dialog bietet die Möglichkeit, weitere Details über die mit den Duplikaten verknüpften Datensätze zu ermitteln.

Nur wenn der Nutzer alls diese Dialoge positiv beantwortet, wird die Löschung vollzogen.

Löschen von Duplikaten unter Erhaltung der von den Duplikaten abhängigen Datensätze

Diese Funktionalität ermittelt zunächst, wie viele Duplikate in der Zieltabelle zu löschen wären. Diese Information wird in einem Dialog präsentiert, in dem der Nutzer die Möglichkeit hat, den Vorgang abzubrechen. Verfügen Duplikate über Datensätze in anderen Tabellen, deren Fremdschlüssel auf sie verweisen, werden diese Fremdschlüssel auf den letztlich übrigbleibenden Datensatz umgebogen.

Ansonsten wird für jede mittelbar oder unmittelbar mit der die Duplikate enthaltenden Tabelle verknüpften Tabelle ein Dialog angezeigt über die Anzahl zu ändernder Datensätze in der betroffenen Tabelle informiert - Dieser Dialog bietet die Möglichkeit, weitere Details über die mit den Duplikaten verknüpften Datensätze zu ermitteln.

Nur wenn der Nutzer alls diese Dialoge positiv beantwortet, wird die Löschung vollzogen.