Visual Database Creation met MySQL Workbench

In de tutorial van vandaag leer je hoe je een hulpprogramma voor visuele database-modellering gebruikt om een ​​databasediagram te tekenen en automatisch SQL te genereren. We zullen in het bijzonder bekijken hoe MySQL Workbench, een platformonafhankelijke, visuele databaseontwerptool, moet worden gebruikt.

Wat is MySQL Workbench?

MySQL Workbench is een krachtige tool ontwikkeld door MySQL met drie primaire functionaliteitgebieden:

  • SQL-ontwikkeling: Vervangt MySQL-querybrowser. Hiermee kan de gebruiker verbinding maken met een bestaande database en SQL-query's bewerken en uitvoeren.
  • Datamodellering: Volledig visueel databaseontwerp en modellering.
  • Database administratie: Vervangt MySQL-beheerder. Grafische interface om servers te starten / stoppen, gebruikersaccounts aan te maken, configuratiebestanden te bewerken, enz.

In deze zelfstudie concentreren we ons op de Datamodellering om een ​​nieuwe database te maken en kijk dan even naar de SQL-editor om ons gegenereerde SQL-script uit te voeren en de database te maken binnen MySQL.

MySQL Workbench is beschikbaar voor Windows, Linux en Mac OSX. Er zijn twee verschillende edities: de Community OSS-editie en de commercial standaard editie. De communityeditie is Open Source en GPL-licentie, zoals u zou verwachten. Het is volledig functioneel, en is degene die we in dit artikel zullen gebruiken. De commerciële editie voegt enkele extra functionaliteiten toe, zoals schema- en modelvalidatie of het genereren van documentatie.

Opmerking: deze tutorial is gebaseerd op de Community OSS Edition versie 5.2 (5.2.16), die momenteel in bètaversie is op het moment van schrijven (april 2010).

Onze database plannen

Om te leren hoe MySQL Workbench te gebruiken, gebruiken we een zeer eenvoudige database voor online klassen als voorbeeld. Stel dat een groep leraren online lessen wil aanbieden voor verschillende onderwerpen, met behulp van Skype of andere video-conferencing-software. Voor ons kleine project hebben we besloten dat we de volgende informatie moeten opslaan:

Bij het tekenen van ons diagram moeten we ook de relaties tussen deze groepen gegevens kennen; dus we kunnen daar nu beter over nadenken!

  • Eén docent kan veel onderwerpen onderwijzen
  • Eén vak kan door veel leraren worden onderwezen
  • Elke klas heeft slechts één leraar
  • Eén leerkracht kan veel lessen geven
  • Een student kan vele lessen bijwonen
  • Eén klas heeft veel studenten
  • Eén klas kan meerdere uren hebben (in een week)
  • Op een bepaalde dag en een uur kunnen er verschillende klassen zijn
  • Een klas is ongeveer één onderwerp
  • Eén vak kan in veel klassen worden onderwezen

Op dit punt hebben we alle informatie die we nodig hebben om de ster van deze show te ontmoeten ...

Stuur MySQL Workbench

Het is tijd om Workbench te lanceren. In het gedeelte voor gegevensmodellering van het startscherm klikken we 'Creëer nieuw EER Model', en het volgende scherm verschijnt:

Wanneer we een nieuw databasemodel maken, bevat dit het standaard mydb-schema. We kunnen het hernoemen en gebruiken als ons DB-schema. Een databasemodel kan verschillende schema's hebben.

De catalogus rechts toont elk element in ons schema en laat ons toe om elementen naar diagrammen te slepen en neer te zetten, indien nodig.

Het hebben van de afzonderlijke secties voor fysieke schema's en EER-diagrammen en de mogelijkheid om meerdere schema's op te nemen in één databasemodel kan verwarrend zijn. Het volgende gedeelte geeft uitleg over deze concepten en hoe deze gerelateerd zijn.

Verduidelijkende concepten

Het fysieke schema bevat alle benodigde stukjes om de database te definiëren: tabellen, kolommen, typen, indexen, beperkingen, enz. Dit is wat we echt definiëren. Elk object toegevoegd in het grafische model verschijnt ook in het fysieke schema. Het is in feite een visuele manier om ons schema te definiëren.

We kunnen verschillende schema's hebben voor hetzelfde databasemodel op dezelfde manier waarop we verschillende databases op een MySQL-server kunnen hebben. Elk schema zal een MySQL-database zijn. In het volgende scherm hebben we bijvoorbeeld twee schema-tabbladen:

Als we het SQL-script genereren, hebben we twee afzonderlijke CREATE DATABASE-instructies - in feite zullen we CREATE SCHEMA hebben, wat slechts een synoniem is.

SCHEMA MAKEN INDIEN BESTAAT NIET 'schema1'; SCHEMA MAKEN INDIEN NIET 'schema2' BESTAAT;

"EER staat voor Uitgebreide (of verbeterde) entiteitsrelatie. EER-diagrammen zijn slechts een manier om de gegevens en de relaties tussen gegevens te modelleren met behulp van standaardsymbolen "

