Im heutigen Tutorial erfahren Sie, wie Sie mit einem visuellen Dienstprogramm zur Datenbankmodellierung ein Datenbankdiagramm zeichnen und automatisch SQL generieren. Insbesondere sehen wir uns die Verwendung von MySQL Workbench an, einem plattformübergreifenden, visuellen Datenbankdesign-Tool.
Was ist MySQL Workbench?
MySQL Workbench ist ein leistungsstarkes Tool, das von MySQL mit drei Hauptfunktionsbereichen entwickelt wurde:
- SQL-Entwicklung :Ersetzt den MySQL-Abfragebrowser. Ermöglicht dem Benutzer, sich mit einer bestehenden Datenbank zu verbinden und SQL-Abfragen zu bearbeiten und auszuführen.
- Datenmodellierung :Vollständiges visuelles Datenbankdesign und Modellierung.
- Datenbankverwaltung :Ersetzt den MySQL-Administrator. Grafische Oberfläche zum Starten/Stoppen von Servern, Erstellen von Benutzerkonten, Bearbeiten von Konfigurationsdateien usw.
In diesem Tutorial konzentrieren wir uns auf die Datenmodellierung Aspekt, um eine Datenbank von Grund auf neu zu erstellen, und werfen Sie dann einen kurzen Blick auf den SQL-Editor, um unser generiertes SQL-Skript auszuführen und die Datenbank in MySQL zu erstellen.
MySQL Workbench ist für Windows, Linux und Mac OSX verfügbar. Es gibt zwei verschiedene Editionen:die Community OSS Edition und die kommerzielle Standard Edition . Die Community Edition ist erwartungsgemäß Open Source und GPL-lizenziert. Es ist voll funktionsfähig und wird in diesem Artikel verwendet. Die kommerzielle Edition fügt einige zusätzliche Funktionalitäten hinzu, wie z. B. Schema- und Modellvalidierung oder Dokumentationserstellung.
Hinweis:Dieses Tutorial basiert auf der Community OSS Edition Version 5.2 (5.2.16), die sich zum Zeitpunkt der Erstellung dieses Artikels (April 2010) derzeit in der Beta-Version befindet.
Planung unserer Datenbank
Um zu lernen, wie man MySQL Workbench verwendet, verwenden wir als Beispiel eine sehr einfache Datenbank für Online-Kurse. Angenommen, eine Gruppe von Lehrern möchte Online-Unterricht für mehrere Fächer unter Verwendung von Skype oder einer anderen Videokonferenzsoftware anbieten. Für unser kleines Projekt haben wir entschieden, dass wir die folgenden Informationen speichern müssen:
Beim Zeichnen unseres Diagramms müssen wir auch die Beziehungen zwischen diesen Datengruppen kennen; also denken wir besser jetzt darüber nach!
- Ein Lehrer kann viele Fächer unterrichten
- Ein Fach kann von vielen Lehrern unterrichtet werden
- Jede Klasse hat nur einen Lehrer
- Ein Lehrer kann viele Klassen unterrichten
- Ein Schüler kann an vielen Kursen teilnehmen
- Eine Klasse hat viele Schüler
- Eine Klasse kann mehrere Stunden (in einer Woche) umfassen
- An einem bestimmten Tag und zu einer bestimmten Stunde können mehrere Kurse stattfinden
- In einer Klasse geht es um ein Fach
- Ein Fach kann in mehreren Klassen unterrichtet werden
An diesem Punkt haben wir alle Informationen, die wir brauchen, um den Star dieser Show zu treffen...
MySQL Workbench einsenden
Es ist Zeit, Workbench zu starten. Im Datenmodellierungsteil des Startbildschirms klicken wir auf ’Neues EER-Modell erstellen’ , und der folgende Bildschirm wird angezeigt:
Wenn wir ein neues Datenbankmodell erstellen, enthält es das standardmäßige mydb-Schema. Wir können es umbenennen und als unser DB-Schema verwenden. Ein Datenbankmodell kann mehrere unterschiedliche Schemas haben.
Der Katalog auf der rechten Seite zeigt jedes Element in unserem Schema und ermöglicht es uns, Elemente bei Bedarf per Drag-and-Drop in Diagramme zu ziehen.
Die separaten Abschnitte für physikalische Schemata und EER-Diagramme und die Möglichkeit, mehrere Schemas in ein Datenbankmodell aufzunehmen, kann verwirrend sein. Der nächste Abschnitt erklärt diese Konzepte und wie sie zusammenhängen.
Konzepte klären
Das physische Schema enthält alle notwendigen Teile, um die Datenbank zu definieren:Tabellen, Spalten, Typen, Indizes, Einschränkungen usw. Das ist es, was wir wirklich definieren. Jedes im grafischen Modell hinzugefügte Objekt wird auch im physischen Schema angezeigt. Es ist tatsächlich eine visuelle Möglichkeit, unser Schema zu definieren.
Wir können mehrere Schemas für dasselbe Datenbankmodell haben, genauso wie wir mehrere Datenbanken auf einem MySQL-Server haben können. Jedes Schema ist eine MySQL-Datenbank. Im nächsten Bildschirm haben wir beispielsweise zwei Schema-Registerkarten:
Wenn wir das SQL-Skript generieren, haben wir zwei separate CREATE DATABASE-Anweisungen - eigentlich haben wir CREATE SCHEMA, was nur ein Synonym ist.
CREATE SCHEMA IF NOT EXISTS `schema1`; CREATE SCHEMA IF NOT EXISTS `schema2`;
"EER steht für Extended (or Enhanced) Entity-Relationship . EER-Diagramme sind nur eine Möglichkeit, die Daten und die Beziehungen zwischen Daten unter Verwendung von Standardsymbolen zu modellieren"
Sie werden als Datenbanken innerhalb des MySQL-Serverhosts aufgelistet, wenn SHOW DATABASES verwendet wird.
Was ist nun ein EER-Diagramm?. EER steht für Extended (oder Enhanced) Entity-Relationship>. EER-Diagramme sind nur eine Möglichkeit, die Daten und die Beziehungen zwischen Daten unter Verwendung von Standardsymbolen zu modellieren. EER-Modelle können komplex sein, aber MySQL Workbench verwendet nur eine Teilmenge aller möglichen grafischen Elemente, da der Zweck dieses Diagramms (in diesem Tool) darin besteht, jedes Element dem physischen Schema zuzuordnen.
Wir können ein EER-Diagramm verwenden, um die gesamte Datenbank oder nur kleine Teile zu definieren. Beispielsweise können wir ein Schema mit fünf definierten Tabellen haben und dann ein neues Diagramm erstellen, um zwei weitere Tabellen mit dem visuellen Editor zu definieren. Das Diagramm enthält nur zwei Tabellen, aber diese beiden Tabellen werden zusammen mit den vorherigen fünf auch in das Schema aufgenommen.
Unsere Tabellen erstellen
Zurück zu unserem Ausgangsbeispiel; Wir müssen das Standardschema umbenennen, indem wir auf den Namen doppelklicken. An diesem Punkt haben wir zwei Möglichkeiten:Wir können mit dem Hinzufügen von Tabellen zu unserem physischen Schema beginnen, indem wir das Symbol „Tabelle hinzufügen“ verwenden, oder wir können ein EER-Diagramm starten und alle Tabellen dort hinzufügen.
Ich bevorzuge es, ein neues Diagramm von Anfang an hinzuzufügen und mein Schema visuell zu erstellen; Um jedoch zu zeigen, wie es mit beiden Methoden geht, erstellen wir die ersten beiden Tabellen im Schema-Tab und fahren dann mit dem EER-Diagramm fort.
Wenn Sie auf Tabelle hinzufügen klicken -Symbol öffnet sich der Tabelleneditor als Registerkarte unten:
Mit dem Tabelleneditor ändern wir den Tabellennamen und wechseln auf die Registerkarte Spalten (in den Registerkarten unterhalb des Editors), um unsere Spalten einzugeben. Wir können den Datentyp auswählen (es gibt eine Dropdown-Liste mit allen MySQL-Datentypen), bei Bedarf einen Standardwert zuweisen, und wir haben sieben Kontrollkästchen, um eine der folgenden Eigenschaften zu markieren:
- PK - Primärschlüssel
- NN – Nicht null
- UQ - Eindeutig
- BIN - Binär
- UN - Unsigniert
- ZF – Nullfüllung
- KI - Autoinkrement
Visuell werden
Dies ist eine Möglichkeit, unsere Tabellen hinzuzufügen, obwohl wir sie auch mithilfe der Diagramme erstellen können. Wenn wir auf Diagramm hinzufügen klicken Symbol jetzt, beginnen wir mit einem neuen, leeren Diagramm, und das ist nicht das, was wir wollen. Wir möchten, dass die beiden Tabellen, die wir gerade erstellt haben, im Diagramm angezeigt werden.
Wenn wir zum Menü gehen, wählen Sie Modell/Diagramm aus Katalogobjekten erstellen , jetzt haben wir unser Diagramm und können fortfahren.
Wählen Sie das Tabellensymbol auf der linken Seite; der Zeiger verwandelt sich in eine Hand mit einem kleinen Tisch. Klicken Sie als Nächstes auf eine beliebige Stelle im Canvas, um eine neue Tabelle zu erstellen.
Jetzt müssen Sie nur noch auf die Tabelle doppelklicken, und der Editor-Tab erscheint, um den Namen, die Spalten, die Typen usw. zu bearbeiten - genauso wie wir es zuvor getan haben.
Nachdem Sie die Spaltendetails für die neuen Tabellen eingegeben haben, können Sie mit dem Zeichnen der Beziehungen beginnen.
Zeichnen von Beziehungen
In der vertikalen Werkzeugleiste auf der linken Seite stehen sechs Werkzeuge zur Verfügung, um Beziehungen zu erstellen.
Machen Sie sich keine Sorgen um das letzte, wir werden es später erklären. Für die 1:1- und 1:n-Beziehungen haben wir zwei verschiedene Arten von Symbolen:identifizierend und nicht identifizierend. Was bedeutet das?
Eine Beziehung gilt als identifizierend, wenn eine Tabelle vollständig von der anderen abhängig ist, um zu existieren.
Eine Beziehung gilt als identifizierend, wenn eine Tabelle vollständig von der anderen abhängig ist, um zu existieren. Eine Zeile in dieser Tabelle hängt von einer Zeile in der anderen Tabelle ab. Ein gängiges Beispiel ist eine separate Tabelle zum Speichern von Telefonen für Benutzer. Es kann notwendig sein, es in einer anderen Tabelle zu haben, da es mehrere Telefone für einen Benutzer geben kann, aber jede Zeile in dieser Tabelle ist vollständig vom Benutzer abhängig - sie gehört an den Benutzer.
Sie sollten sich bewusst sein, dass Beziehungen einige Auswirkungen haben. Wenn wir die physischen Tabellen in MySQL erstellen wollen, müssen Beziehungen irgendwie abgebildet werden. Es gibt ein paar Regeln, um Beziehungen in Tabellen abzubilden:
- 1:1-Beziehungen . Primärschlüssel für eine der Tabellen ist als Fremdschlüssel in der anderen Tabelle enthalten.
- 1:n-Beziehungen . Primärschlüssel der Tabelle auf der '1'-Seite wird als Fremdschlüssel in der Tabelle auf der 'n'-Seite hinzugefügt.
- n:m Beziehungen . Eine neue Tabelle (Join-Tabelle) wird erstellt. Der Primärschlüssel setzt sich aus den Primärschlüsseln der beiden Originaltabellen zusammen.
Identifizierende Beziehungen werden normalerweise für Join-Tabellen verwendet, die aus einer Viele-zu-Viele-Beziehung erstellt wurden. Diese neuen Tabellen sind vollständig von den beiden ursprünglichen Tabellen abhängig.
Auch im Fall von 1:1- und 1:n-Identifizierungsbeziehungen wird der eingeführte Fremdschlüssel Teil des Primärschlüssels für diese Tabelle und bildet einen zusammengesetzten Primärschlüssel.
Die gute Nachricht ist, dass MySQL Workbench diese Regeln besser kennt als die meisten von uns. Wir ziehen einfach unsere Linien und die Fremdschlüssel oder Join-Tabellen werden automatisch erstellt. Wir können dies auch manuell tun, wie wir in Kürze sehen werden.
Um eine Beziehung zu zeichnen, klicken Sie auf das Symbol und dann auf die beiden zu verknüpfenden Tabellen. Klicken Sie für Eins-zu-Viele-Beziehungen zuerst auf die Nebentabelle „Viele“ und dann auf die Nebentabelle „Eins“. Mal sehen, wie es für die n:m-Lehrer-Fächer-Beziehung und für die 1:n-Lehrer-Klassen geht.
Der für die Fremdschlüssel und für die Join-Tabellen zugewiesene Standardname kann global in Bearbeiten/Einstellungen/Registerkarte Modell geändert werden , oder nur für das aktuelle Projekt in Modell/Modelloptionen .
Wenn wir nicht möchten, dass Tabellen und Fremdschlüssel auf diese Weise generiert werden, können wir das mysteriöse „sechste Symbol“ verwenden.
Das "sechste Symbol" stellt eine Beziehung über vorhandene Spalten her, dh Sie haben bereits die notwendigen Fremdschlüssel in Ihre Tabellen aufgenommen und die notwendigen Join-Tabellen (n:m-Mapping-Tabellen) erstellt. Da wir diese Join-Tabellen bereits erstellt haben, brauchen wir keine n:m-Beziehungen; nur 1:n ist verfügbar.
Wenn wir alle unsere Beziehungen definiert haben, sollte unser Diagramm so aussehen:
Beachten Sie, dass wir die standardmäßige MySQL Workbench-Notation für die Diagramme verwendet haben, aber Sie können dies in Model/Object Notation ändern und Modell/Beziehungsnotation. Dies ist ein Beispiel unseres Modells in klassischer Notation:
An diesem Punkt ist unser Modell fertig und wir können die SQL generieren, um die MySQL-Datenbank zu erstellen.
SQL generieren
Wählen Sie File/Export/Forward Engineer SQL CREATE Script . Wir sind nur drei Assistentenbildschirme davon entfernt, unsere Datei zu generieren!
Wir haben sogar die Möglichkeit, das generierte SQL vor dem Speichern zu überprüfen und zu bearbeiten:
Und das ist es. Wenn Sie auf „Fertig stellen“ klicken, wird das SQL-Skript generiert und gespeichert. Jetzt können wir es verwenden, wie wir wollen. Wir können es mit dem Befehlszeilen-Mysql-Client laden:
mysql> SOURCE scriptName.sql
Oder wir können MySQL Workbench verwenden, um die Arbeit abzuschließen, indem wir eine Verbindung zu unserem MySQL-Server herstellen und das Skript ausführen.
Verbindung zu einem MySQL-Server herstellen
Wählen Sie Datenbank/Verbindungen verwalten aus dem Menü und klicken Sie auf NEU .
Wenn Sie das Passwort hier nicht festlegen möchten, werden Sie bei Bedarf dazu aufgefordert. Klicken Sie auf "Verbindung testen", um zu überprüfen, ob Ihre Parameter korrekt sind, und klicken Sie dann auf "Schließen".
Um das Skript zu laden, verwenden wir jetzt den SQL-Editor. Wählen Sie im Hauptmenü Datenbank/Datenbank abfragen; In einem Fenster werden Sie aufgefordert, eine Verbindung auszuwählen, und dann wird die Registerkarte „SQL-Editor“ geöffnet.
Klicken Sie nun auf das Blitzsymbol, um das SQL-Skript auszuführen, und Ihre Datenbank wird generiert!
Wir hätten die MySQL-Datenbank auch direkt aus dem Modell generieren können, ohne auf die eigentliche Datei zu verweisen, indem wir Database/Forward Engineer verwenden aus dem Menü; Ich finde es jedoch nützlich, das Skript zu generieren und es dann so zu verwenden, wie ich es möchte.