TENTAMEN För kursen DATUM: 2014-12-18 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. (3 p) Ge en utförlig beskrivning av Database Management System (DBMS). Beskrivningen skall inkludera DBMS funktion i databassystemet och en beskrivning av några viktiga komponenter i DBMS och varför de finns. 2. (2+1+1 p) Dataoberoende är en central del i ANSI/SPARC-arkitekturen. a) Förklara vad begreppen fysiskt dataoberoende och logiskt dataoberoende innebär. Visa också med en figur var i ANSI/SPARC-modellen de finns. b) Ge ett utförligt exempel på en situation där fördelen med att ha fysiskt dataoberoende i sin databasdesign illustreras. c) Ge ett utförligt exempel på en situation där fördelen med att ha logiskt dataoberoende i sin databasdesign illustreras. 3. (1+2 p) a) Ge en kort beskrivning av arbetsuppgifter och ansvarsområden för en dataadministratör (DA). b) Ge exempel på och beskriv arbetsfördelningen i situationer där en dataadministratör arbetar tillsammans med personer som innehar följande roller: i. Applikationsprogrammerare ii. Databasadministratör RELATIONSMODELLEN 4. (3 p) Relationsmodellen innehåller en del som handlar om integritet. Vilka två olika integritetsbegrepp ingår i relationsmodellen och vad innebär respektive begrepp? 5. (2 p) Definiera begreppen basrelation och vy, samt förklara med egna ord skillnaden mellan dem. REALISERING 6. (1+2 p) a) Definiera begreppet transaktion (i databassammanhang). Observera: definitionen skall vara generell, dvs. inte utifrån ett specifikt exempel. Ge också exempel på en transaktion och förklara varför det är en transaktion. b) En transaktion skall ha egenskaper med förkortningen ACID. Vad betyder respektive bokstav i detta? Ange betydelsen och motivera varför en transaktion bör ha denna egenskap. 7. (2 p) Betrakta följande två relationsscheman: OrderRad(orderNr, artnr, antal) Artikel(artNr, artnamn, pris, inköpspris, leverantör) Givet att man vill skriva ut en följesedel att skicka med vid leverans av en order, så behöver följande data tas fram för ett visst ordernr: samtliga artiklar, men artikelnummer, namn och antal. Utför lämplig denormaliseringsåtgärd för att kunna genomföra denna utsökning utan joinoperation. Ange dels de nya relationsschemana (båda!) och beskriv din åtgärd i ord.
MODELLERING 8. (2 p) Utgå från nedanstående logiska datamodell och skriv entitetstyperna som relationsscheman. 9. (4+2p) Tänk dig att du är utsedd att utveckla ett databassystem för ett stort bibliotek. Bibliotekets databas lagrar bland annat information om böcker, författare och låntagare. En bok är en viss utgiven bok, till exempel kursboken med titeln. Alla böcker har ett unikt ISBN-nummer, till exempel 978-91-44-04449-1, men eftersom ISBN-nummer är så långa har biblioteket också infört ett unikt internt nummer. Förutom internt nummer och ISBN skall det även gå att lagra titel, förlag och olika format/medietyp (exempelvis bok, E- bok, CD, mp3) för varje bok. En bok kan finnas i många exemplar. Det är exemplaren som är de fysiska böcker som står i hyllorna på biblioteket. Till exempel kanske biblioteket har köpt in tre exemplar av boken. Ett visst exemplar av en bok identifieras av ett exemplarnummer. För varje exemplar lagrar man också information om skick (ny eller nästan förstörd), utgåva samt utgivningsår. Låntagare identifieras med ett unikt låntagarnummer. Övriga attribut är namn (förnamn och efternamn) samt låntagarens adress, bestående av gatuadress, postnummer och ort. En låntagare kan låna ett visst exemplar av en bok. För varje lån lagras lånedatum och återdatum. En låntagare kan också reservera en bok som är utlånad. Låntagarna reserverar en viss bok, inte ett exemplar. För varje reservering lagras datum när den reserverats. När en låntagare lämnar tillbaka en bok efter återdatumet, måste hon/han betala böter, och därför håller vi reda på hur mycket böter varje låntagare har att betala. Avslutningsvis lagras även författare i databasen, och vilka författare som skrivit vilka böcker. Här är det naturligtvis så att en bok kan ha flera författare. För varje författare lagras namn (för och efternamn), unikt författarid och land.
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. (1+1 p) a) Vad innebär ett partiellt funktionellt beroende från en kandidatnyckel? b) Illustrera med ett eget exempel den redundans som uppstår pga. ett partiellt funktionellt beroende från kandidatnyckeln i en relation. Förklara även redundansen i ord. 11. (1+3 p) Betrakta relationen R, som innehåller uppgifter om kampanjer på varor. R = (vinnr, årgång, druvsort, producent, land, betyg) Följande funktionella beroenden, och inga andra, gäller i relationen: fd1. vinnr producent fd2. vinnr, årgång betyg fd3. producent land Utgå från de funktionella beroendena ovan (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 en restaurang. Restaurangens Kunder kan ringa in Bokningar på restaurangens Bord. När gästerna anländer till sitt Bord, kan de se vilka Artiklar (maträtter, mm) som erbjuds via de Menyrader som visas på restaurangens Menyer. Därefter kan varje Bord lägga en Order som tas om hand av restaurangens Serveringspersonal. Varje Order innehåller ett eller flera Orderrader beroende på hur många olika Menyrader som beställts. I nedanstående databasschema står PK för Primary Key (primärnyckel), FK för Foreign Key (främmande nyckel) samt pfk indikerar att en kolumn är både en primärnyckel och en främmande nyckel, där pilarna i schemat går från tabellen som innehåller den främmande nyckeln, och till tabellen som innehåller primärnyckeln som den främmande nycklen refererar till. En kolumn markerad med en asterisk (*) indikerar att kolumnen inte accepterar NULL. Använd databasschemat för att besvara nedanstående frågor.
12. (2 p) Skriv en SQL-sats som returnerar en lista över ordersumman (summan av Antal*Pris) för varje Ordernummer med följande 2 krav; 1) endast ordrar som har en Ordertid under den 1:a augusti skall visas i listan, samt 2) endast ordrar som har en ordersumma större än 1000 skall visas i listan. Visa Ordernummer och respektive ordersumma som [Summa] i listan. OBS! Inga delfrågor är tillåtna! 13. (2 p) Skriv en SQL-sats som returnerar en lista över samtliga Kunder vars Efternamn börjar på bokstaven 'A' och vars Emailadress inte är lika med NULL. Dessutom måste samma Efternamn finnas i tabellen Serveringspersonal för att den skall visas i listan. Endast kolumnen Efternamn skall visas i listan. Sortera på Efternamn i fallande ordning (Ö först, A sist). 14. (2 p) Skriv en SQL sats som skapar tabellen Orderrader enligt databasschemat. Skriv därefter en ALTER TABLE sats som lägger till villkoret att kolumnen Antal måste vara större än 0.