15.07.2013 Views

1. Hensikten med kurset - Lars Marius Garshol

1. Hensikten med kurset - Lars Marius Garshol

1. Hensikten med kurset - Lars Marius Garshol

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Innføring i databaser<br />

problemer når personen flytter, fordi vi da må oppdatere de samme dataene flere ganger. (Det<br />

er som regel slik i programutvikling at det som ikke er elegant heller ikke er lurt.)<br />

Dette problemet lar seg løse om vi lager en tabell til for personer:<br />

Navn Gateadresse Postnummer Sted Telefon<br />

Anne Tryti Dalveien 19 1800 ASKIM 69882344<br />

Jarl Andresen Nansensgt 69 4601 KRISTIANSAND 38092483<br />

Hans Hansen Hanseveien 0316<br />

Tabell 4.2<br />

OSLO 22448482<br />

Problemet blir her at ‘Navn’ ikke er egnet som primærnøkkel siden vi godt kan tenke oss at det<br />

finnes flere ‘Hans Hansen’. For å få det hele til å gå opp må vi sette inn et nytt felt som kan<br />

brukes. Dette kan enten være en teller, som fungerer slik at første post blir 1, andre 2 osv, eller<br />

f.eks. personnummer, bare det er unikt for hver post.<br />

Det vi nå mangler er en måte å fortelle Access hvilke personer som eier hvilke biler. Og det er<br />

her relasjonene kommer inn. Vi bruker en relasjon mellom bil-tabellen og person-tabellen til å<br />

koble sammen riktige par av eier og bil. Det gjør vi ved å endre ‘Eier’-feltet i bil-tabellen til<br />

‘Eiers personnummer’. Så forteller vi database-systemet (Access) at ‘Eiers personnummer’<br />

viser til ‘Personnummer’ i person-tabellen. (Formelt sier vi at ‘Eiers personnummer’ er<br />

frem<strong>med</strong>nøkkel til person-tabellen.) Siden ‘Personnummer’ er primærnøkkel i person-tabellen<br />

vil dette fungere ypperlig.<br />

4.3 Normalisering<br />

Overgangen fra et ER-light-diagram til ferdig tabell- og relasjonsstruktur skulle være grei.<br />

Dette er fremgangsmåten:<br />

<strong>1.</strong> Lag en tabell for hver entitet.<br />

2. Hver attributt blir ett felt i tabellen. (Av og til deler man opp felter som man ikke gadd<br />

tegne som flere attributter, f.eks. slik jeg under deler opp adresse i gateadresse, postnummer<br />

og sted.)<br />

3. Dersom tabellene ikke har noen naturlig primærnøkkel må en lages. (Denne behøver ikke å<br />

finnes i virkeligheten, men kan være en teller.)<br />

4. Hvert forhold blir en frem<strong>med</strong>nøkkel (og der<strong>med</strong> også et felt) i tabellen. Frem<strong>med</strong>nøkkelen<br />

må svare til den andre tabellens primærnøkkel. Dersom vi har et en-til-mange forhold lager<br />

vi et felt i tabellen til den entiteten som har ∞-tegnet på sin side.<br />

5. Lag en relasjon for hvert forhold.<br />

Dersom vi følger disse reglene får vi:<br />

<strong>1.</strong> Tabellene Person og Bil.<br />

2. Person=(Navn, Gateadresse, Postnummer, Sted, Telefon) og Bil=(Registreringsnummer,<br />

Merke). Her er adresse splittet i flere felter.<br />

3. Person=(ID_Person, Navn, Gateadresse, Postnummer, Sted, Telefon) og<br />

Bil=(Registreringsnummer, Merke). ID_Person er en teller som er satt inn.<br />

1096 - <strong>Lars</strong> <strong>Marius</strong> <strong>Garshol</strong> 19

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!