I dagens handledning kommer du att lära dig hur du använder ett visuellt databasmodelleringsverktyg för att rita ett databasdiagram och automatiskt generera SQL. Specifikt kommer vi att granska hur man använder MySQL Workbench, ett plattformsoberoende, visuellt databasdesignverktyg.
Vad är MySQL Workbench?
MySQL Workbench är ett kraftfullt verktyg utvecklat av MySQL med tre primära funktionalitetsområden:
- SQL-utveckling :Ersätter MySQL-frågewebbläsaren. Tillåter användaren att ansluta till en befintlig databas och redigera och köra SQL-frågor.
- Datamodellering :Komplett visuell databasdesign och modellering.
- Databasadministration :Ersätter MySQL-administratör. Grafiskt gränssnitt för att starta/stoppa servrar, skapa användarkonton, redigera konfigurationsfiler etc.
I den här självstudien kommer vi att fokusera på Datamodellering aspekt för att skapa en databas från början, och ta sedan en snabb titt på SQL-redigeraren för att köra vårt genererade SQL-skript och skapa databasen i MySQL.
MySQL Workbench är tillgängligt för Windows, Linux och Mac OSX. Det finns två olika utgåvor:Community OSS Edition och den kommersiella Standard Edition . Community-utgåvan är öppen källkod och GPL-licens, som du kan förvänta dig. Det är fullt funktionellt och är det vi kommer att använda i den här artikeln. Den kommersiella utgåvan lägger till några extra funktioner, såsom schema- och modellvalidering eller dokumentationsgenerering.
Obs:den här handledningen är baserad på Community OSS Edition version 5.2 (5.2.16), för närvarande i betaversion när detta skrivs (april 2010).
Planerar vår databas
För att lära dig hur man använder MySQL Workbench kommer vi att använda en mycket enkel databas för onlinekurser som ett exempel. Anta att en grupp lärare vill erbjuda onlinekurser för flera ämnen, med hjälp av Skype eller någon annan programvara för videokonferenser. För vårt lilla projekt har vi bestämt att vi behöver lagra följande information:
När vi ritar vårt diagram måste vi också känna till sambanden mellan dessa grupper av data; så vi bör tänka på det nu!
- En lärare kan undervisa i många ämnen
- Ett ämne kan undervisas av många lärare
- Varje klass har bara en lärare
- En lärare kan undervisa i många klasser
- En elev kan gå på många lektioner
- En klass har många elever
- En klass kan ha flera timmar (på en vecka)
- På en viss dag och timme kan det finnas flera klasser
- En klass handlar om ett ämne
- Ett ämne kan undervisas i många klasser
Vid det här laget har vi all information vi behöver för att möta stjärnan i denna show...
Skicka in MySQL Workbench
Det är dags att lansera Workbench. I datamodelleringsdelen av startskärmen klickar vi på 'Skapa ny EER-modell' , och följande skärm visas:
När vi skapar en ny databasmodell innehåller den standardmydb-schemat. Vi kan byta namn på det och använda det som vårt DB-schema. En databasmodell kan ha flera olika scheman.
Katalogen till höger visar alla element i vårt schema och låter oss dra och släppa element till diagram om det behövs.
Att ha de separata avsnitten för fysiska scheman och EER-diagram och möjligheten att inkludera flera scheman i en databasmodell kan vara förvirrande. Nästa avsnitt förklarar dessa begrepp och hur de är relaterade.
Förtydligande begrepp
Det fysiska schemat innehåller alla nödvändiga delar för att definiera databasen:tabeller, kolumner, typer, index, begränsningar, etc. Detta är vad vi egentligen definierar. Varje objekt som läggs till i den grafiska modellen visas också i det fysiska schemat. Det är faktiskt ett visuellt sätt att definiera vårt schema.
Vi kan ha flera scheman för samma databasmodell på samma sätt som vi kan ha flera databaser i en MySQL-server. Varje schema kommer att vara en MySQL-databas. Till exempel, på nästa skärm, har vi två schemaflikar:
Om vi genererar SQL-skriptet kommer vi att ha två separata CREATE DATABASE-satser - faktiskt kommer vi att ha CREATE SCHEMA som bara är en synonym.
CREATE SCHEMA IF NOT EXISTS `schema1`; CREATE SCHEMA IF NOT EXISTS `schema2`;
"EER står för Extended (eller Enhanced) Entity-Relationship . EER-diagram är bara ett sätt att modellera data och relationerna mellan data med hjälp av standardsymboler"
De kommer att listas som databaser inom MySQL-servervärden när du använder SHOW DATABASES.
Nu, vad är ett EER-diagram? EER står för Extended (eller Enhanced) Entity-Relationship>. EER-diagram är bara ett sätt att modellera data och relationerna mellan data med hjälp av standardsymboler. EER-modeller kan vara komplexa, men MySQL Workbench använder bara en delmängd av alla möjliga grafiska element, eftersom syftet med detta diagram (i det här verktyget) är att alla element ska mappas till det fysiska schemat.
Vi kan använda ett EER-diagram för att definiera hela databasen, eller bara små delar. Till exempel kan vi ha ett schema med fem tabeller definierade och sedan skapa ett nytt diagram för att definiera ytterligare två tabeller med hjälp av den visuella redigeraren. Diagrammet kommer bara att innehålla två tabeller, men de två tabellerna kommer också att inkluderas i schemat, tillsammans med de tidigare fem.
Skapa våra tabeller
Tillbaka till vårt första exempel; vi måste byta namn på standardschemat genom att dubbelklicka på namnet. Vid det här laget har vi två möjligheter:vi kan börja lägga till tabeller till vårt fysiska schema med hjälp av ikonen för att lägga till tabell, eller så kan vi starta ett EER-diagram och lägga till alla tabeller där.
Jag föredrar att lägga till ett nytt diagram från början och skapa mitt schema visuellt; men för att visa hur man gör det med båda metoderna kommer vi att skapa de två första tabellerna på schemafliken och sedan fortsätta med EER-diagrammet.
När du klickar på Lägg till tabell ikonen, öppnas tabellredigeraren som en flik nedan:
Med hjälp av tabellredigeraren ändrar vi tabellnamnet och byter till kolumnfliken (i flikarna under editorn) för att komma in i våra kolumner. Vi kan välja datatyp (det finns en rullgardinslista med alla MySQL-datatyper), tilldela standardvärden, om det behövs, och vi har sju kryssrutor för att markera någon av följande egenskaper:
- PK - Primär nyckel
- NN - Inte null
- UQ – Unik
- BIN - binär
- FN - Osignerad
- ZF - Nollfyllning
- AI - Autoincrement
Go Visual
Detta är ett sätt att lägga till våra tabeller, men vi kan också skapa dem med hjälp av diagrammen. Om vi klickar på Lägg till diagram ikon nu kommer vi att börja ett nytt, tomt diagram, och det är inte vad vi vill. Vi vill att de två tabellerna som vi just skapade ska finnas i diagrammet.
Om vi går till menyn väljer du Modela/Skapa diagram från katalogobjekt , nu har vi vårt diagram och är redo att fortsätta.
Välj tabellikonen till vänster; pekaren ändras till en hand med ett litet bord. Klicka sedan var som helst på arbetsytan för att skapa en ny tabell.
Nu behöver du bara dubbelklicka på tabellen, så visas redigeringsfliken för att redigera namn, kolumner, typer etc. - på samma sätt som vi gjorde tidigare.
Efter att ha angett kolumninformationen för de nya tabellerna är vi redo att börja rita relationerna.
Teckna relationer
I det vertikala verktygsfältet till vänster har vi sex tillgängliga verktyg för att skapa relationer.
Oroa dig inte för det sista, vi kommer att förklara det senare. För relationerna 1:1 och 1:n har vi två olika typer av symboler:identifierande och icke-identifierande. Vad betyder det?
En relation anses identifiera när en tabell är helt beroende av att den andra existerar.
En relation anses identifiera när en tabell är helt beroende av att den andra existerar. En rad i den tabellen beror på en rad i den andra tabellen. Ett vanligt exempel är att ha ett separat bord för att lagra telefoner för användare. Det kan vara nödvändigt att ha det i en annan tabell, eftersom det kan finnas flera telefoner för en användare, men varje rad i den tabellen är helt beroende av användaren - den tillhör till användaren.
Du bör vara medveten om att relationer har vissa implikationer. Om vi vill skapa de fysiska tabellerna i MySQL måste relationer kartläggas på något sätt. Det finns några regler för att mappa relationer till tabeller:
- 1:1-relationer . Primärnyckel för en av tabellerna ingår som främmande nyckel i den andra tabellen.
- 1:n relationer . Primärnyckeln för tabellen på '1'-sidan läggs till som främmande nyckel i tabellen på 'n'-sidan.
- n:m-relationer . En ny tabell (join-tabell) skapas. Primärnyckeln består av primärnycklarna från de två ursprungliga tabellerna.
Identifierande relationer används vanligtvis för kopplingstabellerna som skapas från en många-till-många-relation. Dessa nya tabeller är helt beroende av de två ursprungliga tabellerna.
Dessutom, i fallet med 1:1 och 1:n identifierande relationer, kommer den introducerade främmande nyckeln att vara en del av primärnyckeln för den tabellen, och bilda en sammansatt primärnyckel.
Den goda nyheten är att MySQL Workbench kan dessa regler bättre än de flesta av oss. Vi ritar bara våra linjer och de främmande nycklarna eller sammanfogningstabellerna kommer att skapas automatiskt. Vi kan också välja att göra det manuellt, som vi kommer att se inom kort.
För att rita en relation, klicka på ikonen och klicka sedan på de två tabellerna för att relatera. För en-till-många-relationer, klicka först på sidobordet "många" och sedan på sidobordet "en". Låt oss se hur man gör det för relationen n:m lärare-ämnen och för 1:n lärare-klasser.
Standardnamnet som tilldelas för främmande nycklar och för sammanfogningstabellerna kan ändras globalt i Redigera/Inställningar/Model-fliken , eller bara för det aktuella projektet i Modell/Modell Options .
Om vi inte vill att tabeller och främmande nycklar ska genereras på detta sätt kan vi använda den mystiska "sjätte symbolen."
Den "sjätte symbolen" skapar en relation med befintliga kolumner, vilket betyder att du redan har inkluderat de nödvändiga främmande nycklarna i dina tabeller och skapat de nödvändiga sammanfogningstabellerna (n:m mappningstabeller). Eftersom vi redan har skapat dessa Join-tabeller behöver vi inte n:m-relationer; endast 1:n är tillgängligt.
När vi har alla våra relationer definierade bör vårt diagram se ut så här:
Var medveten om att vi har använt standard MySQL Workbench notation för diagrammen, men du kan ändra det i Model/Object Notation och modell/relationsnotation. Det här är ett exempel på vår modell i klassisk notation:
Vid det här laget är vår modell klar och vi kan generera SQL för att skapa MySQL-databasen.
Genererar SQL
Välj File/Export/Forward Engineer SQL CREATE Script . Vi är bara tre guideskärmar från att skapa vår fil!
Vi har till och med möjlighet att granska och redigera den genererade SQL-koden innan vi sparar den:
Och det är allt. Genom att klicka på Slutför kommer SQL-skriptet att genereras och sparas. Nu kan vi använda det på vilket sätt vi vill. Vi kan ladda den med kommandoraden mysql-klient:
mysql> SOURCE scriptName.sql
Eller så kan vi använda MySQL Workbench för att avsluta arbetet, ansluta till vår MySQL-server och köra skriptet.
Ansluter till en MySQL-server
Välj Databas/hantera anslutningar från menyn och klicka på NY .
Om du inte vill ställa in lösenordet här kommer du att bli ombedd att ange det när det behövs. Klicka på "Testa anslutning" för att kontrollera om dina parametrar är korrekta och klicka sedan på stäng.
Nu, för att ladda skriptet, använder vi SQL-redigeraren. Välj Databas/Frågedatabas i huvudmenyn; ett fönster uppmanar dig att välja en anslutning, och sedan öppnas fliken SQL-redigerare.
Klicka nu på blixtikonen för att köra SQL-skriptet, så kommer din databas att genereras!
Vi kunde också ha genererat MySQL-databasen direkt från modellen, utan att referera till den faktiska filen, med Databas/Forward Engineer från menyn; Men jag tycker att det är användbart att skapa skriptet och sedan använda det som jag vill.