Oblig 1 Databaser vår 2011



Like dokumenter
Løsningsforlag for oblig 1, databaser 2010

Oblig 3 Databaser vår 2011

Oppgaver Oppgave a: Sett opp mulige relasjoner

EKSAMEN. Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid:

Øvingsoppgave uke 3. Fanger i fengsel

Repetisjon: Normalformer og SQL

IST Skole Vurdering - Foresatt

1. SQL datadefinisjon og manipulering

Databaser. Relasjonsmodellen 2 Læreboka: Kap. 2 Relasjonsmodellen

BRUKERMANUAL GOSTUDYIT.COM

Veiledning for innlevering av Årsrapport

Databaser kort intro. Tom Heine Nätt

Brukermanual. gostudyit.com

Datamodellering og databaser SQL, del 2

1. Innføring i bruk av MySQL Query Browser

EKSAMEN 6102 / 6102N DATABASER

Eksamen i Internetteknologi Fagkode: IVA1379

Databaser: Relasjonsmodellen, del I

IST Skole Vurdering - Foresatt

Veiledning for innlevering av Årsrapport

En lett innføring i foreninger (JOINs) i SQL

IST Skole Fravær - Foresatt

Brukerveiledning Webline Portal for E-post Bedrift/E-post Basis

Miniverden og ER- modell

HØGSKOLEN I SØR-TRØNDELAG

Datamodellering 101 En tenkt høgskoledatabase

OKOK DataPower Learning AS Administrasjon 1

Veiledning for vedlikehold av støtteapparat og spillere i Oppegård IL Fotball

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

EKSAMEN. Les gjennom alle oppgavene før du begynner. Husk at det ikke er gitt at oppgavene står sortert etter økende vanskelighetsgrad.

Oppgave 1 1. Spørring: Resultattabell: 2. Spørring: Resultattabell: 3. Spørring:

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

EKSAMEN. Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid:

Hvordan hente ut listen over et hagelags medlemmer fra Hageselskapets nye portal

infotorg Enkel brukermanual

Oppgave 3 - normalisering

Brukerveiledning. Innlogging, profil og firmaopplysninger, opplasting av bilder og innlegging av portfolio. idaf

Benytter du deg vanligvis av elektronisk pasientjournal i ditt daglige kliniske arbeid?

Bruk av it s learning

Datamodellering og databaser SQL, del 2

Fag TDT4145 Datamodellering og databasesystemer Øving 3: Relasjonsalgebra og SQL

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

Cura 1.0. Et administrativt system for skoler med fagskoleutdanning. Registrering / login Fraværsføring Karakterføring

EKSAMEN (Konvertert fra en gammel PHP-eksamen)

Søk eiendom. Søk adresse. Søk eier. Side 1. Norges Eiendommer finnes i 2 versjoner:

1. SQL spørringer mot flere tabeller

Brukermanual. System for oversiktslister. Entreprenører


Tilkobling og Triggere

Innhold. Epostprogrammer og webmail.

HØGSKOLEN I SØR-TRØNDELAG

Datamodellering og databaser SQL, del 2

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data

Oppgave 1 (Opprett en database og en tabell)

Kontoinnstillinger. Slik kommer du til «Kontoinnstillinger»: Etter at du har logget inn trykk på piltasten og velg. Kontoinnstillinger.

Eksamen i IBE102 Webutvikling Våren 2017.

Brukermanual Helseregister.no

Installasjon av Windows 7 og Office 2016

Løsningsforslag til eksamen i IN2090 Databaser og datamodellering og INF1300 Introduksjon til databaser 6. desember :30 18:30 (4 timer)

Sensorveiledning for IN2090 og INF desember :30 18:30 (4 timer)

Applikasjonsutvikling med databaser

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Focusnet brukerveiledning hovedleder SØNDAGSSKOLEN NORGE

Pålogging til Porten og Portalen. Stavanger bispedømme

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

Netctrl 2.0. Innhold. I dette dokumentet er den nye funksjonaliteten beskrevet.

SPSS Høgskolen i Innlandet

Visma.net Expense brukerhåndbok

Ved pålogging til KursAdmin Om du har roller i KursAdmin for flere kursarrangører må du velge organisasjonsledd når du logger på. Versjon