Ze worden weergegeven als databases in de MySQL-serverhost bij het gebruik van SHOW DATABASES.

Wat is nu een EER-diagram? EER staat voor Uitgebreide (of verbeterde) entiteitsrelatie>. EER-diagrammen zijn slechts een manier om de gegevens en de relaties tussen gegevens te modelleren met behulp van standaardsymbolen. EER-modellen kunnen complex zijn, maar MySQL Workbench gebruikt slechts een subset van alle mogelijke grafische elementen, omdat het doel van dit diagram (in deze tool) is om elk element toegewezen te krijgen aan het fysieke schema.

We kunnen een EER-diagram gebruiken om de hele database te definiëren, of alleen kleine delen. We kunnen bijvoorbeeld een schema met vijf tabellen definiëren en vervolgens een nieuw diagram maken om nog twee tabellen te definiëren met behulp van de visuele editor. Het diagram bevat slechts twee tabellen, maar deze twee tabellen worden ook opgenomen in het schema, samen met de vorige vijf.

Onze tabellen maken

Terug naar ons eerste voorbeeld; we moeten het standaardschema hernoemen door op de naam te dubbelklikken. Op dit moment hebben we twee mogelijkheden: we kunnen beginnen met het toevoegen van tabellen aan ons fysieke schema met behulp van het pictogram voor toevoegen van tabellen, of we kunnen een EER-diagram starten en alle tabellen daar toevoegen.

Ik geef er de voorkeur aan om vanaf het begin een nieuw diagram toe te voegen en mijn schema visueel te maken; Om echter te laten zien hoe we het met beide methoden moeten doen, gaan we de eerste twee tabellen in het schema-tabblad maken en vervolgens doorgaan met het EER-diagram..

Wanneer u op klikt Tabel toevoegen pictogram, wordt de tabeleditor geopend als een tabblad hieronder:

Met behulp van de tabeleditor wijzigen we de tabelnaam en schakelen naar het tabblad kolommen (in de tabbladen onder de editor) om onze kolommen in te voeren. We kunnen het gegevenstype kiezen (er is een vervolgkeuzelijst met alle gegevenstypes van MySQL), toewijzen standaardwaarde, indien nodig, en we hebben zeven selectievakjes om een ​​van de volgende eigenschappen te markeren:

  • PK - Primaire sleutel
  • NN - Niet nul
  • UQ - Uniek
  • BIN - Binair
  • VN - Niet ondertekend
  • ZF - Geen vulling
  • AI - Autoincrement

Ga visueel

Dit is een manier om onze tabellen toe te voegen, hoewel we ze ook kunnen maken met behulp van de diagrammen. Als we op klikken Diagram toevoegen pictogram nu, we beginnen een nieuw, leeg diagram en dat is niet wat we willen. We willen dat de twee tabellen die we zojuist hebben gemaakt in het diagram worden weergegeven.

Als we naar het menu gaan, selecteert u Model / maak een diagram van Catalogusobjecten, nu hebben we ons diagram en zijn klaar om verder te gaan.

Selecteer het tabelpictogram aan de linkerkant; de aanwijzer verandert in een hand met een klein tafeltje. Klik vervolgens ergens in het canvas om een ​​nieuwe tabel te maken.

Nu hoeft u alleen maar op de tabel te dubbelklikken en verschijnt het editor-tabblad om de naam, kolommen, typen, enz. Op dezelfde manier te bewerken als voorheen.

Na het invoeren van de kolomgegevens voor de nieuwe tabellen, zijn we klaar om de relaties te tekenen.

Relaties tekenen

In de verticale werkbalk aan de linkerkant hebben we zes tools beschikbaar om relaties te maken.

Maak je geen zorgen over de laatste, we zullen het later uitleggen. Voor de relaties 1: 1 en 1: n hebben we twee verschillende soorten symbolen: identificeren en niet-identificeren. Wat betekent dat?

Een relatie wordt beschouwd als het identificeren wanneer de ene tabel volledig afhankelijk is van de andere om te bestaan.

Een relatie wordt beschouwd als het identificeren wanneer de ene tabel volledig afhankelijk is van de andere om te bestaan. Een rij in die tabel is afhankelijk van een rij in de andere tabel. Een gebruikelijk voorbeeld is om een ​​aparte tabel te hebben voor het opslaan van telefoons voor gebruikers. Het kan nodig zijn om het in een andere tabel te hebben, omdat er meerdere telefoons voor één gebruiker kunnen zijn, maar elke rij in die tabel is volledig afhankelijk van de gebruiker - het is behoort voor de gebruiker.

U moet zich ervan bewust zijn dat relaties enige implicaties hebben. Als we de fysieke tabellen in MySQL willen maken, moeten relaties op de een of andere manier in kaart worden gebracht. Er zijn een paar regels om relaties in tabellen in kaart te brengen:

  • 1: 1 relaties. Primaire sleutel voor een van de tabellen is opgenomen als externe sleutel in de andere tabel.
  • 1: n relaties. De primaire sleutel van de tabel aan de '1'-zijde wordt toegevoegd als een buitenlandse sleutel in de tabel aan de' n'-zijde.
  • n: m relaties. Er wordt een nieuwe tabel (join-tabel) gemaakt. De primaire sleutel bestaat uit de primaire sleutels uit de twee oorspronkelijke tabellen.

