Entity Relationship (ER) modell
Låt oss använda MySQL Workbench för att rita ett ER-diagram över de tabeller vi har hittills. Det kan hjälpa oss att få en mental överblick av vilka delar som finns i vår databas.
Entity (entitet) motsvarar tabellerna och Relationship (koppling/relation) motsvara de kopplingar som finns mellan tabellerna.
#Databasmodellering
När man modellerar en databas brukar man använda någon typ av “entity-relationship” diagram (ER-diagram). Man brukar börja med att utgå från en text som beskriver databasen, dess entiteter och deras relationer.
“På skolan jobbar lärare. Skolan erbjuder kurser vid olika kurstillfällen under läsåret. Läsåret är indelat i läsperioder. Varje kurs har en lärare som agerar kursansvarig.”
Ungefär så gäller för vår databas skolan så här långt.
#Reverse engineering
Termen reverse engineering kan här innebära att skapa en ER-modell utifrån en befintlig databas. I verktyget MySQL WorkBench möjligheten att rita upp ett ER-diagram på det viset.
Vi prövar med databasen skolan och letar reda på menyvalet “Database -> Reverse Engineer…”. Vi klickar oss fram i de rutor som kommer upp och slutligen får vi fram en modell över databasen. Modellen innehåller alla tabeller och vyer som vi skapat.
Man kan behöva flytta runt tabellerna så man får en överskådlig struktur. Så här blir det för mig när jag fokuserar på de tre huvudtabellerna.
Ur diagrammet ovan kan vi utläsa att “kurser har ett eller flera kurstillfällen” och att “lärare kan vara ansvariga för ett eller flera kurstillfällen”. Båda dessa modelleras enligt kardinalitet 1..N
. Kardinalitet ger ett extra värde på relationen och anger hur många instanser som är berörda.
Rent strikt är det så att en kurs kan ha 0 eller flera kurstillfällen 0..N
och en lärare kan vara kursansvarig för 0 eller flera kurstillfällen 0..N
. En kurs behöver inte ha kurstillfällen och det finns lärare som inte är kursansvariga. Sådant kategoriserar vi som nyanser i en ER-modell och vi är nöjda med de stora begreppen, den större bilden som ger oss en översikt av tabellerna och dess kopplingar.
Att modellera och rita ER-diagram är en egen historia i sig. För tillfället nöjer vi oss med att konstatera att det finns denna typen av diagram och framförallt ser vi att det går bra att skapa diagrammen från en befintlig databas.
#Olika sätt att rita
Det finns olika notationer att använda när man ritar ett ER-diagram “för hand”. Vilken notation man väljer behöver inte spela någon större roll. Välj en som passar i den arbetsgruppen du är medlem i.
Här är några exempel på vanliga notationer.
Vill du läsa mer om ER-modellering så finns artikeln “Kokbok för databasmodellering”.
#Revision history
- 2022-01-04: (C, mos) Genomgången inför v2 och MariaDB.
- 2019-01-28: (B, mos) Genomgången inför vt19.
- 2018-01-02: (A, mos) Första versionen, uppdelad av större dokument.