Focusportal brukerveiledning hovedleder SØNDAGSSKOLEN NORGE


Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

SPSS Høgskolen i Innlandet

SQL 3: Opprette tabeller, datainnsetting og utsnitt

Oppsett «Visma Contacts»

Brukerveiledning. For administrering av nettressursen BRUKERVEILEDNING ADMINISTRATOR

ServiceFirst Programvaremanual, versjon Assessio International AB. All rights reserved

Databaser. Relasjonsmodellen 1 Læreboka: Kap. 2 Relasjonsmodellen Faglærere: Tore Mallaug, Kjell Toft Hansen

Brukerveiledning Innlegging av prosjekter til NILs årbok

Selvbestemt abort. Hele landet 77, _UP_Helse Sør-Øst RHF 80, _UP_Akershus universitetssykehus HF 82,1

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

Brukerveiledning. For importapplikasjon til Naturbase. Versjon 17. mars 2015

DOKUMENTASJON E-post oppsett

CRI Brukermanual for bilforhandlere

System-X brukermanual

Ida Festervoll

Elektronisk førstehjelpsprøve - brukerveileder

HJELPEGUIDE TIL WEB-TIME

Vanlige spørsmål. GallupPanelet. TNS Panel-app. TNS Juni 2015 v.1.3

Brukerveiledning for «Styreadministrasjon Helse Midt-Norge RHF»

Bruke SQL fra Python. Med Psycopg2

Akershus universitetssykehus (Ahus) Helse Sør-Øst RHF (Ahus) (tomt felt) Avdeling for akuttmedisin

EKSAMENSOPPGAVE I TDT4145 DATAMODELLERING OG DATABASESYSTEMER. Faglig kontakt under eksamen: Svein Erik Bratsberg og Roger Midtstraum

HJEMMEKONTOR. Del 1 Installasjon på jobb-pc Norsk Helsenett SF [Forfatter]

HØGSKOLEN I SØR-TRØNDELAG

Genus Hours for Kelly Services. Hjelpeguide til timeføring for medarbeidere

Focusnet brukerveiledning hovedleder SØNDAGSSKOLEN NORGE

Brukerdokumentasjon for Installatør i bruk av. Elektronisk behandling av rettemeldinger

Transkript:

Oblig 1 Databaser vår 2011 Dette arbeidskravet tester primærkunnskaper i faget, og det er her grunnlaget for videre framgang i kurset legges. Oppgaven leveres individuelt på Fronter. Får du problemer med innleveringen er det viktig at søker hjelp med en gang, enten ved å gå til HelpDesk eller ved å snakke med Elin eller Per-Olav (veileder/gruppelærer). For hjelp med Fronter, se: http://www.hiof.no/fronterhjelp Frist for innlevering: Tirsdag 8/2-2011 kl. 14:00 Krav til oppgave: Man skal ha gjort helhjertede forsøk på å løse alle oppgaver. Jobb jevnt og trutt med oppgavene, og spør om hjelp dersom det er noe du lurer på. Det anbefales at man jobber individuelt med denne oppgaven slik at alle studenter får den basiskunnskap man trenger videre. Det er selvfølgelig ikke noe i veien for at man spør andre studenter om hjelp, men da er det viktig at begge parter har utbytte av slik hjelp. Hver student må rette oppgaven til en annen student og levere et anonymt evalueringsskjema for å få sitt arbeidskrav godkjent. Fordeling av "rettepar" gjøres av Elin 9/2-2010, og hvert par får tilsendt den andres oppgave på epost. Fasit og rettemal som skal brukes under rettingen legges ut på Fronter. På døra til Elin (rom DU1-023) vil det henge en plastmappe med et evalueringsskjema for arbeidskravet. Evalueringen er anonym, og skal ikke merkes med navn eller dato. Retteark leveres på epost til elinkaan@hiof.no, mens evalueringsskjema for arbeidskravet leveres i resepsjonen ved hovedinngangen. Resultat av evalueringen bli sendt ut til dere alle straks det foreligger. 1

