MySQL workbench tutorial

Als je databases complexer worden raakt het steeds lastiger om het overzicht te behouden op de database structuur. Via een administratietool als PHPmyadmin krijg je wel een goed beeld van de actuele situatie en relaties maar het is erg lastig om “visueel” te maken hoe zaken in elkaar zitten. Zowel voor jezelf als voor eventuele opdrachtgevers met wie je de database-opzet wilt delen. Daarnaast komt er een moment dat het uittypen van alle velden met hun configuraties een erg vervelend werkje wordt.

MySQL workbench is je gereedschapskist
MySQL workbench is een zogenoemd visuele database design pakket en de community versie is beschikbaar onder de GPL licenties voorwaarden.De afgelopen edities is MySQL workbench verder samengebracht met het administrator pakket waardoor je vanuit het programma eigenlijk alles rondom een database(server) kunt configureren.

De werking in het kort
Het programma is in basis niet zo erg complex maar de functionaliteiten zijn redelijk diepgaand. Ik zal hieronder kort uitleggen hoe je zelf je eerste database ontwerpt met het programma.

Als je het programma opstart krijg je onderstaand scherm:

Kies in het midden onder voor “create new EER model” (EER staat voor Enhanced Entity-Relationship). Je krijgt dan onderstaand scherm:

Laten we voor het voorbeeld even uitgaan dat we een database willen maken met auto’s (car) en merken (manufacturer) met dus een relatie waarbij één merk meerdere auto’s maakt. Veel dieper lijkt me niet nodig. We noemen de database ‘test’.

Dubbelklik eerst op “mydb” bovenin je scherm om de naam, en eventueel de collation (werk zelf standaard met utf-8 general), aan te passen.

We hebben nu de basis gelegd. Dubbelklik nu op “add diagram” bovenin. Je krijgt nu onderstaand scherm:

Klik nu links op het “place new table” icoontje (7e van boven). Je krijgt nu een nieuwe tabel in je scherm te zien. Dubbelklik om hem te configureren. Onderin je scherm krijg je nu de tabel opties. Als het goed is zie je nu iets als:

Pas eerst de naam van de tabel aan naar “car” en klik daarna op columns. Voer nu de kolommen in die je belangrijk vind. Voor nu houden we het eenvoudig met een kolom voor het id, de naam en een veld voor de motorbeschrijving. Het ziet er dan ongeveer zo uit:

We doen hetzelfde voor de fabrikanten tabel. Nu komt het leuke stuk. We willen natuurlijk een relatie hebben tussen de twee tabellen. Afhankelijk van de situatie kun je kiezen voor verschillende soorten relaties maar in dit geval voldoet een 1:n relatie. één fabrikant die meerdere auto’s maakt.

Klik links op het 1:n icoontje. Klik op de “car” tabel en dan op de “manufacturer” tabel en je relatie is een feit. Automatisch neemt hij veldeigenschappen als datatype, unsigned etc over van je manufacturer tabel dus alles is in één keer eigenlijk in orde. Als  het goed is heb je nu iets als:

Stel dat je nu ook nog wilt veranderen wat er gebeurd bij een update of delete dan kun je dit doen in het tabje “foreign keys” onderin. Klik op de tabel waar de relatie invloed op heeft (de “car” tabel dus), dan op het tabje “foreign keys”. Je ziet dan:

Standaard staat alles op “no action”. Als je nu wilt dat bijvoorbeeld alle auto’s verwijderd worden als het merk verwijderd wordt dan zet je hem bij delete op “cascade” enzovoorts.

Je schema is nu klaar. Nou ja, klaar niet maar het voorbeeld laat aardig zien hoe je ermee kunt werken. Wat je nu kunt doen is het schema exporteren als SQL create sript zodat je het direct in je MySQL server kunt uitvoeren en alle tabellen voor je gemaakt worden volgens je model. Dit doe je via “file -> export > forward engineer SQL CREATE script”.

Wat nog leuker is, is de mogelijkheid om je model met een live database te synchroniseren. Hiervoor heb je wel toegang nodig tot de database server vanaf je pc!. Mocht je dit hebben dan kun je via “database -> synchronize model” een connectie opgeven (en opslaan voor later) naar je MySQL server. Hij vergelijkt dan de tabellen in je database en die van je model met elkaar en geeft aan waar ze verschillen. Je kunt dan per tabel aangeven of je het model of je database wilt updaten. Hierna voer je de mutaties uit en synchroniseert hij de tabellen. Enkele opmerkingen hierbij;

  • Maak ALTIJD backups van je te synchroniseren database voor je echt iets doet. In het verleden gebeurde het wel eens dat mijn workbench het een goed idee vond de online database te legen en mijn model volledig in de war te gooien.
  • De te synchroniseren database moet dezelfde naam en collation hebben voor een optimale werking van de syncing.
  • Bepaalde zaken lopen soms iets vreemd. Als je bijvoorbeeld een enum aanmaakt met de values (‘appel’, ‘peer’, ‘ei’) en hem synced dan loopt alles goed maar hij zal blijven proberen iedere keer weer dit veld te syncen. Dit omdat MySQL de spaties tussen de values weghaalt en workbench dus vind dat ze niet gelijk zijn. Leermoment: mocht workbench structureel proberen een veld / tabel te synchroniseren wat hetzelfde lijkt, probeer dan te kijken naar spaties, default values die in MySQL al standaard zijn waardoor hij ze “leeg” laat qua value, collations die afwijken etc.

En nu?
Volgens mij dekt dit aardig de basis hoe je in workbench een model kunt ontwerpen en exporteren. Ga je voor visueel plezier (en overzicht bij complexere schema’s) dan kun je de kleur van de tabel in het overzicht aanpassen. Dit doe je door op de tabel te klikken en dan links het tabje “properties” aan te klikken. De bovenste waarde is de kleur van de achtergrond. Dit kun je zowel voor 1 tabel als voor een selectie tegelijk instellen. Daarnaast kun je “regions” invoeren. Dit zijn kaders met een naam en kleur die je om blokken met tabellen heen kunt zetten om zo bijvoorbeeld alles van het authenticatie-systeem in een apart blok te zetten.

Ik zocht even een goed voorbeeld van de regions zoals je ze kunt gebruiken en kwam dit schema tegen van ECartservice.net. Misschien een beetje “heavy” maar het idee is wel duidelijk lijkt me :)

MySQL workbench downloaden
http://dev.mysql.com/downloads/workbench/5.2.html

ps. Als je van een beetje spanning houdt is het zeker een aanrader om zo nu en dan een alpha of beta versie te downloaden. Deze betekenen vaak weer een berg aan nieuwe mogelijkheden, grafische leukheden etc. Natuurlijk met enige voorzichtigheid doen maar ik ben altijd wel blij met deze pre-releases.

Geef een reactie

Jouw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *