Leksjon 2: Lage databasetabeller

Før du kan registrere data og lage spørringer må du definere databasetabellene: Hva skal tabellene hete? Hvilke kolonner skal de inneholde? Hva slags data vil bli lagret i de ulike kolonnene? SQL har en egen kommando for å lage tabeller: CREATE TABLE.

Hver tabell bør ha en primærnøkkel for entydig å kunne identifisere rader i tabellen. En database består av mange tabeller. Fremmednøkler sørger for å etablere logiske sammenhenger mellom tabellene. Forretningsregler bidrar til å sikre kvaliteten på data som blir registrert.

Kom i gang med denne leksjonen

Læringsmål

Pensum

Avsnitt 3.1-3.2 fra Databasesystemer.

Nettsidene til læreboken

Forelesning

Lage og bruke tabeller (dvs. lysark 1 – 21)

Video ★ Skjerm ★ Utskrift

Oppgaver

Oppgavene går ut på å bygge opp en database for sykkelutleie. Du skal først opprette tabeller for å holde rede på sykler, kunder og utleieforhold. Deretter skal du importere data fra tekstfiler.

Du har ikke rettigheter til å lage egne databaser på itfag.usn.no, så etterhvert kan det lønne seg å slette øvingstabeller fra tidligere leksjoner.

Tabellene i ferdig database

A. Lage tabeller: Sykkelmodeller og sykler

Databasen skal ta vare på opplysninger om sykkelmodeller og (konkrete) sykler – i to forskjellige tabeller:

Bedriften disponerer altså et antall sykler ("kopier") av hver sykkelmodell, kanskje 2 sykler av modell 1, 3 sykler av modell 2 osv.

Tips:

B. Lage tabeller: Kunder og utleieforhold

Databasen skal utvides med informasjon om kunder og utleieforhold:

Tips:

C. Teste primærnøkler og fremmednøkler med phpMyAdmin

Du skal nå teste primærnøkler og fremmednøkler ved å registrere data direkte i brukergrensesnittet til phpMyAdmin:

D. Importere data

Du skal nå importere data fra fire tekstfiler på CSV-format (Comma Separated Values). Hver linje på filene svarer til en rad i tilhørende databasetabell. Første linje inneholder kolonnenavn, og verdiene er i vårt tilfelle adskilt med semikolon (skilletegn er altså ikke alltid komma). Slike filer egner seg godt som overføringsformat mellom ulike databaser.

Sjekk at innholdet i tabellene er som forventet før du går videre.

modell.csv ★ sykkel.csv ★ kunde.csv ★ utleie.csv

E. Forretningsregler med NOT NULL og UNIQUE

Endre SQL-koden du laget i oppgave C, slik at både fornavn og etternavn på kunder må fylles ut (NOT NULL), og dessuten skal systemet hindre at to kunder har samme mobilnummer (UNIQUE). Kjør skriptet på nytt, og sjekk deretter at forretningsreglene virker.

Utvid med tilsvarende regler på andre kolonner i databasen, der du mener det er hensiktsmessig.

F. Forretningsregler og fremmednøkler

Du skal nå lage hjelpetabeller for å ta vare på lovlige farger og kategorier, og deretter bruke fremmednøkler for å sikre at kun lovlige verdier blir registrert.

Kommentar

Avsnitt 3.2.8 i læreboken tar for seg CHECK-regler, som vi f.eks. kunne brukt til å sikre at alle utleiepriser var større enn 0 kr. og mindre enn 500 kr. MySQL støtter slike regler fra versjon 8.0. Tidligere versjoner godtar at vi bruker slike CHECK-regler i CREATE TABLE, men kontrollerer desverre ikke at reglene blir fulgt. For å få slike versjoner av MySQL til å sjekke denne typen av forretningsregler må man bruke såkalte triggere, se avsnitt 13.3 (ikke pensum).

Fra og med versjon 10.2.1 støtter MariaDB CHECK-regler, som skal bety at dette nå er støttet på itfag.usn.no.

G. Ekstraoppgave (uten løsning)

Ta utgangspunkt i eksempeldatabasen til oppgave 1, eksamen vår 2018.

Skriv først SQL-kommandoer som oppretter tabellene til denne databasen. Prøv deretter å generere testdata til tabellene (trenger ikke å være de samme som vist i vedlegget til eksamensoppgaven). Tips: Bruk mulighetene for generering av eksempeldata forklart på denne nettsiden.

Før du går videre

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

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

Test deg selv quiz