Oppgave 1 Denne oppgaven handler om nøkler. Gitt følgende tabeller med data: Klasse klasseid klassebetegnelse 1 'K20-25' 2 'K25-30' 3 'M20-25' 4 'M25-30' Renndeltager Startnr Fornavn Etternavn Personnr Klasseid 1 'Anne' 'Jensen' '01017011111' 1 2 'Anders' 'Olsen' '01017022222' 3 3 'Per' 'Hansen' '01017033333' 3 4 'Kurt' 'Iversen' '01017044444 4 5 'Eva' 'Adamsen' '01017055555' 1 6 'Inger' 'Jensen' '01017066666' 2 7 'Per' 'Olsen' '01017077777' 4 a) Hvilke supernøkler finnes i de to tabellene? b) Hvilke kandidatnøkler finnes i de to tabellene? c) Hvilke primærnøkler finnes i de to tabellene? d) Hvilke fremmednøkler finnes i de to tabellene? e) Hvilke entitetstyper finnes i de to tabellene? f) Hvilke entiteter finnes i de to tabellene? g) Hvilke attributter har de to tabellene? 2

Oppgave 2 Les hele oppgaven før du begynner! Det skal lages et datasystem for lagring av informasjon om skoler, skoleansatte og elever i Halden kommune. Data som skal inn i systemet ligger usortert i en sekk som dette: a) Hvordan vil du gruppere dataene slik at de hører mest mulig naturlig sammen? Tegn/List opp gruppene, og forklar hvorfor du har gruppert som du har b) Hvordan kan de ulike gruppene av data kobles sammen? 3

Oppgave 3 Denne oppgaven handler om mengdelære. Mengdelære er læren om mengder i matematikken. En mengde består av elementer, og disse elementene kan være for eksempel tall, symboler for tall, ord, tekststrenger, andre mengder, punkter eller linjer. En mengde kan bestå av flere typer elementer. Det er vanlig at en mengde representeres ved en stor bokstav. Eksempel: Hvis vi har en mengde vi kaller for F som inneholder elementene 2, 5, 7, 11 og 99 skrives dette slik: F = {2,5,7,11,99}, har vi en mengde vi kaller for Q som inneholder elementene 'Hund', 'Katt' og 'Gris' skrives dette slik: G = {'Hund', 'Katt', 'Gris'}, og har vi en mengde Z som inneholder elementene 3, 5, 7, 'Sel', 'Katt' og 'Hest' skrives dette slik: Z = {3,5,7,'Sel','Katt','Hest'} En mengde som ikke inneholder noen ting kalles for den tomme mengde (altså {} ) og skrives Ø. Man kan utføre operasjoner på mengder. Vi skal se på operasjonene union (UNION), snitt (INTERSECT) og differanse (DIFFERENCE). Union representeres ved tegnet U og skrives på formen A U B = C, der A, B og C er mengder. Union henter ut alle elementer som finnes enten i A eller B. Finnes et element både i A og B, legges det bare en gang i C. A U B er det samme som B U A. En figur som viser union: 4

Eksempel: F U G = {2,5,7,11,99,'Hund', 'Katt', 'Gris'} G U Z = {'Hund', 'Katt', 'Gris',3,5,7,'Sel','Hest'} F U G U Z = {2,5,7,11,99,'Hund', 'Katt', 'Gris',3,'Sel','Hest'} For å lette lesbarheten, kan man vise mellomregningen, for eksempel: F U G = {2,5,7,11,99} U {'Hund','Katt','Gris'} = {2,5,7,11,99,'Hund', 'Katt','Gris'} G U Z = {'Hund', 'Katt', 'Gris'} U {3,5,7,'Sel','Katt','Hest'} = {'Hund', 'Katt','Gris',3,5,7,'Sel','Hest'} F U G U Z = {2,5,7,11,99} U {'Hund', 'Katt', 'Gris'} U {3,5,7,'Sel','Katt','Hest'} = {2,5,7,11,99,'Hund', 'Katt','Gris'} U {3,5,7,'Sel','Katt','Hest'} = {2,5,7,11,99,'Hund', 'Katt', 'Gris',3,'Sel','Hest'} Snitt representeres ved tegnet og skrives på forme A B = C, der A, B og C er mengder. Snitt henter ut alle elementer som finnes både i A og B. A B er det samme som B A. En figur som viser snitt: Eksempel: F G = Ø G Z = {'Katt'} F Z = {5,7} Differanse representeres ved tegnet \ og skrives på formen A \ B = C, der A, B og C er mengder. Differanse henter ut alle elementer som finnes i A, men ikke i B. A \ B er IKKE det samme som B \ A 5