Identificerende relaties worden meestal gebruikt voor de join-tabellen gemaakt op basis van een veel-op-veel-relatie. Deze nieuwe tabellen zijn volledig afhankelijk van de twee oorspronkelijke tabellen.

Ook in het geval van 1: 1 en 1: n identificerende relaties, zal de ingevoerde buitenlandse sleutel deel uitmaken van de primaire sleutel voor die tabel, een samengestelde primaire sleutel vormen.

Het goede nieuws is dat MySQL Workbench deze regels beter kent dan de meesten van ons. We tekenen gewoon onze lijnen en de externe sleutels of join-tabellen worden automatisch gemaakt. We kunnen er ook voor kiezen om het handmatig te doen, zoals we binnenkort zullen zien.

Als u een relatie wilt tekenen, klikt u op het pictogram en klikt u vervolgens op de twee tabellen die u wilt relateren. Klik voor een-op-veel relaties eerst op de "veel" bijzettafel en vervolgens op de "één" bijzettafel. Laten we eens kijken hoe dit moet worden gedaan voor de n: m-docenten-onderwerpenrelatie en voor de 1: n-docentenklassen.

De standaardnaam die is toegewezen voor de externe sleutels en voor de join-tabellen kan wereldwijd worden gewijzigd Bewerken / Voorkeuren / Tab Model, of alleen voor het huidige project in Model / Model Opties.

Als we niet willen dat tabellen en externe sleutels op deze manier worden gegenereerd, kunnen we het mysterieuze 'zesde symbool' gebruiken.

Het "zesde symbool" maakt een relatie met bestaande kolommen, wat betekent dat u al de benodigde externe sleutels in uw tabellen hebt opgenomen en de benodigde join-tabellen hebt gemaakt (n: m toewijzingstabellen). Omdat we deze samenvoegtabellen al hebben gemaakt, hebben we geen n: m-relaties nodig; slechts 1: n is beschikbaar.

Wanneer we al onze relaties gedefinieerd hebben, zou ons diagram er zo uit moeten zien:

Houd er rekening mee dat we de standaard MySQL Workbench-notatie voor de diagrammen hebben gebruikt, maar u kunt dit wijzigen Model / Object Notatie en model / relatiemelding. Dit is een voorbeeld van ons model in Klassieke notatie:

Op dit moment is ons model gereed en kunnen we de SQL genereren om de MySQL-database te maken.

SQL genereren

kiezen Bestand / exporteer / doorstuur Engineer SQL CREATE Script. We zijn slechts drie schermen van de wizard verwijderd van het genereren van ons bestand!


We hebben zelfs de mogelijkheid om de gegenereerde SQL te bekijken en te bewerken voordat deze wordt opgeslagen:

En dat is het. Als u op Voltooien klikt, wordt het SQL-script gegenereerd en opgeslagen. Nu kunnen we het gebruiken op elke manier die we willen. We kunnen het laden met behulp van de command-line mysql client:

mysql> SOURCE scriptName.sql

Of we kunnen MySQL Workbench gebruiken om het werk af te maken, verbinding te maken met onze MySQL-server en het script uit te voeren.

Verbinding maken met een MySQL-server

kiezen Database / Verbindingen beheren uit het menu en klik op NIEUWE.

Als u hier het wachtwoord niet wilt instellen, wordt u hiernaar gevraagd wanneer dat nodig is. Klik op "Verbinding testen" om te controleren of uw parameters juist zijn en klik vervolgens op Sluiten.

Om het script te laden, gebruiken we de SQL-editor. Selecteer in het hoofdmenu Database / querydatabase; in een venster wordt u gevraagd een verbinding te selecteren en vervolgens wordt het tabblad SQL-editor geopend.

Klik nu op het bliksempictogram om het SQL-script uit te voeren en uw database wordt gegenereerd!

We hadden de MySQL-database ook direct vanuit het model kunnen genereren, zonder te verwijzen naar het daadwerkelijke bestand, met behulp van Database / Forward Engineer uit het menu; ik vind het echter nuttig om het script te genereren en het vervolgens te gebruiken zoals ik het wil.

Conclusie

MySQL Workbench is een indrukwekkend hulpmiddel. We hebben slechts enkele basismogelijkheden gezien in het gedeelte voor gegevensmodellering en keken pas in de tweede helft van deze zelfstudie naar de SQL-editor. We hebben geleerd om een ​​database visueel te maken en diagrammen te tekenen die als documentatie kunnen worden bewaard. U kunt de diagrammen exporteren als een PNG-, SVg-, PDF- of PostScript-bestand. Bedankt voor het lezen en laat me weten wat je ervan vindt!