Mysql Workbench
Ik heb voor het ontwerp van de database maar eens gekozen voor open source tool: MySql Workbench. Ik moet zeggen: een erg mooie tool. (let op: op dit moment alleen nog onder windows te krijgen, voor linux kun je DBDesigner 4 gebruiken (eveneens open source), die blijft beschikbaar totdat workbench ook voor linux het levenslicht ziet).
Na installeren en opstarten verschijnt het hoofdscherm met een lege database erin die mydb heet. Dat lijkt niet wat we willen dus rechtsklikken op het databasesymbool en kies edit schema.

Ik heb de database scolafavs genoemd. Nu we hier toch zijn kunnen we gelijk de charset van de database op utf8 zetten (utf8-genral-ci). Nu gaan we het ERD schema zelf tekenen. Dubbelklik op add diagram. Er wordt een nieuw scherm geopend om het schema op te tekenen. Klik nu op het icoontje dat eruit ziet als een tabelletje (Place a new table). De muiscursor verandert nu als je boven het werkplaat beweegt, in een handje met een tabelletje. Plaats de tabel nu door op het werkblad te klikken. Door op het vlakje met table1, de lege tabel, te dubbelklikken opent zich onderin het scherm een serie tabbladen waarmee de naam van de tabel kan worden ingevoerd en de velden in de tabel. Vul nog niet de relaties-velden (FK) in, dat gaat straks automatisch.
De tabellen zien er nu zo uit:
links(id, naam, url)
groups(id, naam)
users(id, naam, un, pw)
id is steeds int, PK en autonumber (checkbox AI) en dus ook not null (checkbox NN)
Let op: de tabelnamen zijn in meervoud, omdat CakePHP ze zo verwacht en dan weet hoe het model moet worden gemaakt.
Nu de FK relaties. Eerst gaan we controleren hoe de gegenereerde FK-velden zullen worden genoemd. Opnieuw, om optimaal van de active recordset van CakePHP gebruik te maken moeten de foreign keys van de vorm ..._id zijn (waarbij op de ... de tabelnaam verschijnt waarmee gelinkt wordt) in plaats van id_.... Tevens moet de primary key van de tabellen id heten.
Om zeker te weten dat dit naar wens gaat moet je de settings bekijken (tools > options).

Een user heeft n groepen en die bestaan weer uit n links.
Kies "place a new 1..n non-identifying relationschip" (icoontje 6e van onder, identifying is voor gedeeltelijke relatie in een n:m tabel). Kijk in de statusbalk (please select the table to receive the foreign key). Klik op de 'links' tabel, in de statusbalk verschijnt nu select the referenced table. Klik op de 'groups' tabel. De relatie wordt getekend. Zo kan de tweede relatie tussen 'groups' en 'users' ook getekend worden. Het model ziet er nu zo uit:

Om dit model om te zetten in een .sql bestand, kies File > export > forward engineer CREATE script. In de popup: Generate DROP TABLE en kies een outputnaam (bijv. D:\scolafavs.sql) > next > finish
Nu heb je een mysql-script (.sql) waarmee je de database kunt vullen. Je kunt hiervoor phpmyadmin gebruiken. Je hoeft niet eerst een database aanmaken, er wordt een gemaakt die scolafavs heet, als je tenminste de database zo genoemd hebt (bij edit schema, hierboven). We zijn klaar om terug te gaan naar CakePHP!
Het complete Mysql Workbench bestand is hier te downloaden, maar zelf maken is natuurlijk leuker!
Geen opmerkingen:
Een reactie posten