En figur som viser differanse: Eksempel: F \ Z = {2,11,99} Z \ F = {3,'Sel','Katt','Hest} F \ F = Ø Noen oppgaver om mengder Gitt følgende mengder: S = {1,2,3,4,5,6,7,8,9,10,'a','b','c','d','e','f','g','h','i'} O = {2,4,6,8,10,12,14,16,18,20,'c','g','i'} L = {1,3,5,7,9,11,13,15,17,19,'a','e','i','o','u','y','æ','ø','å'} A = {10,11,12,13,14,15,16,17,18,19,20} Finn svaret på følgende (vis gjerne mellomregningene) : a) S U O b) S U L c) S O d) L A e) A L f) L \ S g) S \ L h) (S L) \ O 6

Oppgave 4 En terminalklient kan brukes for å koble seg til servere som man har brukerkonto på. Eksempler på slike terminalklienter er Putty (http://www.putty.org) på Windows og Terminal på Mac. I denne og den neste oppgaven skal du lære enkel bruk av terminalklient. For hjelp med å sette opp og koble til på riktig måte, se: http://www.it.hiof.no/~elinkaan/databaser/main/docs/terminal.html a) Logg deg på serveren frigg.hiof.no med tilkoblingstype (Connection Type) SSH. Bruk ditt vanlige brukernavn og passord. Ta skjermbilde (Print Screen/Screen Shot) etter innlogging og legg inn dette som svar på oppgaven. b) Start MySQL med ditt eget brukernavn, men med _v11 etter (har du vanligvis brukernavn perols, vil du i databasen ha brukernavn perols_v11). Databasenavn og passord er ditt brukernavn, men med _v11 etter. Ta skjermbilde (Print Screen/Screen Shot) etter innlogging og legg inn dette som svar på oppgaven. Du starter MySQL med kommandoen mysql -u brukernavn -p -D databasenavn c) Start PostgreSQL (psql) med ditt eget brukernavn. Databasenavn og passord er ditt brukernavn, men med _v11 etter (har du vanligvis brukernavn perols, vil du i databasen ha databasenavn og passord perols_v11). Ta skjermbilde (Print Screen/Screen Shot) etter innlogging og legg inn dette som svar på oppgaven. Du starter PostgreSQL med kommandoen psql -d databasenavn -U brukernavn Oppgave 5 Dette er en fortsettelse av oppgave 4, men denne gangen skal noen enkle SQL-oppgaver løses i terminalen. Dere kan velge om dere ønsker å bruke MySQL eller PostgreSQL i oppgaven, men det skal oppgis hva som er brukt. Alle oppgaver der spørringer returnerer et svar, skal følgende ligge inne i besvarelsen: de 5 første radene av de returnerte svarene antall rader som returneres antall kolonner som returneres a) Opprette tabell. Lim inn følgende kode i MySQL eller PostgreSQL for å opprette en tabell: CREATE TABLE sykehus( forkortelse VARCHAR(5) NOT NULL, navn VARCHAR(50), region VARCHAR(30), 7

adresse VARCHAR(75), postnr VARCHAR(4), telefon_sentralbord VARCHAR(9), ant_ansatte INT, PRIMARY KEY(forkortelse) ); b) Legge inn data (NB! Data er delvis fiktive). Lim inn følgende kode i MySQL eller PostgreSQL for å legge inn data: INSERT INTO sykehus VALUES('AHUS', 'Akershus universitetssykehus HF', 'Helse Sør-Øst', 'Sykehusgata 1', '0052', '22 445533',12358); INSERT INTO sykehus VALUES('OSLO', 'Oslo universitetssykehus HF', 'Helse Sør-Øst', 'Sykehusgata 2', '0043', '22 785465',7623); INSERT INTO sykehus VALUES('SIV', 'Sykehuset i Vestfold HF', 'Helse Sør-Øst', 'Sykehusgata 3', '2054', '31 487854',4657); INSERT INTO sykehus VALUES('SIHF', 'Sykehuset Innlandet HF', 'Helse Sør-Øst', 'Sykehusgata 4', '3187', '25 005478',2578); INSERT INTO sykehus VALUES('STHF', 'Sykehuset Telemark HF', 'Helse Sør-Øst', 'Sykehusveien 5', '3289', '26 478952',687); INSERT INTO sykehus VALUES('SØF', 'Sykehuset Østfold HF', 'Helse Sør-Øst', 'Sykehusveien 6', '1603', '69 304578',3987); INSERT INTO sykehus VALUES('SSHF', 'Sørlandet sykehus', 'Helse Sør-Øst', 'Sykehusveien 7', '4512', '30 458765',2643); INSERT INTO sykehus VALUES('FØRDE', 'Førde Sentralsjukehus', 'Helse Vest', 'Sjukehusvegen 28', '6807', '57 839000', 1052); INSERT INTO sykehus VALUES('LÆRDA', 'Lærdal Sjukehus', 'Helse Vest', 'Sjukehusvegen', '6887', '57 640000',426); INSERT INTO sykehus VALUES('HAUKU', 'Haukeland universitetssjukehus', 'Helse Vest', 'Sjukehusvegen 65', '5021', '05300',10052); INSERT INTO sykehus VALUES('ODDA', 'Odda sjukehus', 'Helse Vest', 'Sjukehusvegen 1', '5750', '05253 ',554); INSERT INTO sykehus VALUES('STAVU', 'Stavanger universitetssjukehus', 'Helse Vest', 'Sykehusveien 20 ', '4011', '05151',5497); INSERT INTO sykehus VALUES('NAMSO', 'Sykehuset Namsos', 'Helse Midt-Norge', 'Sykehusveien 8', '7809', '74098000',574); INSERT INTO sykehus VALUES('STOLV', 'St. Olavs Hospital', 'Helse Midt-Norge', 'Sykehuskrysset', '7006', '06800',7542); INSERT INTO sykehus VALUES('TROMS', 'Tromsø universitetssykehus', 'Helse Nord', 'Sykehusveien 782', '8564', '97 452654',2845); INSERT INTO sykehus VALUES('HARST', 'Harstad sykehus', 'Helse Nord', 'Sykehusgata 1', '9406', '07776',987); c) Hent all informasjon om alle sykehus. d) Hent navn og region på alle sykehus. e) Hent navn på alle regioner. Hver region skal kun listes opp en gang. f) Hent navn på alle sykehus i regionen 'Helse Vest'. g) Hent all informasjon om alle sykehus som ikke har 2845 ansatte h) Hent navn, region og adresse for alle sykehus som ligger i Sykehusveien i) Hent navn, region og adresse for alle sykehus som ikke ligger i Sykehusveien 8

