Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Reverse Engineering eines Datenmodells mit Oracle SQL Developer

Einführung

Dieses Tutorial stellt die Oracle SQL Developer Data Model-Tools vor, die verwendet werden können, um ein vorhandenes Datenbankschema in ein relationales und logisches Modell zurückzuentwickeln. Stellen Sie sich einen typischen Datenbankentwicklungsprozess vor, der mit den Geschäftsbenutzeranforderungen beginnt, die als Entity-Relationship-Modell modelliert werden, das aus Entitäten, Attributen, Identifikatoren und Beziehungen besteht. Dieses E-R-Modell wird dann in ein relationales Modell umgewandelt, das aus Relationen, Attributen, Schlüsseln und Fremdschlüsseln besteht. Das relationale Modell kann dann in einer relationalen Datenbank als eine Reihe von Tabellen, Spalten und Beschränkungen implementiert werden, einschließlich Eindeutigkeits-, Primärschlüssel- und Fremdschlüsselbeschränkungen.

Wir können auf Situationen stoßen, in denen wir ein relationales Datenbankschema bereits implementiert haben, aber das ursprüngliche relationale Modell oder Entity-Relationship-Modell fehlt, das zum Entwerfen der Datenbank verwendet wurde. In diesen Situationen können wir das E-R-Modell möglicherweise durch Reverse Engineering neu erstellen das Modell aus dem Datenbankschema. Um dies zu erreichen, müssen wir die folgenden Schritte ausführen:

  1. Verbinden Sie das Datenbankschema und identifizieren Sie alle vorhandenen Tabellen, ihre Spalten und ihre Primär- und Fremdschlüsseleinschränkungen.
  2. Erstellen Sie das relationale Modell, das den vorhandenen Tabellen und Einschränkungen entspricht.
  3. Leiten Sie das E-R-Modell aus dem relationalen Modell.

Terminologie des Datenmodells

Oracle SQL Developer verwendet Begriffe, die sich geringfügig von denen unterscheiden, die normalerweise in akademischen Datenbankkursen verwendet werden. Das physische Modell (mit Schlüsseln, Fremdschlüsselbeziehungen und Indizes), das aus dem Datenbankschema extrahiert wird, wird von Oracle SQL Developer als „relationales Modell“ bezeichnet. Der Satz von Entitäten mit Beziehungslinien wird von Oracle SQL Developer als „logisches Modell“ bezeichnet.

Voraussetzungen

Stellen Sie vor Beginn dieses Lernprogramms sicher, dass Sie mit Oracle SQL Developer Version 4.x oder höher arbeiten. Leider wird Oracle 12c möglicherweise immer noch mit Version 3.x von SQL Developer ausgeliefert, der die Datenmodellierungstools fehlen.

Wenn Sie SQL Developer herunterladen und installieren müssen oder Tipps zu den ersten Schritten mit SQL Developer wünschen, sehen Sie sich bitte das Tutorial an.

Sie benötigen außerdem die Anmeldeinformationen (Hostname, Port, Dienstname, Benutzername und Kennwort) für das Musterschema „HR“ (oder ein anderes), das mit Oracle 11g und Oracle 12c ausgeliefert wird.

Die folgenden Schritte wurden mit SQL Developer 4.1 unter Windows 7 ausgeführt, das mit dem Beispielschema „HR“ in einer Oracle 12c-Datenbank verbunden war.

