HØGSKOLEN I SØR-TRØNDELAG



Like dokumenter
HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Oppgaver Oppgave a: Sett opp mulige relasjoner

HØGSKOLEN I SØR-TRØNDELAG

Databaser: Relasjonsmodellen, del I

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG

Datamodellering og databaser SQL, del 2

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG

Datamodellering og databaser SQL, del 2

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Datamodellering og databaser SQL, del 2

1. SQL datadefinisjon og manipulering

Datamodellering 101 En tenkt høgskoledatabase

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

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring

HØGSKOLEN I SØR-TRØNDELAG

1. Relasjonsmodellen Kommentarer til læreboka

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG

Miniverden og ER- modell

1. Innføring i bruk av MySQL Query Browser

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

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

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

HØGSKOLEN I SØR-TRØNDELAG

Integritetsregler i SQL. Primærnøkler

Eksamen i Internetteknologi Fagkode: IVA1379

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Integritetsregler i SQL

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

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

HØGSKOLEN I SØR-TRØNDELAG

INF106 Objektorientert programmering

HØGSKOLEN I SØR-TRØNDELAG

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

Ekvivalente stier (Equivalence of Path, EOP) i storm

Integritetsregler i SQL

HØGSKOLEN I SØR-TRØNDELAG

Løsningsforslag matoppskrifter modellering

1. Datamodellering Kommentarer til læreboka

Ekvivalente stier (Equivalence of Path, EOP) i storm

UNIVERSITETET I OSLO

lfæ~~~~:::j~~:~l -.~=:~-t::-d I Alle trykte og håndskrevne EKSAMENSOPPGA VE Side l av 5 Eksamenstid:

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

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

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG

EKSAMEN DATABASER

EKSAMEN 6102 / 6102N DATABASER

>>21 Datamodellering i MySQL Workbench

SLUTTPRØVE 5602 DATABASER I (inkludert vedlegg og denne forsida) Vedlegg: A: Eksempeldata og B: Svarark til oppgave 4

Eksamensoppgave i IFUD1025 Programmering i Java

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

SQL: Integritetsregler, triggere og views

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG

MySQL-database, php. Innhold. 8 MySQL-database, php. 8.1 Databasen MySQL

Datamodellering: ER-modeller ER = Enitity-Relationship del 1: Notasjon og oversetting av ulike ER-modeller til tilsvarende relasjonsmodeller

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

EKSAMEN ITF Webprogrammering 1 Dato: Eksamenstid: Hjelpemidler: 2 A4 ark (4 sider) med egenproduserte notater (håndskrevne/maskinskrevne)

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

HØGSKOLEN I SØR-TRØNDELAG

Objektorientert Programmering Ekstraordinær eksamen 2014

HØGSKOLEN I SØR-TRØNDELAG

INF1050 Klasseromsoppgave Uke 6

Klasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN!

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

UNIVERSITETET I OSLO

Objektorientering i ER-modeller EER-modeller Enhanced Entity Relationship Models

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Transkript:

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring Kandidatnr: Eksamensdato: 6.desember 2010 Varighet: 0900-1200 Fagnummer: Fagnavn: Klasse(r): LC238D Datamodellering og databaser HING2009HA Studiepoeng: 6 Faglærer(e): Hjelpemidler: Oppgavesettet består av: Vedlegg består av: Faglærer: Else Lervik. Lærebøker, alle håndskrevne og trykte hjelpemidler. 3 oppgaver og 5 sider (inkludert forside og vedlegg) 1 side Merknad: Oppgaveteksten kan beholdes av studenter som sitter eksamenstiden ut. Lykke til! OBS! Dersom du mener det mangler opplysninger, setter du dine egne betingelser. 1

Oppgave 1 - vekt 40% En database er laget med scriptet i vedlegg 1. Relasjonsmodellen ser slik ut: kurs(kursnr, dato, tittel, pris, holdes_av_persnr*) rom(romnr, ant_plasser) kurs_rom(romnr*, kursnr*) person(persnr, navn) kursholder(persnr*, kompetanse) kursdeltaker(persnr*) kursdeltakelse(deltaker_persnr*, kursnr*, betalt_dato, beløp_betalt) Primærnøkler er streket under, mens fremmednøkler er markert med stjerne. Databasen holder orden på kurs, rom, kursholdere og kursdeltakere. Et kurs identifiseres med et nummer. Vi kan ha flere kurs med samme tittel; det betyr at det samme kurset avholdes flere ganger. Prisen kan variere fra gang til gang. Ideelt sett burde man her hatt en egen relasjon (tabell) med kurstitler, men det har jeg valgt å sløyfe for holde antall relasjoner i denne oppgaven nede. Alle kurs har varighet eksakt én dag. En person kan være både kursholder og kursdeltaker, dog ikke på det samme kurset. Attributtet betalt_dato har verdien 0.0 inntil kurset er betalt i sin helhet. Det er mulig å betale kurset i rater, attributtet beløp_betalt holder orden på hvor mye kunden til enhver tid har betalt. Script for å lage databasen finner du i vedlegg 1. I første deloppgave nedenfor skal du tegne et EER-diagram. Deretter følger en rekke SQL-spørringer som du skal sette opp. Du står fritt om du ønsker å lage virtuelle tabeller (views) for å løse oppgavene. Noen av oppgavene forholder seg til DATE-datatypen. Det gis tips om syntaksen i JavaDB, men føl deg ikke bundet til dette. Bruk gjerne pseudokode for å referere til datoer, om du syns det er greiest. a) Tegn EER-modell som beskriver databasen. Bruk UML-notasjon. (Husk at primærnøkler alltid skal markeres i EER-modellen. Fremmednøkler hører strengt tatt ikke hjemme i denne modellen, men om du ønsker kan du ta dem med. Da må du i tilfelle ta med alle, og du må markere dem med stjerne.) b) SQL-spørring: Hvor mange av rommene har flere enn 20 plasser? c) SQL-spørring: Lag en liste over kurs som skal avholdes. Listen skal inneholde kursnr, tittel, navnet på kursholderen, dato (> CURRENT_DATE), pris og rommet kurset skal holdes på. Listen skal være sortert etter kursnr. d) SQL-spørring: Finn ut hvor mye kursarrangøren har til gode i ubetalte kursavgifter for kurs som har vært avholdt (dato < CURRENT_DATE). e) SQL-spørring: Finn inntekter (uavhengig av om de er betalt inn eller ikke) for kurspåmeldinger i 2010 gruppert og sortert på kurstittel. Du henter ut årstallet fra en datokolonne ved å bruke funksjonen year() på kolonnen. f) SQL-spørring: Samme som e), men begrens utskriften til kurs med inntekter under 5000 kr. 2

Oppgave 2 vekt 20 % Du skal jobbe med den samme databasen som i oppgave 1. Skriv en Java-metode som registrerer at en person skal ta et bestemt kurs. Følgende gjelder: Kurs og rom er registrert i databasen. Personen er ikke tidligere registrert. Du kan anta at det er plass i rommet der kurset skal holdes. Anta videre at et entydig personnummer bestemmes utenfor metoden og sendes inn som argument. Øvrige parametere bestemmer du selv. Metoden skal returnere true dersom registreringen var vellykket, ellers false (uavhengig av hva som var årsaken til at operasjonen mislyktes). Du kan anta at du har åpen databaseforbindelse som objektvariabel i den klassen metoden tilhører. Oppgaven bedømmes likt uavhengig av om du bruker PreparedStatement-objekter eller Statement-objekter. Oppgave 3 vekt 40% Et turbuss-selskap arrangerer ferieturer med buss i inn- og utland. Selskapet ønsker seg en database for å lagre data om turene; hvilke ansatte som er med på en spesifikk tur, hvilken buss som brukes, samt registrering av påmeldte/reisende på turen. Under følger en beskrivelse av hva databasen skal inneholde. Selskapet har i dag flere busser. Hver buss har et registreringsnummer, modellnavn, registreringsår og et antall sitteplasser (seter). I tillegg er flere sjåfører ansatt for å kjøre bussene. Selskapet har også ansatt reiseledere for å være med på turene. Navn og adresse samt telefonnummer til hver ansatt må registreres. (For at modellen ikke skal blir for omfattende, ser vi bort fra at navn og adresse hver for seg vanligvis består av flere elementer. Bruk kun et attributt for navn og et for adresse.) En busstur starter på en gitt dato og varer et bestemt antall dager (f.eks. 1 uke eller 10 dager). Hver tur kjøres av en registrert buss. To sjåfører deler på å kjøre en tur, i tillegg til at en reiseleder er med på hele turen. En tur har ett reisemål. Reisemålet er enten en gitt by/sted (f.eks. Stockholm, Amsterdam...) eller ett geografisk område (f.eks. Lofoten, Alpene, Toscana...). En by/sted ligger i ett land (Norge eller et annet land i Europa), mens et område kan ligge i flere land (f.eks. en tur til Nordkalotten kan gå både til Norge, Sverige og Finland). I databasen skal by/sted eller geografisk område til hver tur lagres, inkl. landet/landene reisemålet ligger i. Vi forenkler litt og sier at vi ikke skal lagre steder en tur er innom på veien til og ifra reisemålet, kun en tekstlig beskrivelse av turen skal lagres. Vi ser bort fra data om hoteller (overnattingssteder) i denne oppgaven. Samme typen tur kjøres på flere forskjellige datoer med forskjellig pris, forskjellige busser, (ofte) forskjellig mannskap og selvfølgelig vanligvis også forskjellige reisende. Hver tur har plass til et gitt antall reisende gitt ved antall seter i bussen. Vi ønsker å lagre navn, kontaktadresse, telefonnummer og fødselsdato til hver enkelt reisende, samt påmeldingsdato. En og samme person kan reise på en eller flere turer. Databasen skal kunne registrere reisefølger. Det skjer ved at kun en person i følget betaler for alle. Du skal se bort fra at reisefølger kan få barnerabatter eller andre rabatter. 3

