I dagens selvstudie lærer du, hvordan du bruger et visuelt databasemodelleringsværktøj til at tegne et databasediagram og automatisk generere SQL. Specifikt vil vi gennemgå, hvordan du bruger MySQL Workbench, et visuelt databasedesignværktøj på tværs af platforme.
Hvad er MySQL Workbench?
MySQL Workbench er et kraftfuldt værktøj udviklet af MySQL med tre primære funktionalitetsområder:
- SQL-udvikling :Erstatter MySQL-forespørgselsbrowser. Giver brugeren mulighed for at oprette forbindelse til en eksisterende database og redigere og udføre SQL-forespørgsler.
- Datamodellering :Komplet visuel databasedesign og modellering.
- Databaseadministration :Erstatter MySQL-administrator. Grafisk grænseflade til at starte/stoppe servere, oprette brugerkonti, redigere konfigurationsfiler osv.
I denne øvelse vil vi fokusere på Datamodellering aspekt for at oprette en database fra bunden, og så bare et hurtigt kig på SQL-editoren for at udføre vores genererede SQL-script og oprette databasen i MySQL.
MySQL Workbench er tilgængelig til Windows, Linux og Mac OSX. Der er to forskellige udgaver:Community OSS Edition og den kommercielle Standard Edition . Fællesskabsudgaven er Open Source og GPL-licenseret, som du ville forvente. Det er fuldt funktionelt, og det er det, vi skal bruge i denne artikel. Den kommercielle udgave tilføjer nogle ekstra funktioner, såsom skema- og modelvalidering eller dokumentationsgenerering.
Bemærk:dette selvstudie er baseret på Community OSS Edition version 5.2 (5.2.16), som i øjeblikket er i betaversion på skrivende tidspunkt (april 2010).
Planlægning af vores database
For at lære at bruge MySQL Workbench, bruger vi en meget simpel database til online klasser som et eksempel. Antag, at en gruppe lærere ønsker at tilbyde onlinekurser for flere fag ved hjælp af Skype eller anden videokonferencesoftware. Til vores lille projekt har vi besluttet, at vi skal gemme følgende oplysninger:
Når vi tegner vores diagram, skal vi også kende sammenhængen mellem disse grupper af data; så det må vi hellere tænke over nu!
- En lærer kan undervise i mange fag
- Et fag kan undervises af mange lærere
- Hver klasse har kun én lærer
- En lærer kan undervise i mange klasser
- En elev kan deltage i mange klasser
- Én klasse har mange elever
- Et hold kan have flere timer (på en uge)
- På en bestemt dag og time kan der være flere hold
- En klasse handler om ét emne
- Et emne kan undervises i mange klasser
På dette tidspunkt har vi al den information, vi behøver for at møde stjernen i dette show...
Send MySQL Workbench
Det er tid til at lancere Workbench. I datamodelleringsdelen af startskærmen klikker vi på 'Opret ny EER-model' , og følgende skærmbillede vises:
Når vi opretter en ny databasemodel, indeholder den standard mydb-skemaet. Vi kan omdøbe det og bruge det som vores DB-skema. En databasemodel kan have flere forskellige skemaer.
Kataloget til højre viser hvert element i vores skema og giver os mulighed for at trække og slippe elementer til diagrammer, hvis det er nødvendigt.
At have de separate sektioner for fysiske skemaer og EER-diagrammer og muligheden for at inkludere flere skemaer i én databasemodel kan være forvirrende. Det næste afsnit forklarer disse begreber, og hvordan de hænger sammen.
Afklarende begreber
Det fysiske skema indeholder alle de nødvendige dele til at definere databasen:tabeller, kolonner, typer, indekser, begrænsninger osv. Det er det, vi virkelig definerer. Hvert objekt tilføjet i den grafiske model vises også i det fysiske skema. Det er faktisk en visuel måde at definere vores skema på.
Vi kan have flere skemaer for den samme databasemodel på samme måde, som vi kan have flere databaser i en MySQL-server. Hvert skema vil være en MySQL-database. For eksempel, på næste skærmbillede har vi to skemafaner:
Hvis vi genererer SQL-scriptet, vil vi have to separate CREATE DATABASE-sætninger - faktisk vil vi have CREATE SCHEMA, som kun er et synonym.
CREATE SCHEMA IF NOT EXISTS `schema1`; CREATE SCHEMA IF NOT EXISTS `schema2`;
"EER står for Extended (eller Enhanced) Entity-Relationship . EER-diagrammer er blot en måde at modellere dataene og relationerne mellem data ved hjælp af standardsymboler"
De vil blive opført som databaser i MySQL-serverværten, når du bruger SHOW DATABASES.
Hvad er et EER-diagram? EER står for Udvidet (eller Enhanced) Entity-Relationship>. EER-diagrammer er blot en måde at modellere dataene og forholdet mellem data ved hjælp af standardsymboler. EER-modeller kan være komplekse, men MySQL Workbench bruger kun en delmængde af alle mulige grafiske elementer, fordi formålet med dette diagram (i dette værktøj) er at få hvert element kortlagt til det fysiske skema.
Vi kan bruge et EER-diagram til at definere hele databasen eller kun små dele. For eksempel kan vi have et skema med fem tabeller defineret og derefter oprette et nyt diagram for at definere yderligere to tabeller ved hjælp af den visuelle editor. Diagrammet vil kun indeholde to tabeller, men disse to tabeller vil også blive inkluderet i skemaet sammen med de foregående fem.
Oprettelse af vores tabeller
Tilbage til vores første eksempel; vi er nødt til at omdøbe standardskemaet ved at dobbeltklikke på navnet. På dette tidspunkt har vi to muligheder:Vi kan begynde at tilføje tabeller til vores fysiske skema ved hjælp af ikonet tilføj tabel, eller vi kan starte et EER-diagram og tilføje alle tabellerne der.
Jeg foretrækker at tilføje et nyt diagram fra begyndelsen og oprette mit skema visuelt; Men for at vise, hvordan man gør det med begge metoder, skal vi oprette de første to tabeller i skemafanen og derefter fortsætte med EER-diagrammet.
Når du klikker på Tilføj tabel ikon, åbner tabeleditoren som en fane nedenfor:
Ved at bruge tabeleditoren ændrer vi tabelnavnet og skifter til kolonnefanen (i fanerne under editoren) for at indtaste vores kolonner. Vi kan vælge datatypen (der er en rulleliste med alle MySQL-datatyper), tildele standardværdi, hvis det er nødvendigt, og vi har syv afkrydsningsfelter til at markere en af følgende egenskaber:
- PK - Primær nøgle
- NN - Ikke null
- UQ - Unik
- BIN - Binær
- FN - Usigneret
- ZF - Nulfyldning
- AI - Autoincrement
Go Visual
Dette er en måde at tilføje vores tabeller på, selvom vi også kan oprette dem ved hjælp af diagrammerne. Hvis vi klikker på Tilføj diagram ikon nu, vil vi begynde et nyt, tomt diagram, og det er ikke det, vi ønsker. Vi ønsker, at de to tabeller, vi lige har oprettet, skal være i diagrammet.
Hvis vi går til menuen, skal du vælge Model/Create Diagram from Catalog Objects , nu har vi vores diagram og er klar til at fortsætte.
Vælg tabelikonet til venstre; markøren skifter til en hånd med et lille bord. Klik derefter et vilkårligt sted på lærredet for at oprette en ny tabel.
Nu skal du bare dobbeltklikke på tabellen, og redigeringsfanen vises for at redigere navn, kolonner, typer osv. - på samme måde som vi gjorde før.
Efter at have indtastet kolonnedetaljerne for de nye tabeller, er vi klar til at begynde at tegne relationerne.
Tegnende forhold
I den lodrette værktøjslinje til venstre har vi seks værktøjer til rådighed til at skabe relationer.
Du skal ikke bekymre dig om det sidste, vi forklarer det senere. For 1:1 og 1:n relationerne har vi to forskellige typer symboler:identificerende og ikke identificerende. Hvad betyder det?
Et forhold anses for at identificere, når en tabel er fuldstændig afhængig af, at den anden eksisterer.
Et forhold anses for at identificere, når en tabel er fuldstændig afhængig af, at den anden eksisterer. En række i den tabel afhænger af en række i den anden tabel. Et almindeligt eksempel er at have et separat bord til at opbevare telefoner for brugere. Det kan være nødvendigt at have det i en anden tabel, for der kan være flere telefoner til én bruger, men hver række i den tabel er helt afhængig af brugeren - den hører til til brugeren.
Du skal være opmærksom på, at relationer har nogle implikationer. Hvis vi vil lave de fysiske tabeller i MySQL, skal relationer kortlægges på en eller anden måde. Der er et par regler for at kortlægge relationer i tabeller:
- 1:1-forhold . Primærnøgle til en af tabellerne er inkluderet som fremmednøgle i den anden tabel.
- 1:n relationer . Den primære nøgle for tabellen på '1'-siden tilføjes som fremmednøgle i tabellen på 'n'-siden.
- n:m-relationer . En ny tabel (sammenføjningstabel) oprettes. Den primære nøgle er sammensat af de primære nøgler fra de to originale tabeller.
Identificerende relationer bruges typisk til de jointabeller, der er oprettet ud fra en mange-til-mange-relation. Disse nye tabeller er helt afhængige af de to originale tabeller.
Også i tilfælde af 1:1 og 1:n identificerende relationer, vil den introducerede fremmednøgle være en del af den primære nøgle for den tabel, der danner en sammensat primærnøgle.
Den gode nyhed er, at MySQL Workbench kender disse regler bedre end de fleste af os. Vi tegner blot vores linjer, og fremmednøglerne eller jointabellerne vil automatisk blive oprettet. Vi kan også vælge at gøre det manuelt, som vi snart vil se.
For at tegne en relation skal du klikke på ikonet og derefter klikke på de to tabeller, der skal relateres. For en-til-mange relationer skal du først klikke på "mange" sidebordet og derefter på "en" sidebordet. Lad os se, hvordan man gør det for n:m lærer-fag-forholdet og for 1:n lærer-klasser.
Standardnavnet tildelt for fremmednøglerne og til jointabellerne kan ændres globalt i Rediger/Preferences/Model Tab , eller kun for det aktuelle projekt i Model/Model Options .
Hvis vi ikke ønsker, at tabeller og fremmednøgler skal genereres på denne måde, kan vi bruge det mystiske "sjette symbol."
Det "sjette symbol" opretter en relation ved at bruge eksisterende kolonner, hvilket betyder, at du allerede har inkluderet de nødvendige fremmednøgler i dine tabeller og oprettet de nødvendige jointabeller (n:m mapping-tabeller). Da vi allerede har oprettet disse Join-tabeller, behøver vi ikke n:m-relationer; kun 1:n er tilgængelig.
Når vi har defineret alle vores relationer, skal vores diagram se sådan ud:
Vær opmærksom på, at vi har brugt standard MySQL Workbench notation til diagrammerne, men du kan ændre det i Model/Object Notation og model/relationsnotation. Dette er et eksempel på vores model i klassisk notation:
På dette tidspunkt er vores model klar, og vi kan generere SQL for at skabe MySQL-databasen.
Generering af SQL
Vælg File/Export/Forward Engineer SQL CREATE Script . Vi er kun tre guideskærme væk fra at generere vores fil!
Vi har endda mulighed for at gennemgå og redigere den genererede SQL, før vi gemmer den:
Og det er det. Når du klikker på Afslut, vil SQL-scriptet blive genereret og gemt. Nu kan vi bruge det på enhver måde, vi ønsker. Vi kan indlæse den ved at bruge kommandolinje-mysql-klienten:
mysql> KILDE scriptnavn.sql
Eller vi kan bruge MySQL Workbench til at afslutte arbejdet, oprette forbindelse til vores MySQL-server og køre scriptet.
Tilslutning til en MySQL-server
Vælg Database/Administrer forbindelser fra menuen, og klik på NY .
Hvis du ikke vil angive adgangskoden her, bliver du bedt om den, når det er nødvendigt. Klik på "Test forbindelse" for at kontrollere, om dine parametre er korrekte, og klik derefter på Luk.
Nu, for at indlæse scriptet, bruger vi SQL-editoren. Vælg Database/Forespørgselsdatabase i hovedmenuen; et vindue beder dig om at vælge en forbindelse, og derefter åbnes SQL editor-fanen.
Klik nu på lynikonet for at udføre SQL-scriptet, og din database vil blive genereret!
Vi kunne også have genereret MySQL-databasen direkte fra modellen uden at referere til den faktiske fil ved hjælp af Database/Forward Engineer fra menuen; Jeg finder det dog nyttigt at generere scriptet og derefter bruge det, som jeg vil.