Oppgave 6 Denne oppgaven handler om atomære verdier og repeterende attributter eller attributtgrupper. Atomære verdier er verdier som er udelelige, dvs. ikke sammensatte. Ett repeterende attributt eller en repeterende attributtgruppe er et attributt eller en attributtgruppe som har flere verdier knyttet til en entitetsforkomst (for eksempel at en person kan ha flere epostadresser, eller at en sang kan ha flere låtskrivere). Eksempel: Hvis vi har et felt i en tabell som vi kaller 'Adresse', og denne inneholder verdier av typen: 'Storgata 10, 1750 Halden', sier vi at verdien i dette feltet er ikke-atomær. Hvorfor gjør vi det? Det gjør vi fordi feltet inneholder både gatenavn, husnummer, postnummer og poststed. Så er spørsmålet hvor mye det er hensiktsmessig å dele opp, og det skal dere få lov til å gruble på. Hvis vi har en tabell med data om filmer og deres eiere og denne ser slik ut: Videoeierskap eierid eiernavn videoid videonavn sjanger 1 "Per" 1 "Dirty Dancing" "Familie" 1 "Per" 2 "Rambo" "Action" 2 "Anne" 3 "Politiskolen 1" "Komedie" 3 "Ola" 2 "Rambo" "Action" 4 "Kjersti" 1 "Dirty Dancing" "Familie"... ser vi at det er mye informasjon som lagres flere ganger. Endringer i verdier i en rad fører naturlig nok ikke til oppdatering av informasjon i de andre radene, noe som kan få uante konsekvenser. Man kan da risikere at 'Rambo' kan lagres både som 'Action' og 'Familie' for to forskjellige eiere, eller at et videonavn kan være stavet feil i en eller flere av radene slik at det ser ut som det er flere forskjellige filmer istedenfor den samme. Vi kunne til og med få en situasjon hvor person med eierid 1 kan hete både "Per" og "Petra". Måten å løse dette på er å splitte opp tabellen i tre tabeller: En for informasjon om eiere, en for informasjon om videoer og en for informasjon om hvem som eier hva, slik: 9

