Visual Database Creation med MySQL Workbench

I dagens handledning lär du dig att använda en visuell databasmodelleringsverktyg för att rita ett databasschema och generera automatiskt SQL. I synnerhet ska vi granska hur du använder MySQL Workbench, ett plattformsdesignverktyg för visuellt databas.

Vad är MySQL Workbench?

MySQL Workbench är ett kraftfullt verktyg som utvecklats av MySQL med tre huvudområden av funktionalitet:

  • SQL-utveckling: Ersätter MySQL-fråges webbläsare. Tillåter användaren att ansluta till en befintlig databas och redigera och utfö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 denna handledning fokuserar vi på Datamodellering aspekt för att skapa en databas från början och då har du bara en snabb titt på SQL-redigeraren för att utföra vårt genererade SQL-skript och skapa databasen inom MySQL.

MySQL Workbench är tillgänglig för Windows, Linux och Mac OSX. Det finns två olika utgåvor: Community OSS Edition och den kommersiella standard utgåva. Gemenskapsutgåvan är Open Source och GPL licensierad, som du förväntar dig. Det är fullt fungerande, och det är det vi ska använda i den här artikeln. Den kommersiella upplagan lägger till några extra funktioner, till exempel schema och modellvalidering eller dokumentationsgenerering.

Obs! Denna handledning är baserad på Community OSS Edition version 5.2 (5.2.16), för närvarande i beta-version vid skrivningstidpunkten (april 2010).

Planerar vår databas

För att lära dig hur du använder MySQL Workbench använder vi en mycket enkel databas för online-klasser som ett exempel. Antag att en grupp lärare vill erbjuda online-klasser för flera ämnen, med hjälp av Skype eller någon annan videokonferensprogram. 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å veta relationerna mellan dessa datagrupper; så vi tänker bättre på det nu!

  • En lärare kan lära sig många ämnen
  • Ett ämne kan undervisas av många lärare
  • Varje klass har bara en lärare
  • En lärare kan undervisa många lektioner
  • En elev kan delta i många klasser
  • En klass har många studenter
  • En klass kan ha flera timmar (i veckan)
  • Vid 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 denna tidpunkt har vi all information vi behöver för att träffa stjärnan i den här utställningen ...

Skicka i MySQL Workbench

Det är dags att starta Workbench. I datamodelldelen på startskärmen klickar vi "Skapa ny EER-modell", och följande skärm visas:

När vi skapar en ny databasmodell innehåller den standard mydb 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 varje element i vårt schema och låter oss dra och släppa element till diagram om det behövs.

Att ha separata avsnitt för fysiska schemata 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 bitar för att definiera databasen: tabeller, kolumner, typer, index, begränsningar etc. Det här definierar vi verkligen. 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 på en MySQL-server. Varje schema kommer att bli en MySQL-databas. Till exempel i nästa skärm har vi två schema flikar:

Om vi ​​genererar SQL-skriptet kommer vi att ha två separata CREATE DATABASE-satser - vi kommer faktiskt att skapa CREATE som bara är en synonym.

SKAPA SCHEMA OM INTE EXISTERA 'schema1'; SKAPA SCHEMA OM INTE EXISTERAR 'schema2';

"EER står för Utökad (eller förbättrad) Entity-Relationship. EER-diagram är bara ett sätt att modellera data och relationerna mellan data med hjälp av standard symboler "

De kommer att listas som databaser inom MySQL-serveren när du använder SHOW DATABASES.

Nu, vad är ett EER-diagram ?. EER står för Utökad (eller förbättrad) Entity-Relationship>. EER-diagram är bara ett sätt att modellera data och relationerna mellan data med hjälp av standard symboler. EER-modeller kan vara komplexa, men MySQL Workbench använder endast en delmängd av alla möjliga grafiska element, eftersom syftet med detta diagram (i det här verktyget) är att ha varje element mappat 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 skapa sedan ett nytt diagram för att definiera ytterligare två tabeller med den visuella redigeraren. Diagrammet innehåller bara två tabeller, men de två tabellerna kommer också att inkluderas i schemat, tillsammans med de föregående fem.

Skapa våra bord

Tillbaka till vårt första exempel; vi måste byta namn på standard schema genom att dubbelklicka på namnet. Vid denna tidpunkt har vi två möjligheter: vi kan börja lägga till tabeller i vårt fysiska schema med hjälp av ikonen för att lägga till tabell, eller vi kan 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; För att visa hur man gör det med båda metoderna kommer vi dock att skapa de första två tabellerna i schemanfliken och fortsätt sedan med EER-diagrammet.

När du klickar på Lägg till tabell ikonen öppnas tabellredigeraren som en flik nedan:

Med tabellredigeraren ändrar vi tabellnamnet och byter till fliken kolumner (i flikarna nedanför redigeraren) för att ange våra kolumner. Vi kan välja datatyp (det finns en rullgardinslista med alla MySQL datatyper), tilldela standardvärdet om det behövs, och vi har sju kryssrutor för att markera någon av följande egenskaper:

  • PK - Primär nyckel
  • NN - Ej noll
  • UQ - Unikt
  • BIN - Binär
  • FN - Underskriven
  • ZF - Noll fyllning
  • AI - Autoincrement

Gå visuellt

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 ikonen nu börjar vi ett nytt, tomt diagram, och det är inte vad vi vill ha. Vi vill ha de två tabellerna som vi just skapat för att vara i diagrammet.

