Leksjon B: Fra datamodell til database

De grunnleggende konstruksjonene i ER ble introdusert i forrige leksjon. I denne leksjonen skal vi se på et par nye konstruksjoner og jobbe med litt større eksempler. For å bli god i datamodellering er det nødvendig å løse mange oppgaver!

En svak entitet er en entitet som arver primærnøkkel fra en annen entitet. Slike entiteter knyttes til den entiteten den skal arve fra med et identifiserende forhold, og tegnes med en heltrukken linje. Når vi lager mange-til-mange forhold, oppretter mange modelleringsverktøy automatisk en koblingstabell. Slike tabeller svarer til svake entiteter.

For å tegne datamodeller skal vi nå også ta i bruk MySQL Workbench. Det er et nært forhold mellom ER-diagrammer og tabellene i en database. I MySQL Workbench, der fremmednøkler blir vist i modellen, er sammenhengen svært direkte. De fleste modelleringsverktøy har mekanismer for automatisk generering av database fra et ER-diagram (forward engineering) og også mulighet for å gå den motsatte veien (reverse engineering).

Merk: Læreboken bruker en litt annen notasjon (tegnemåte) for ER-diagrammer enn det MySQL Workbench gjør. Boken skiller mellom begrepsmessige datamodeller (kapittel 7) og logiske datamodeller (kapittel 8), og foreslår at man starter med begrepsmessig modellering. I kapittel 7 blir ikke fremmednøkler vist i diagrammet, det blir de i Workbench (her går man altså rett på logiske diagrammer).

Læringsmål

Pensum

Avsnitt 7.4, 7.7, 7.8 og 8.1 fra Databasesystemer.

Nettsidene til læreboken

Forelesning

Fra datamodell til tabellstruktur.

Video Skjerm Utskrift

 

A. Oppgaver i LearnER

Prøv deg på følgende oppgaver:

Bruk (som før) oppsett med konseptuell og logisk fase og kråkefot-notasjon i begge faser, men etter at du har fått en korrekt begrepsmessig modell skal du nå også gå videre til logisk modell å ta med alle primærnøkler og fremmednøkler!

Hvis du vil ha mer "frihet", så kan du velge å gå rett på logisk fase. Da kan du sette på fremmednøkler underveis.

Tips: Løs oppgavene uten hjelp først (og gjerne på papir). Da får du trening i å velge gode navn på entiteter og attributter.

B. Oppgaver i MySQL Workbench

Du skal nå bruke MySQL Workbench for å bygge opp enkle datamodeller, som automatisk kan oversettes til MySQL databaser. Du starter med å følge en innføring i selve verktøyet (oppgave B, steg 1 – 16), deretter skal du lage et par egne datamodeller.

B: Lage datamodeller i MySQL Workbench

1. Opprette databaseforbindelse

Hvis du jobber mot en lokal database, og du ikke har opprettet brukere, kan du skrive root for brukernavn. Hvis du oppga et passord under installasjon, må du skrive inn dette for passord, og host name blir localhost.

Vis tips / Skjul tips

2. Logge på

Vis tips / Skjul tips

3. Opprette en ny datamodell

Vis tips / Skjul tips

4. Bli kjent med verktøypaletten

Vis tips / Skjul tips

5. Lage tabeller ansatt og avdeling

Vis tips / Skjul tips

6. Lage en-til-mange forhold mellom ansatt og avdeling

Vis tips / Skjul tips

7. Generere database – forward engineer

Vis tips / Skjul tips

8. Generere database – sette opsjoner

Vis tips / Skjul tips

9. Generere database – velge objekter

Vis tips / Skjul tips

10. Generere database – se på SQL-skript

Hvis skriptet inneholder en kommando CREATE SCHEMA og du kjører mot itfag.usn.no, så må du fjerne denne linjen før du kjører skriptet. Grunnen til det er at dere ikke har rettigheter til å opprette databaser på denne databasetjeneren.

Vis tips / Skjul tips

11. Generere database – sjekk status

Merk at du jobber mot den samme databasen på itfag.usn.no som du tidligere har jobbet med fra phpMyAdmin. Hvis du får feilmelding om at noen av tabellene ikke kan opprettes fordi de allerede finnes, så prøv først å slette alle tabellene manuelt. Det kan du gjøre fra phpMyAdmin eller Workbench.

Vis tips / Skjul tips

Hvis du får feilmeldinger som sier at det er en syntaksfeil når du kjører forward engineer, så kan det skyldes at MySQL Workbench ikke er konfigurert med riktig MySQL-versjon. Prøv å gå inn på meny Model og menyvalg Model Option, fjerne krysset i "Use defaults from global setting" og endre (target) versjon på MySQL-databasen til 5.7. Dette gjelder hvis du jobber mot itfag.usn.no. Hvis du bruker en lokal database, så kommer det an på hvilken versjon du har installert. Dette styrer altså hva slags SQL-kode som Workbench lager.

Vis tips / Skjul tips

12. Legge til en ny tabell prosjekt

Vis tips / Skjul tips

13. Lage et mange-til-mange forhold

Legg merke til at de to en-til-mange forholdene blir tegnet med heltrukne linjer (ikke stiplede), og at koblingstabellen arver primærnøklene fra ansatt og prosjekt. Dette kalles for svake entiteter / identifiserende forhold.

Vis tips / Skjul tips

14. Redigere koblingstabellen

Vis tips / Skjul tips

15. Lage et en-til-en forhold

Vis tips / Skjul tips

16. Ta vare på datamodellen

Vis tips / Skjul tips

C: Lage datamodell fra database – reverse engineering

Hobbyhuset

Vis tips / Skjul tips

D: Den Norske Fotturistforening

Oppgave 13, kapittel 7. Løs på papir, eller i LearnER, eller i MySQL Workbench.

Dette er en krevende oppgave. Kanskje er det lurt å gjøre noen flere enklere oppgaver i LearnER først.

E: Film og kino

Oppgave Film og kino, punkt 1. Løs på papir, eller i MySQL Workbench.

Film og kino

 

Før du går videre

Les oppsummering til kapittel 7 og 8, og sjekk at du har forstått følgende begreper:

Prøv gjerne relevante quiz-spørsmål:

Test deg selv quiz