Reverse Engineering des relationalen Modells aus einem Datenbankschema

  1. Führen Sie Oracle SQL Developer aus und erstellen Sie eine Verbindung zum Datenbankschema, mit dem Sie arbeiten werden. In diesem Beispiel haben wir eine Verbindung zum „HR“-Schema erstellt, bei dem es sich um die Human Resources-Beispieldatenbank handelt, die mit Oracle 11g und Oracle 12c geliefert wird.
  2. Öffnen Sie das Menü Datei, wählen Sie Data Modeler und dann das Untermenü Import. Klicken Sie im Flyout-Menü auf die Auswahl Data Dictionary, wie unten gezeigt. Dadurch wird der Assistent zum Importieren von Datenwörterbüchern gestartet:
  3. Wählen Sie die Verbindung aus, mit der Sie arbeiten möchten. Sie können auch auf die Schaltfläche Hinzufügen klicken, um eine neue Verbindung hinzuzufügen. Nachdem Sie Ihre Verbindung markiert haben, klicken Sie auf die Schaltfläche Weiter>, um fortzufahren.
  4. Der nächste Schritt besteht darin, das zu importierende Schema auszuwählen. Für dieses Beispiel haben wir das Kontrollkästchen für das „HR“-Schema wie unten gezeigt aktiviert. Beachten Sie, dass die Auswahl „Importieren nach:“ New Relational Model anzeigt und der Datenbanktyp Oracle 12c ist. Klicken Sie auf die Schaltfläche Weiter>, um fortzufahren:

Die nächsten Schritte auf der nächsten Seite behandeln die Auswahl der Datenbankobjekte, die in das Modell importiert werden sollen.

  1. Der nächste Schritt ist die Auswahl der zu importierenden Datenbankobjekte. Für diese Übung wählen wir alle zu importierenden Tabellen aus. Beachten Sie, dass möglicherweise auch andere Datenbankobjekte wie Ansichten, Sequenzen, Rollen, gespeicherte Prozeduren usw. importiert werden könnten. Für diese Übung halten wir es einfach und schauen uns nur die Tabellen an. Nachdem Sie die Tabellen ausgewählt haben, klicken Sie auf die Schaltfläche Weiter>, um fortzufahren.
  2. Der letzte Schritt für den Importassistenten ist die Überprüfung der zu importierenden Datenbankobjekte. Wenn alles gut aussieht, klicken Sie auf die Schaltfläche Fertig stellen, um den Import zu starten.
  3. An diesem Punkt sehen Sie je nachdem, wie viele Tabellen Sie importieren, möglicherweise einen Fortschrittsbalken wie:
  4. Nach Abschluss erscheint ein Zusammenfassungsprotokollfenster:

    Wenn es fehlgeschlagene Anweisungen gibt, speichern Sie dieses Protokoll, um beim Debuggen zu helfen.

  5. Unter der Annahme, dass der Importvorgang ohne Fehler abgeschlossen wurde, wird ein neues relationales Modell im Fenster angezeigt. Vielleicht möchten Sie sich um die Tische herum bewegen, um eine schöne Anordnung zu treffen. Das Modell verwendet die „Krähenfuß“-Notation, wobei der „Krähenfuß“ die „Viele“-Seite der Beziehung darstellt. So hat zum Beispiel eine „Region“ viele „Länder“. Ein „Land“ hat viele „Standorte“ und so weiter.
  6. Sie können die Detailebene ändern, die im relationalen Modell angezeigt wird, indem Sie mit der rechten Maustaste auf die Leinwand klicken und das Menüelement "Details anzeigen" auswählen.

Zur Erinnerung:Die meisten Praktiker würden dies normalerweise als „physisches Datenbankmodell“ bezeichnen, da es die Datentypen, Schlüssel, Fremdschlüssel und Indizes enthält, die im Datenbankschema implementiert sind.

Schritte zum Speichern des Modells werden auf der nächsten Seite vorgestellt.

  1. An diesem Punkt erhält das Modell einen temporären Namen wie Untitled_1. Um dieses Modell im „Browser“ anzuzeigen, öffnen Sie das Menü „Ansicht“, wählen Sie „Data Modeler“ und dann „Browser“. Öffnen Sie das Design Untitled_1 und dann die relationalen Modelle und schließlich das nach Ihrer Verbindung benannte Modell, wie unten gezeigt:
  2. Klicken Sie mit der rechten Maustaste auf das Design Untitled_1 und klicken Sie auf das Menüelement Design speichern. Navigieren Sie zu einem geeigneten Ordner, um Ihre Arbeit zu speichern, und geben Sie dem Design einen Dateinamen. Klicken Sie auf die Schaltfläche Speichern, sobald dies fertig ist:

