HØGSKOLEN I SØR-TRØNDELAG AVDELING FOR TEKNOLOGI Institutt for databehandling Kandidat nr.: Eksamensdato: 09.05.2005 Varighet: 0900-1200 (3 timer) Fagnummer: LO323D Fagnavn: Databaser Klasse(r): NETT 2006V Studiepoeng: 6 Faglærer(e): Kjell Toft Hansen - tlf 73 55 95 71/ 91174581 Hjelpemidler: Alle skriftlige Oppgavesettet: Består av 3 oppgaver og 3 sider (inklusive forside) Vedlegg: Ingen Merknader: _Oppgaveteksten kan beholdes av studenter som sitter eksamenstiden ut. _Prosenttallet i parentesen viser vektlegging ved karaktersetting. Lykke til!
Oppgave 1: Datamodellering (50%) Problemstilling: Web-sider Du er med i en prosjektgruppe som skal utvikle en database som lagrer informasjon om Websider, skreddersydd for vedlikehold av Webbaserte kurs som det undervises i på et universitet. Hvert kurs er knytt til en Webtjener som vedlikeholder alt kursmaterielle (eng. courseware) som inkluderer klassenotater, tilknyttede publikasjoner, et utvalg av dokumenter, kjørbare filer og databasefiler. Kursmateriellet er lagret på en spesiell katalog på Webtjeneren med tilgang via ftp (File Transfer Protocol), som brukes til å overføre filer mellom datamaskiner. All grafikken, som er knytt til en Webside, er også lagret i en katalog, og databasen lagrer det grafiske bildet ved hjelp av en Webside. Websider er lenket til andre Websider ved hjelp av http (Hyphertext Transfer Protocol). Hver Webside er knytt til en hovedside som tilhører et kurs, som er dens base. Basert på de generelle opplysningene over, så kan du anta følgende detaljer: Det som kjennetegner en Webside er et unikt identifikasjonsnummer, en tittel, dens URL (Uniform Resource Locator), som inneholder adressen til Websiden og antallet ganger Websiden har vært aksessert eller fått tilslag. Websiden som tilhører et kurs, har en tilhørende hjemmeside som vil fungere som en base for alle Websidene som er knytt til kurset. Det som kjennetegner et grafisk bilde er et unikt identifikasjonsnummer, grafikkbildets navn, formatet til bildet (gif, jpg, bmp, png) og katalogen hvor grafikkbildet er lagret. Et grafikkbilde kan brukes av mange Websider, og en Webside kan vise mange grafikkbilder. Kursmateriellet har et unikt identifikasjonsnummer, en beskrivelse av kursmaterialet, katalogen hvor materialet er lagret og en kategori som beskriver type kursmateriale, slik som P for publikasjon, N for notater, D for dokumenter, K for kjørbare filer og M for databasefiler. En kurskonseptfil kan lenkes til flere Websider og en Webside kan ha ftp-lenker til flere kurskonseptfiler. Side 2 av 6
a) Du skal lage et ER-diagram for Webside systemet. Du kan bruke lærebokas notasjon. 0..1 -er hjemmeside for Web_side -web_id {PK} -web_tittel -url -base -ant_treff -er http_lenke for * * -lenke til -viser Kursmateriell -kursm_id {PK} -kursm_beskrivelse -ftp_lokalisering -kategori Grafikk -g_id {PK} -g_navn -g_type -g_lokalisering Det er en mange-til-mange sammenhengstype mellom entitetene i entitetstypene Web_side og Kursmateriell. Det er en mange-til-mange sammenhengstype mellom entitetene i entitetstypene Web_side og Grafikk. En webside kan vise flere grafikkbilder og det samme grafikkbildet kan vises på flere websider. Det er en rekursive en-til-mange-sammenhengstype mellom websider og hjemmesider. Hver webside kan bestå av bare en hjemmeside (base), men en hjemmeside (base) kan ha mange websider. Det er også en rekursiv mange-til-mange-sammenhengstype mellom websider http-lenker. En webside kan ha http-lenker til flere andre websider og omvendt. b) Du skal oversette ER-modellen, som du kom fram til i a) til relasjonsmodellen med primær- og fremmednøkler. WEB_SIDE(web_id, web_tittel, url, ant_treff, h_web_id*) HTTP_LENKE(ut_web_id*, inn_web_id*) KURSMATERIELLE(kursm_id, kursm_beskrivelse, ftp_lokalisering, kategori) GRAFIKK(g_id, g_navn, g_type, g_lokalisering) LENKE_TIL_FTP(web_id*, kursm_id*) WEB_SIDE_GRAFIKK(web_id*, g_id*) Side 3 av 6
Oversettelsen av ER-modellen til et relasjonsskjema har foregått slik: Det er opprettet en tabell for hver entitetstype og for hver mange-til-mange sammenhengstype (koblingstabell). Den rekursive sammenhengstypen er hjemmeside for oversettes blir uttrykt med fremmednøkkelen h_web_id som refererer til web_id. Den rekursive og mange-til-mange sammenhengstypen er http_lenke for blir oversatt til koblingstabellen Http_lenke.. Oppgave 2: SQL (20%) Ta utgangspunkt i følgende relasjonsdatabase: BOLIGSELSKAP(b_id, b_navn, b_gate, b_postnr, b_by, b_tlf) HUSMODELL(h_id, h_navn, h_kvadrat_m, ant_etasje, b_id*) AVDELING(a_navn, a_postnr, a_by) TILBUD(a_navn*, h_id*, pris) BYGGPLASS(b_nr, b_adresse, b_kvadrat_m, b_premie, a_navn*) SALG(a_navn*, b_nr*, h_id*, status) Oppgaver: Lag SQL-spørringer a) Hvilke husmodeller tilbys hos avdelingen i Tromsø? SELECT h.*, pris FROM tilbud t, husmodell h WHERE t.a_navn = TROMSØ AND t.h_id = h.h_id; b) Finnes det noen avdelinger som bare tilbyr husmodeller med 1 etasje? SELECT DISTINCT t.a_navn FROM tilbud t, husmodell h WHERE h.ant_etasje = 1 AND t.h_id = h.h_id; c) Skriv ut alle boligbyggeselskap som tilbyr husmodeller med 1 etasje og på minst 130m 2 hos avdelingen i Trondheim? SELECT b_navn, b_tlf FROM boligselskap b, husmodell h, tilbud t, avdeling a WHERE a_by = TRONDHEIM AND ant_etasje = 1 AND h_kvadrat_m > 130 AND t.a_navn = a.a_navn AND t.h_id = h.h_id AND h.b_id = b.b_id; Side 4 av 6
d) Hvilke avdelinger tilbyr flere husmodeller? SELECT a_navn, COUNT(DISTINCT h_id) FROM tilbud GROUP BY a_navn HAVING COUNT(DISTINCT h_id) > 1; Oppgave 3: Normalisering (30%) Gitt følgende tabell: LEVERANDØR LEV_ID LEV_NAVN GATE POSTNR 101101 Vidars Video Kongens gt 10 7008 101101 Vidars Video Prisens gt 20 7010 101101 Knuts Video Dronningens gt 1 7009 Du skal anta at lev_id og lev_navn er avhengig av hverandre og at kombinasjonen lev_id og postnr er primærnøkkelen. Tabellen beskriver en situasjon som kan være aktuell når et firma har kontorer på forskjellige steder og hvor hvert kontor blir sett på som en annen eller forskjellig leverandør. Oppgaver: a) Lag et diagram (figur) som viser de funksjonelle avhengigheter (determineringer) som gjelder for tabellen? Du skal bygge på de forutsetninger som er gitt i tabellen og teksten over. Lev_id Postnr Lev_navn Gate Lev_id, Postnr -> Lev_navn, Gate Lev_id -> Lev_navn Lev_navn -> Lev_id b) Hva er den høyeste normalform som oppfylles i tabellen over? Svaret må begrunnes. Det er to (sammensatte) kandidatnøkler: Lev_id og Postnr og Lev_navn og Postnr. Avhengigheten mellom Lev_id og Lev_navn er en ikke-nøkkel avhengighet fordi ingen Side 5 av 6
av dem alene er en nøkkel. Selv om disse avhengighetene er brudd på BCNF, så er de ikke brudd på 3NF. c) Dersom du mener at tabellen ikke er på Boyce-Codd-normalform, vis hvordan tabellen kan normaliseres til BCNF. LEVERANDØR( lev_id*, gate, postnr) LEVERANDØR_NAVN(lev_id, lev_navn) Side 6 av 6