Notasjoner og faser i LearnER

Det finnes flere dialekter av ER, også om vi kun ser på kråkefot-notasjon.

  1. Kråkefot som i læreboken: Dette er standardvalget.
  2. Forenklet kråkefot: Ikke alle ønsker å skille mellom identifiserende og ikke-identifiserende forhold (for tidlig), og tegner alle forhold med heltrukne linjer.
  3. UML: Det blir stadig mer vanlig å bruke (forenklede) UML klassediagrammer til datamodellering.

Dessuten: Ikke alle synes at det har noen hensikt å dele opp konseptuell og logisk databasedesign i to faser. Du kan da gå rett på den logiske datamodellen, med primærnøkler og fremmednøkler.

For å illustrere de ulike tegnemåtene bruker vi et felles eksempel.

Kråkefot som i læreboken

Applikasjonen legger opp til at man først bygger opp en konseptuell datamodell, som tegnet i kapittel 7, og deretter oversetter til en logisk datamodell, som tegnet i kapittel 8. Muligheten for å gå videre til logisk modell dukker først opp som et valg etter at man har laget en korrekt konseptuell modell.

Figuren under viser et eksempel på en konseptuell datamodell for databasen til et sosialt nettverk. Merk spesielt:

 

 

Neste figur viser tilsvarende logiske modell. Merk spesielt:

I overgangen fra konseptuell til logisk modell, så vil applikasjonen automatisk sette PK på alle identifikatorer, men du må selv legge til øvrige primærnøkler og fremmednøkler. Det innebærer å legge til navn som attributter og deretter merke disse som primærnøkkel og/eller fremmednøkkel.

Notasjonen for logiske datamodeller som brukes i LearnER kan for øvrig betraktes som en stilisert utgave av kråkefot-visning i MySQL Workbench (uten datatyper og symbolikk for å vise NOT NULL).

 

 

Forenklet kråkefot

Noen ønsker ikke å vektlegge forskjellen på identifiserende og ikke-identifiserende forhold, spesielt ikke i en tidlig fase. Hvis man dessuten fokuserer på valg av entiteter og forhold innledningsvis, så kan en konseptuell modell uten attributter da tegnes slik:

 

 

Overgangen til logisk modell vil innebære å legge på kolonner samt å definere primærnøkler og fremmednøkler. Resultatet kan bli som vist under - der man heller ikke i den logiske modellen skiller mellom identifiserende og ikke-identifiserende forhold.

 

 

UML

UML (Unified Modeling Language) er et objektorientert modelleringsspråk som også kan brukes for å tegne datamodeller, ved en tilpasning av såkalte klassediagrammer.

To enkle "UML-varianter" for eksemplet med sosialt nettverk er vist under. Første diagram er en konseptuell modell, der vi ignorerer attributtene.

 

 

Neste diagram er en logisk datamodell med UML-notasjon. Skillelinjen mellom konseptuell og logisk modell er her trukket på et høyere abstraksjonsnivå enn med standardinnstillingene i LearnER. I første fase skal man kun velge ut entitetene og lage forhold. Deretter legger man til attributter og merker av for primærnøkler og fremmednøkler.

 

 

Kommentar: Man kan tenke seg noen mulige varianter/utvidelser av UML-notasjonen i LearnER.

6. utgave av Connolly & Begg: Database Systems, som er en mye brukt engelsk lærebok i databaser, har lagt om notasjonen for ER datamodellering fra Chen til UML, og er en god kilde for valg av UML-notasjon i LearnER.

 

Eksempel: Sosialt nettverk

Diagrammene som illustrerer de ulike notasjonene bygger alle på oppgave 7.10 i læreboken. Oppgaveteksten er gjengitt her.

Et sosialt nettverk lagrer data om personer og relasjoner. Hver person kan bygge opp en profil som består av opplysninger om navn, adresse, e-post, fødselsdato og kjønn samt et profilbilde. To personer kan bli enige om å være venner. I tillegg kan hver enkelt organisere vennene sine i grupper. Hver person har en hjemmeside i systemet. Det er mulig å skrive innlegg på sin egen side og siden til en venn. Det er bare mulig å slette innlegg på sin egen side. Hvert innlegg har en dato, en tittel og et innhold (en tekst). Hver person kan velge om sin egen side skal være lesbar for alle, alle venner eller kun personer i visse vennegrupper.