An diesem Punkt haben wir jetzt (wie Oracle es nennt) ein relationales Modell, das im Wesentlichen ein Spiegel des relationalen Datenbankschemas ist, das wir gerade importiert haben. Tatsächlich hält SQL Developer diese beiden synchronisiert, sodass sich Änderungen am Datenbankschema im relationalen Modell widerspiegeln, und wenn Änderungen am relationalen Modell vorgenommen werden, können sie in das Datenbankschema gepusht (implementiert) werden.

Dieses Modell zeigt alle Tabellen (Beziehungen), Schlüssel, Fremdschlüssel, Prüfbedingungen und Indizes, die Eindeutigkeit erzwingen können oder nicht. Beispielsweise hat die folgende Relation EMPLOYEES einen Primärschlüssel EMPLOYEE_ID, drei Fremdschlüssel (JOB_ID, MANAGER_ID und DEPARTMENT_ID) und eine eindeutige Einschränkung für die Spalte EMAIL:

Die nächsten Schritte auf der nächsten Seite beschreiben, wie der Reverse-Engineering-Prozess fortgesetzt wird, um ein logisches Modell zu erstellen.

Reverse Engineering des Entity-Relationship-Modells

An diesem Punkt haben wir ein Datenbankschema in ein relationales Modell zurückentwickelt, was ein ziemlich einfacher Prozess ist. Der letzte Schritt besteht darin, mit dem Reverse Engineering fortzufahren, um das Entity-Relationship-Modell zu erstellen. Beachten Sie, dass Oracle dies das „logische Modell“ nennt.

  1. Kehren Sie zum Datenmodell-Browser zurück und öffnen Sie die Ordner für relationale Modelle und logische Modelle wie unten gezeigt:
  2. Klicken Sie mit der rechten Maustaste auf das relationale Modell (unseres heißt sfscdb_pdb2_hr) und wählen Sie aus dem Popup-Menü wie unten gezeigt Engineer to Logical Model:
  3. Das vom Ingenieur zum logischen Modell Das Dialogfeld sollte wie unten angezeigt werden. Jede der Tabellen und Referenzen sollte überprüft werden. Jede Tabelle wird einer Entität zugeordnet und jede Fremdschlüsselreferenz sollte einer Beziehung zwischen Entitäten zugeordnet werden. Sobald alle geeigneten Elemente aus dem linken Fenster ausgewählt sind, klicken Sie auf die Schaltfläche Engineer, um das logische (ER) Modell zu erstellen.
  4. Das neue Entity-Relationship-Modell sollte wie unten gezeigt aussehen. Standardmäßig wird die „Crow’s Foot“- oder Barker-Notation verwendet.

Details der Beziehungen (die Oracle verwirrenderweise „Relationen“ nennt) können durch Doppelklicken auf die Beziehungslinie angezeigt werden. Im Beispiel unten ist die Beziehung zwischen den Entitäten „Employees“ und „Jobs“ offen. Durch die Angabe von Verbphrasen für die Felder „Name auf Quelle“ und „Name auf Ziel“ kann jede Beziehung vollständig und sehr detailliert spezifiziert werden.

Die folgende Abbildung zeigt die vollständig definierte Beziehung, die wie folgt lauten würde:

One JOB may be a job performed by One or More EMPLOYEES
One EMPLOYEE must be performing One and Only One JOB

Die Standardnotation für das ER-Modell ist die Krähenfuß- oder Barker-Notation. Um die Notation entweder in Bachman- oder Information-Engineering-Notation zu ändern, klicken Sie mit der rechten Maustaste auf eine beliebige Stelle im Diagramm und markieren Sie das Menüelement Notation. Wählen Sie eine der verfügbaren Notationen aus der angezeigten Liste aus.

Mit dem Tool „Neue Notiz“ können Sie dem ER-Modell einen Titel und andere Details hinzufügen