Om vi ​​går till menyn väljer du Modell / 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 i duken för att skapa ett nytt bord.

Nu behöver du bara dubbelklicka på bordet, och redigeringsfliken verkar redigera namn, kolumner, typer etc. - på samma sätt som vi gjorde tidigare.

Efter att du har angett kolumninformationen för de nya tabellerna är vi redo att börja rita relationerna.

Ritningsförhållanden

I den vertikala verktygsfältet till vänster har vi sex verktyg tillgängliga för att skapa relationer.

Oroa dig inte om den sista, vi kommer att förklara det senare. För förhållandena 1: 1 och 1: n har vi två olika typer av symboler: identifierande och icke identifierande. Vad betyder det?

Ett förhållande anses vara att identifiera när ett bord är helt beroende av det andra att existera.

Ett förhållande anses vara att identifiera när ett bord är helt beroende av det andra att existera. 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 ett annat bord, 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 borde vara medveten om att relationer har några konsekvenser. Om vi ​​vill skapa de fysiska tabellerna i MySQL måste relationer mappas på något sätt. Det finns några regler för att kartlägga relationer till tabeller:

  • 1: 1 relationer. Primär nyckel för en av tabellerna ingår som främmande nyckel i den andra tabellen.
  • 1: n relationer. Den primära nyckeln till tabellen i "1" -sidan läggs till som främmande nyckel i tabellen på "n" -sidan.
  • n: m-relationer. Ett nytt bord (bli med i tabellen) skapas. Den primära nyckeln består av de primära nycklarna från de två ursprungliga tabellerna.

Identifierande relationer används vanligtvis för deltagartabellerna som skapats från ett många till många förhållanden. Dessa nya tabeller är helt beroende av de två ursprungliga tabellerna.

I fallet med 1: 1 och 1: n identifierande relationer kommer också den inlämnade främmande nyckeln att vara en del av den primära nyckeln för den tabellen, som bildar en komposit primär nyckel.

Den goda nyheten är att MySQL Workbench känner till dessa regler bättre än de flesta av oss. Vi ritar bara våra linjer, och de främmande nycklarna eller gå med i tabellerna skapas automatiskt. Vi kan också välja att göra det manuellt, som vi ser snart.

För att rita ett förhållande, klicka på ikonen och klicka sedan på de två tabellerna som ska relateras. För ett till många relationer, klicka på "många" sidobordet först och sedan på "en" sidobordet. Låt oss se hur man gör det för n: m lärare-ämnesrelationen, och för 1: e lärarklasserna.

Standardnamnet som tilldelats för de utländska nycklarna och för deltagartabellerna kan ändras globalt i Redigera / Inställningar / Modellflik, eller bara för det här projektet i Modell / Modellalternativ.

Om vi ​​inte vill skapa tabeller och främmande nycklar på detta sätt kan vi använda den mystiska "sjätte symbolen".

Den "sjätte symbolen" skapar ett förhållande med befintliga kolumner, vilket innebär att du redan har inkluderat de nödvändiga främmande nycklarna i dina tabeller och skapat de nödvändiga anslutningsborden (n: m kartläggningstabeller). Eftersom vi redan har skapat dessa Ansluta tabeller behöver vi inte n: m-relationer; endast 1: n är tillgängligt.

När vi har definierat alla våra relationer ska 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 Modell / Objektnotation och modell / relation notation. Detta är ett exempel på vår modell i Classic notation:

Vid denna tidpunkt är vår modell klar och vi kan generera SQL för att skapa MySQL-databasen.

Generera SQL

Välj File / Export / Forward Engineer SQL SKAPA Script. Vi är bara tre guiden skärmar bort från att generera vår fil!


Vi har även möjlighet att granska och redigera den genererade SQL innan du sparar den:

Och det är allt. När du klickar på avslutas genereras och sparas SQL-skriptet. Nu kan vi använda det på något sätt som vi önskar. Vi kan ladda den med kommandoraden mysql-klient:

mysql> SOURCE scriptName.sql

Eller vi kan använda MySQL Workbench för att avsluta arbetet, ansluta till vår MySQL-server och köra skriptet.

Anslutning till en MySQL-server

Välj Databas / Hantera anslutningar från menyn och klicka NY.

Om du inte vill ange lösenordet här kommer du bli uppmanad till det när det behövs. Klicka på "Testförbindelse" för att kontrollera om parametrarna är korrekta och klicka sedan på stänga.

För att ladda skriptet använder vi SQL-redigeraren. På huvudmenyn välj Databas / Query Database; ett fönster uppmanar dig att välja en anslutning, och sedan öppnas fliken SQL-editor.

Klicka nu på blixtikonet för att utföra SQL-skriptet, och din databas kommer att genereras!

Vi kunde också ha genererat MySQL-databasen direkt från modellen utan att referera till den faktiska filen, med hjälp av Databas / framåtriktad ingenjör från menyn; Jag tycker emellertid att det är användbart att generera manuset och sedan använda det som jag önskar.

Slutsats

MySQL Workbench är ett imponerande verktyg. Vi har bara sett några grundläggande möjligheter i datamodelleringsdelen, och bara tittat på SQL-redigeraren i andra halvan av denna handledning. Vi lärde oss hur man skapar en databas visuellt och ritar diagram som kan hållas som dokumentation. Du kan exportera diagrammen som en PNG, SVG, PDF eller PostScript-fil. Tack för att du läste och låt mig veta vad du tycker!