Det er også mulig at en gruppe påmeldte reiser sammen på en tur til en avtalt gruppepris som gjerne betales av et firma eller en forening. Betalingen skal da ikke knyttes til en enkeltperson, men personene må likevel lagres i databasen. Hvilke påmeldte som tilhører samme gruppe skal lagres. En gruppe registreres med et navn og en fakturaadresse, og en gruppe kan kun delta på en enkelt tur. Hvis den samme gruppen skal delta på en annen tur, må den registreres med nye data. (Du skal ikke lagre informasjon om firmaer og foreninger i databasen, kun attributtet fakturaadresse skal med.) Oppgave Lag datamodell (EER) for problemstillingen. Bruk UML-notasjon. Merk at det i enkelte tilfeller kan værefornuftig å bruke løpenummer som primærnøkkel, selv om det ikke er nevnt i oppgaveteksten. Husk at primærnøkler alltid skal markeres i EER-modellen. Fremmednøkler hører strengt tatt ikke hjemme i denne modellen, men om du ønsker kan du ta dem med. Da må du i tilfelle ta med alle, og du må markere dem med stjerne. Oversett datamodellen til relasjonsmodellen. Strek under primærnøkler og marker fremmednøkler med stjerne. 4

Vedlegg 1 CREATE TABLE kurs ( dato DATE NOT NULL, tittel VARCHAR(20) NOT NULL, -- flere kurs kan ha samme tittel pris REAL NOT NULL, -- prisen kan variere mellom kurs med samme tittel holdes_av_persnr INTEGER, CONSTRAINT kurs_pk PRIMARY KEY (kursnr)); CREATE TABLE rom ( romnr INTEGER NOT NULL, ant_plasser INTEGER NOT NULL, CONSTRAINT rom_pk PRIMARY KEY (romnr)); CREATE TABLE kurs_rom ( romnr INTEGER NOT NULL, CONSTRAINT kurs_rom_pk PRIMARY KEY (romnr, kursnr)); CREATE TABLE person ( navn VARCHAR(20) NOT NULL, CONSTRAINT pers_pk PRIMARY KEY (persnr)); CREATE TABLE kursholder( kompetanse VARCHAR(100) NOT NULL, CONSTRAINT kursholder_pk PRIMARY KEY (persnr)); CREATE TABLE kursdeltaker( CONSTRAINT kursdeltaker_pk PRIMARY KEY (persnr)); CREATE TABLE kursdeltakelse( deltaker_ betalt_dato DATE DEFAULT NULL, -- gis verdi først når kurset er nedbetalt i sin helhet beløp_betalt REAL DEFAULT 0.0, -- oppdateres etterhvert som kurset betales (delbetalinger er mulig) CONSTRAINT kursdeltakelse_pk PRIMARY KEY (deltaker_persnr, kursnr)); ALTER TABLE kurs ADD CONSTRAINT kurs_fk1 FOREIGN KEY(holdes_av_persnr) REFERENCES kursholder; ALTER TABLE kurs_rom ADD CONSTRAINT kurs_rom_fk1 FOREIGN KEY(kursnr) REFERENCES kurs; ALTER TABLE kurs_rom ADD CONSTRAINT kurs_rom_fk2 FOREIGN KEY(romnr) REFERENCES rom; ALTER TABLE kursholder ADD CONSTRAINT kursholder_fk1 FOREIGN KEY(persnr) REFERENCES person; ALTER TABLE kursdeltaker ADD CONSTRAINT kursdeltaker_fk1 FOREIGN KEY(persnr) REFERENCES person; ALTER TABLE kursdeltakelse ADD CONSTRAINT kursdeltakelse_fk1 FOREIGN KEY(kursnr) REFERENCES kurs; ALTER TABLE kursdeltakelse ADD CONSTRAINT kursdeltakelse_fk2 FOREIGN KEY(deltaker_persnr) REFERENCES kursdeltaker; 5