1. Hensikten med kurset - Lars Marius Garshol
1. Hensikten med kurset - Lars Marius Garshol
1. Hensikten med kurset - Lars Marius Garshol
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