Beispiel: Transformieren einer Access-Datenbank in SQLite
In diesem Beispiel wird gezeigt, wie Sie ein Datenbankmodell von einer Datenbankart in eine andere konvertieren. Dabei wird insbesondere gezeigt, wie die Struktur einer Microsoft Access-Datenbank in ein UML-Modell eingelesen und anschließend mit einer vorhandenen SQLite-Datenbank zusammengeführt wird. Nach Fertigstellung dieses Beispiels wird die Struktur der Access-Quelldatenbank in der SQLite-Zieldatenbank übernommen. Beachten Sie, dass die Microsoft Access- und die SQLite-Datenbanken hier nur als Beispiel dienen; auch jede andere von UModel unterstützte Datenbank (siehe UModel und Datenbanken) kann auf diese Art konvertiert werden.
In diesem Beispiel werden folgenden Dateien aus dem Verzeichnis C:\Users\...\Documents\Altova\UModel2025 \UModelExamples\Tutorial verwendet:
•Nanonull.mdb - die Microsoft Access-Quelldatenbank
•Nanonull.sqlite - die SQLite-Zieldatenbank
Anmerkung: Bevor Sie beginnen, wird empfohlen, ein Backup der Beispieldatenbankdatei Nanonull.sqlite anzulegen, da ihr Inhalt durch das unten beschriebene Verfahren verändert wird.
Schritt 1: Import der Quelldatenbank in UModel
1.Klicken Sie im Menü Projekt auf SQL-Datenbank importieren und befolgen Sie die Anweisungen des Assistenten, um eine Verbindung zur Microsoft Access-Quelldatenbank (Nanonull.mdb) herzustellen. Nähere Informationen dazu finden Sie unter Herstellen einer Verbindung zu einer Datenbank.
2.Wenn Sie aufgefordert werden, einen Namen für die Datenquelle anzugeben, geben Sie ihr einen beschreibenden Namen (z.B. "Quelldatenbank").
3.Wählen Sie die Datenbankobjekte aus, die in das Modell importiert werden sollen, und klicken Sie auf Fertig stellen.
Beachten Sie, dass im Fenster "Modell-Struktur" nun unter dem Paket "Root" ein Paket namens "Quelldatenbank" zur Verfügung steht.
Schritt 2: Import der Zieldatenbank in UModel
1.Klicken Sie im Menü Projekt auf SQL-Datenbank importieren und befolgen Sie die Anweisungen des Assistenten, um eine Verbindung zur SQLite-Zieldatenbank (Nanonull.sqlite) herzustellen.
2.Wenn Sie aufgefordert werden, einen Namen für die Datenquelle anzugeben, geben Sie ihr einen beschreibenden Namen (z.B. "Zieldatenbank").
3.Wählen Sie die Datenbankobjekte, die Sie in das Modell importieren möchten, aus und klicken Sie auf Weiter.
4.Wenn Sie aufgefordert werden, ein Zielpaket auszuwählen, aktivieren Sie das Kontrollkästchen In neues Paket importieren und klicken Sie auf Fertig stellen.
Daraufhin wird im Fenster "Modell-Struktur" unterhalb des Root-Pakets ein neues Paket namens "Zieldatenbank" hinzugefügt.
Schritt 3: Ausführung der Modelltransformation von der Quell- in die Zieldatenbank
1.Klicken Sie im Menü Projekt auf Modelltransformation.
2.Wählen Sie im Dialogfeld "Quellpaket auswählen" "Quelldatenbank / Nanonull" als Paket aus und klicken Sie auf Weiter.
3.Wählen Sie im Dialogfeld "Zielpaket auswählen" "Zieldatenbank / main" als Paket aus und klicken Sie auf Weiter.
4.Wählen Sie im Dialogfeld "Einzelheiten zur Modelltransformation" als Transformationstyp DB in DB aus und klicken Sie auf Weiter.
5.Überprüfen Sie im Dialogfeld "Typ-Mapping" die Datentypen und ändern Sie diese nach Bedarf. In diesem Beispiel wollen wir nur einige Microsoft Access-spezifische Datentypen, die in SQLite nicht existieren, mappen (siehe Abb. unten):
Im Allgemeinen sollte sichergestellt werden, dass die linke Spalte einen mit der Quelldatenbank kompatiblen Datentyp und die rechte Spalte einen mit der Zieldatenbank kompatiblen Datentyp enthält. Um neue Mappings hinzuzufügen oder zu löschen, klicken Sie auf die Schaltflächen Anhängen, Einfügen und Löschen.
6.Klicken Sie auf Fertig stellen. Bestätigen Sie die Meldung, die nun angezeigt wird, mit OK.
Es wird nun ein Abhängigkeitsdiagramm generiert, in dem Sie alle der zuvor definierten Einstellungen, darunter auch die Datentyp-Mappings überprüfen (und gegebenenfalls ändern können). In diesem Beispiel übernehmen wir die Standardeinstellungen unverändert.
Schritt 4: Zusammenführen von Programmcode aus dem UModel-Projekt
1.Klicken Sie im Menü Projekt auf Merge Programmcode aus UModel-Projekt.
2.Belassen Sie die Standardeinstellungen unverändert und klicken Sie auf OK.
Daraufhin wird ein Datenbankaktualisierungsskript generiert und, wie unten gezeigt, in einem Dialogfeld angezeigt. Sie können das Skript nun direkt in UModel ausführen oder es in einer Datei speichern. Wenn Sie Altova DatabaseSpy installiert haben, können Sie das Skript auch in DatabaseSpy, das bessere Datenbankverwaltungsfunktionen hat, öffnen und ausführen.
Es wird empfohlen, das generierte Skript unbedingt zu überprüfen und gegebenenfalls zu ändern, bevor Sie es an der Zieldatenbank ausführen.
Wenn eine Quelldatenbank Objektnamen (wie z.B. Indizes oder Sekundärschlüssel) enthält, die auf Datenbankebene nicht eindeutig sind, kann das Datenbankaktualisierungsskript nicht erfolgreich ausgeführt werden. So könnte eine Microsoft Access-Datenbank etwa mehrere Indizes mit demselben Namen enthalten. Wenn die Zieldatenbank doppelt vorhandene Namen für Indizes nicht akzeptiert, müssen Sie das Aktualisierungsskript bearbeiten, sodass alle erforderlichen Objektnamen eindeutig sind.
Eventuell müssen Sie das Skript auch aktualisieren, um die Größe von Spalten den Anforderungen der Zieldatenbank entsprechend zu ändern. |
Nachdem Sie das Skript ausgeführt haben (entweder direkt in UModel oder extern in einem Tool wie z.B. DatabaseSpy), werden die erforderlichen Tabellen, Spalten sowie Indizes und Constraints in der SQLite-Zieldatenbank neu erstellt. Beachten Sie, dass SQLite (Version 3.6.19) die von der SQL-Anweisung bereitgestellten Namen von Sekundärschlüssel-Constraints akzeptiert, aber keine Möglichkeit bietet, diese aus der Datenbank abzurufen (Sekundärschlüssel-Constraints werden mit einem beliebigen Namen, der nicht der tatsächliche Name ist, abgerufen). Um sicherzustellen, dass in Ihrem Datenbankmodell die tatsächlichen Objektnamen, so wie sie von der Datenbank bereitgestellt werden, angezeigt werden, führen Sie eine umgekehrte Aktualisierung vom Modell in die Datenbank durch. Führen Sie zu diesem Zweck den Menübefehl Projekt | Merge UModel-Projekt aus Programmcode. Daraufhin wird das Modell aktualisiert, sodass die Objektnamen, wie sie von der Datenbank bereitgestellt werden, angezeigt werden.