Eier Video Videoeierskap eierid navn Videoid navn sjanger eierid videoid 1 "Per" 1 "Dirty Dancing" "Familie" 1 1 2 "Anne" 2 "Rambo" "Action" 1 2 3 "Ola" 3 "Politiskolen 1" "Komedie" 2 3 4 "Kjersti" 3 2 4 1 a) Gitt feltet navn med følgende dataverdi: 'Per Even Oskarsson Olsen' Hvilke muligheter ser du for oppsplitting av dette feltet? b) Gitt følgende tabell med både ikke-atomære verdier og repeterende grupper: taxisjåfø r-id navn mobilnummer taxiid regnr taxi turdatoogtid turstartsted turstoppsted 1 "Per Ole Olsen" "11111111" 3 "AA11111" "Ford Mondeo 2.0D 1999-modell" 2 "Hanne Jensen" "22222222" 1 "BB22222" "Opel Ascona 1.8 1977-modell" 1 "Per Ole Olsen" "11111111" 3 "AA11111" "Ford Mondeo 2.0D 1999-modell" 1 "Per Ole Olsen" "11111111" 3 "AA11111" "Ford Mondeo 2.0D 1999-modell" 5 "Even Evensen" "33333333" 2 "CC33333" "VW Passat 2.0TDi 2005-modell" "01.01.2010 kl 23:05 02.01.2010 kl 00:10" "05.03.2010 kl 14:01 05.03.2010 kl 16:07" "02.01.2010 kl 02:00 02.01.2010 kl 02:30" "01.03.2010 kl 12:05 01.03.2010 kl 12:15" "01.01.2010 kl 21:22 01.01.2010 kl 21:28" "Storgata 10" "Storgata 100" "Storgata 5" "Nedregate 5" "Storgata 1" "Storberget" "Utvikhytta" "Togstasjon" "Øvregate 7" "Nedregate 3" Hvilke muligheter ser du for oppsplitting av denne tabellen? Skriv litt om hvilke forutsetninger du tar. c) Skriv CREATE TABLE-setninger for å opprette tabellene i eksempelet med videoeiere (eier, video og videoeier - se innledning til oppgaven). Husk 10

