TENTAMEN För kursen DATUM: 2013-12-12 TID: 9 14 Ansvarig för tentamen: Cecilia Sönströd Förfrågningar: 033-4354424 Resultat: Betygsskala: Hjälpmedel: Anslås inom 3 veckor Godkänt 20 p, Väl godkänt 32 p, Max 40 p Inga Instruktioner: Skriv tydligt. Börja varje ny uppgift på ett nytt blad. Använd bara en sida av varje papper. Motivera dina svar väl. Om du anser att en fråga är svår att förstå eller felaktigt ställd, skriv ner din tolkning av frågan tillsammans med svaret. Skriv födelsedatum på varje blad som lämnas in. Lycka till! Cecilia, Anna & Patrick
ALLMÄNT 1. (2 p) I system med filbaserad lagring (där varje applikationsprogram definierar och hanterar sina egna data) finns flera problem som har med datakvalitet att göra. Redogör detaljerat för två av dessa, samt diskutera utförligt hur en databasbaserad ansats löser problemen. 2. (2+2+2 p) a) Ge en översiktlig beskrivning av ansvarsområdet för en databasadministratör (DBA), respektive en dataadministratör (DA). b) Ge ett konkret exempel på en arbetsuppgift för en DBA som påverkar det externa schemat i ANSI/SPARC-modellen för exempeldatabasen DreamHome. Du skall ge en utförlig beskrivning av vad DBA:ns uppgift är i sammanhanget. c) Ge ett konkret exempel på en arbetsuppgift för en DBA som påverkar det interna schemat i ANSI/SPARC-modellen för exempeldatabasen DreamHome. Du skall ge en utförlig beskrivning av vad DBA:ns uppgift är i sammanhanget. 3. (2 p) Ge en detaljerad beskrivning av sambandet mellan följande delar i ett databassystem: DBMS (databashanterare), databas, applikationsprogram. RELATIONSMODELLEN 4. (3 p) Är följande påståenden är sanna eller falska? Motivera dina svar med en förklaring! a) Alla relationer innehåller minst en kandidatnyckel b) Alla relationer innehåller minst en främmande nyckel c) Alla primärnycklar är främmande nycklar i en annan relation 5. (2 p) Ange lämpliga domäner för attributen postnr och telefonnr. Ge både en beskrivning i ord som är så precis som möjligt och en domän som går att implementera i SQL. Om du anser att det behövs några antaganden om databasen för att ange domäner, ange även dessa. REALISERING 6. (2 p) Antag att du arbetar som DBA för en större databas och att det har uppstått prestandaproblem som gör att svarstiden för användare av systemet ibland blir oacceptabelt lång. Beskriv utförligt hur du går tillväga för att ta reda exakt var prestandaproblemen finns och vilka åtgärder som kan vidtas.
7. (1+2 p) Två mekanismer som används för att upprätthålla god säkerhet i en databas är auktorisering och autentisering. a) Vad innebär dessa begrepp? Ge en kort förklaring av begreppen. b) Vilka mekanismer finns i ett databassystem för att implementera auktorisering och autentisering. Ge en översiktlig beskrivning. MODELLERING 8. (2 p) Nedanstående fragment av en konceptuell datamodell är tänkt att modellera en del av ett bibliotek för en högskola, där man vill veta vilka kursböcker som finns i olika ämnen och vem som har skrivit varje bok. Vi antar för enkelhets skull att varje bok har exakt en författare. a) Vilket problem finns med ovanstående modell? b) Åtgärda problemet genom att skapa en bättre modell! Endast UML-diagram behöver anges. 9. (4+2p) Din uppgift är att skapa en databas för en kampsportklubb. Klubben har ett antal medlemmar som kan träna olika kampsporter och ett antal tränare som undervisar i dessa. För alla kampsporter registreras kampsportens namn. För alla medlemmar registreras det (utöver namnet och ett medlemsnummer) vilka kampsportsgrenar de tränar (man kan träna flera olika) och den bältesgrad de har i grenen i fråga. För tränarna registreras det (utöver namnet) vilka kampsportsgrenar de undervisar (en eller flera) och vilken bältesgrad de har i dessa. För de vanliga medlemmarna registreras även information om medlemsavgiften, nämligen beloppet och inbetalningsdatumet. Det ska även registreras om de har en giltig licens eller inte (licenserna är grenvisa). Man skall kunna räkna antalet medlemmar per gren vid behov och även antal tränare per gren vid behov. a) Skapa en konceptuell datamodell med attributlista utifrån beskrivningen ovan. Ni får själva fylla i med fler attribut än de som nämns ovan om det behövs. b) Skapa, baserat på den konceptuella datamodellen i uppgift a), en logisk datamodell med attributlista. Ni behöver inte skriva modellen som relationsschema, utan UMLdiagram räcker. Främmande nycklar skall inte markeras och ni skall inte heller normalisera modellen.
NORMALISERING Ange i dina lösningar om du utgår från Codds definitioner av normalformerna, eller Connolly & Beggs förenklade definitioner. 10. (2 p) Nedanstående relation som innehåller uppgifter om högskolelärare, vilka kurser de undervisar på och vilka ölsorter de gillar, uppfyller BCNF, men bryter mot 4NF. Lärare Kurs Ölsorter Hubert DBT Staropramen Hubert DBT Guinness Hubert SysAd Staropramen Hubert SysAd Guinness Cecilia DBT St. Peter s Winter Ale Cecilia PTek St. Peter s Winter Ale Lucia SysAd Samuel Adams Boston Lager Lucia SysAd Brewdog Punk IPA Lucia SysAd Staropramen Lucia GProg Samuel Adams Boston Lager Lucia GProg Brewdog Punk IPA Lucia GProg Staropramen a) Ange, med korrekt notation, det multivärda beroendet i relationen. b) Normalisera relationen till 4NF. 11. (1+3 p) Relationen R innehåller uppgifter om resultat från rallytävlingar. R(tävlingsId, bana, datum, segrare, varvtidrekord, stall, antalvarv, banlängd, segertid) tävlingsid identifierar unikt en rallytävling, bana är namnet på rallybanan, datum är tävlingsdatumet, segrare är vem som vann loppet, varvtidrekord är banrekordet på ett varv på den aktuella banan, stall är vilket stall segraren tillhör, antalvarv är hur många varv tävlingen kördes, banlängd är banans längd och segertid är segrarens totaltid i tävlingen. Följande funktionella beroenden har identifierats: tävlingsid bana, datum, segrare, varvtidrekord, stall, antalvarv, segertid bana, datum tävlingsid, segrare, varvtidrekord, stall, antalvarv, segertid bana varvtidrekord, banlängd segrare stall segrare, datum segertid Utgå från de funktionella beroenden ni får fram från ovanstående (och inga andra) och normalisera relationen R genom att utföra följande uppgifter: a) Vilken/vilka kandidatnycklar finns i R? b) Normalisera stegvis relationen till BCNF. För varje normalform som ej uppfylls, ange vilket eller vilka beroenden som strider mot normalformen och vilka åtgärder som vidtas i form av nya relationer och förändringar i existerande relationer.
SQL Nedan visas databasschemat för ett enkelt flygplansbokningssystem, där en Kund kan göra en Bokning, som består av en Resväg från en Flygplats till en annan via noll, en eller flera andra flygplatser. För varje delsträcka, finns det en eller flera Passagerare samt en flygning (Flyg) från en avgångsflygplats till en destinationsflygplats. I schemat står PK för Primary Key (primärnyckel) samt FK för Foreign Key (främmande nyckel), där pilarna i schemat visar vilken tabell som den främmande nyckel refererar till (lägg märkte till den sammansatta främmande nyckeln i tabellen Passagerare som refererar till tabellen Resvag). Ett kolumnnamn med fet stil i schemat indikerar att kolumnen inte accepterar NULL, annars accepterar kolumnen NULL. Använd databasschemat för att besvara nedanstående frågor. Kund Passagerare Flygplats PK Kundnummer int Fornamn varchar(20) Efternamn varchar(25) Passnummer varchar(20) Adress varchar(50) Postnummer varchar(10) Ort varchar(25) Land varchar(25) Telefonnummer varchar(15) PK,FK1 Bokningsnummer varchar(10) PK,FK1 Flygnummer varchar(10) PK,FK2 Kundnummer int Biljettklass varchar(15) Sittplats varchar(4) AntalVaskor int Specialmat bit Incheckad bit PK Flygplatskod char(3) Flygplatsnamn varchar(30) Adress varchar(50) Postnummer varchar(10) Ort varchar(25) Land varchar(25) Telefonnummer varchar(15) Email varchar(30) Webbsida varchar(40) Bokning Resvag Flyg PK Bokningsnummer varchar(10) FK1 Kundnummer int Bokningsdatum datetime Kreditkortsnummer varchar(15) Pris numeric(8,2) PK,FK1 Bokningsnummer varchar(10) PK,FK2 Flygnummer varchar(10) Delstracka int PK Flygnummer varchar(10) FK1 Avgangsflygplatskod char(3) FK2 Ankomstflygplatskod char(3) Avgangstid datetime Ankomsttid datetime Avgangsgate varchar(4) Ankomstgate varchar(4) Flygplatskod char(3) 12. (2 p) Skriv en SQL sats som listar samtliga avgångstider och ankomsttider för de flyg vars flygnummer börjar på 'FR' och som inte har några bokningar. Flygnummer, Avgangstid samt Ankomsttid skall finnas med i resultatet. 13. (2 p) Skriv SQL kod för att besvara de tre delfrågorna nedan angående länder i vilka det finns flygplatser samt länder i vilka det bor kunder. Endast Land skall visas i resultatet. a) Lista de länder som antingen har flygplatser eller kunder. b) Lista de länder som både har flygplatser och kunder. c) Lista de länder som har flygplatser, men inga kunder. 14. (2 p) Skriv en SQL sats som returnerar totala antalet flyg per kund för de kunder vars telefonnummer inte är lika med NULL och som har minst 2 flygningar. Kundnummer samt totala antalet flyg per kund, uttryckt som AntalFlyg, skall finnas med i resultatet. Sortera på Kundnummer i stigande ordning. OBS! Samtliga flyg skall räknas med, dvs. inklusive varje flygning som gjorts för varje delsträcka utmed resvägen.