primær- og fremmednøkler. d) Skriv INSERT-setninger for å legge inn data i tabellene (kun de data som er med i eksempelet se innledning til oppgaven). e) Videoen "Dirty Dancing" bytter sjanger til "Romantisk komedie". Skriv UPDATE-setninger for å foreta endringen. f) Anne og Ola bytter videoer med hverandre. Hvilke problemer kan oppstå når man skal oppdatere informasjonen? Skriv et forslag til UPDATE-setning(er) for å foreta byttet. Oppgave 7 I denne oppgaven skal dere lære å opprette tabeller og fylle dem med data fra kommandolinja i terminalen. Dere kan velge om dere ønsker å bruke MySQL eller PostgreSQL i oppgaven, men det skal oppgis hva som er brukt. Alle oppgaver der spørringer returnerer et svar, skal følgende ligge inne i besvarelsen: de 5 første radene av de returnerte svarene antall rader som returneres antall kolonner som returneres Databasen dere nå skal jobbe med data fra en database laget av Deutche Ultramaraton Vereinigung ( http://statistik.d-u-v.org/getintbestlist.php? year=2010&dist=24h&gender=m&nat=all&cat=all&label=&hili=none&page=1 ). Jeg har lastet ned data for dere for årende 2007-2010 og gjort disse om til INSERT-setninger som er lagret på fil. Jeg har også laget filer for opprettelse av tabellene. Alle filer ligger på Fronter. Siden det er noe forskjell når det gjelder navngiving på funksjoner og enkelte datatyper mellom MySQL og PostgreSQL, har disse hver sine filer. Filer for MySQL: mysql-24timerlop07-10-create.sql, landskoder-create.sql, mysql-24timerlop07-10-utf8.sql, mysql-landskoder-utf8.sql Filer for PostgreSQL: psql-24timerlop07-10-create-utf8.sql, landskoder-create.sql, psql-24timerlop07-10-utf8.sql, psql-landskoder-utf8.sql a) Opprett tabellene i riktig rekkefølge i terminalen. For mysql: mysql -u brukernavn -p -D databasenavn \. filnavn.sql For psql: psql -f filnavn.sql -d databasenavn -U brukernavn b) Legg inn data i tabellene i riktig rekkefølge i terminalen. For mysql: mysql -u brukernavn -p -D databasenavn \. filnavn.sql For psql: psql -f filnavn.sql -d databasenavn -U brukernavn c) Finn ut hvor mange rader som finnes i tabellen med 24timerløpsresultater. d) Finn distanse, fornavn, etternavn, dato, arrangementssted og -land for alle løpere som har løpt mellom 200 og 210 km. Bruk BETWEEN. e) Finn distanse, fornavn, etternavn, dato, arrangementssted og -land for alle løpere som har løpt mellom 200 og 210 km. Ikke bruk BETWEEN. 11

f) Finn fornavn og etternavn på alle løpere fra Norge. Sorter resultatet stigende på etternavn. Hver løper skal kun listes opp en gang. g) Finn fornavn, etternavn og fødselsår for alle løpere fra USA. Sorter resultatet synkende på fornavn. Hver løper skal kun listes opp en gang. h) Finn fornavn, etternavn, nasjonalitet og antall løpte meter for den løperen som har løpt lengst i 2010. NB! Du må regne om fra km til meter! i) Finn navnet på alle land som ikke begynner på bokstaven 'S'. j) Finn fornavn og etternavn på alle deltagere som enten har nasjonalitetskode MLI, RSA eller MEX (dvs at de er fra Mali, Sør-Afrika eller Mexico). Ikke bruk IN-operatoren. k) Finn fornavn og etternavn på alle deltagere som enten har nasjonalitetskode MLI, RSA eller MEX (dvs at de er fra Mali, Sør-Afrika eller Mexico). Bruk IN-operatoren. l) Hva er forskjellen på = og LIKE (og dermed også forskjellen på <> og NOT LIKE)? m) Hva må du skrive for å få opp hjelp om kommandoer som finnes i henholdsvis MySQL og PostgreSQL? Tips: Søk på Google n) Hva må du skrive for å liste ut hvilke tabeller som finnes i databasen din i henholdsvis MySQL og PostgreSQL? Tips: Søk på Google o) Finn nasjonatiteten til alle løpere som har løpt mer enn 200 km i 2007. Hver nasjonalitetskode skal bare listes opp en gang, og lista skal være sortert i stigende rekkefølge. p) Finn fornavn, etternavn og nasjonalitet for alle løpere som det ikke har blitt registrert fødselsår for. Hvert navn skal kun listes opp en gang. q) Finn antallet løpere som det har blitt registrert fødselsår for. Oppgave 8 Finn feilene i sql-spørringene nedenfor. Forklar med egne ord hva som er feil, og skriv den korrekte sql-spørringen. a) SELECT fornavn WHERE nasjonalitet = 'NOR'; b) SELECT etternavn FROM res24timerlop WHERE fornavn = 'Per' c) SELECT fornavn, etternavn FROM res24timerlop WHERE nasjonalitet NOT (SELECT landsnavn='k*' FROM landskode); d) SELECT arrsted AND arrnavn FROM res24timerlop; e) SELECT AVG(nasjonalitet) FROM res24timerlop; Lykke til! 12