TENTAMEN För kursen DATUM: 2015-11-06 TID: 14 19 Ansvarig för tentamen: Anna Palmquist Förfrågningar: 0734-612003 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! Anna, Cecilia & Petter
ALLMÄNT 1. (3 p) Vilka är nackdelarna med filbaserade system och hur hanteras dessa nackdelar i ett databassystem? 2. (2 p) a) Vad är en vy? Ge en formell definition och en förklaring med egna ord. b) Hur kan vyer användas för att förenkla användarnas arbete mot databasen? Redogör i detalj för en möjlighet. 3. (3+2 p) a) Förklara skillnaderna mellan externa, interna och konceptuella scheman i ANSI/SPARC-arkitekturen samt visa med en figur var i ANSI/SPARC-modellen de finns. b) Hur är dessa olika schemalager relaterade till begreppen logiskt och fysiskt dataoberoende? RELATIONSMODELLEN 4. (3 p) Det finns tre typer av nycklar som kan användas för att unikt definiera tupler i en relation. Vilka är dessa? Ge både namn på de olika typerna av nyckel och förklaringar av begreppen där skillnaderna framgår tydligt. 5. (1+1 p) a) Vad är entitetsintegritet? b) Varför är det viktigt att upprätthålla entitetsintegritet i en databas? Ge dels en förklaring i ord och ett exempel som illustreras något av de problem som kan uppstå om entitetsintegritet inte finns. REALISERING 6. (2 p) Redogör för The Lost Update. Vad innebär termen? Hur uppstår fenomenet? Nämn även ett sätt att förhindra The Lost Update (du behöver inte redogöra för hur det sättet fungerar i detalj). Rita gärna även en figur som visar The Lost Update. 7. (2 p) En organisation tittar på olika strategier för att lagra sina data. Vilka aspekter bör organisationen fundera över? Ge alltså förslag på frågor man ska ställa sig inför lagrandet av data och skriv även en kort kommentar om under vilka omständigheter respektive fråga är relevant.
MODELLERING 8. (1+1 p) a) Redogör för begreppet kardinalitet (cardinality). b) Redogör för begreppet optionalitet (participation). 9. (4+2 p) En gymkedja har en gemensam databas för alla sina gym (id, namn och adress), som ligger utspridda över hela Sverige. En person som ska träna tecknar medlemskap med ett av gymmen. För varje medlem lagras bland annat namn, adress och telefonnummer. Medlemskapet gäller för ett år i taget. Det finns två sorters medlemskap: fullständigt (både styrketräning och gruppträning) och basmedlemskap (enbart styrketräning). Medlemmar av vissa kategorier, till exempel studenter och pensionärer, får rabatt på årsavgiften. De flesta gymmen har också olika slag av gruppträning: spinning, aerobics, step, bodypump och så vidare. Varje gym publicerar schema för gruppträningsaktiviteterna (dag och tid, passets typ och längd). Gruppträningsaktiviteterna har ett begränsat antal deltagare. Varje gym har en ägare (id, namn och adress). Det förekommer att samma person äger flera gym. Alla priser (årsavgift och pris för gruppträning) kan variera mellan kedjans olika gym. Däremot är rabatterna för olika medlemskategorier detsamma för alla gym. 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) Hur lyder definitionen av Boyce-Codd normalform (BCNF)? b) Uppfyller följande relation BCNF? Motivera ditt svar utförligt. R=(A, B, C, D, E) Med funktionella beroenden: A, B C, D A, C B, E 11. (1+3 p) Betrakta nedanstående relation R, som innehåller uppgifter om butiker i en butikskedja och de varor som säljs där. R = (butiksid, stad, pris, varuid, levid, levnamn, levtel) Följande funktionella beroenden, och inga andra, gäller i relationen: fd1. butiksid stad fd2. butiksid, varuid pris, levid fd3. levid levnamn, levtel
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 SQL-uppgifterna utgår denna gång från en filmdatabas, som åskådliggörs nedan i form ett ER-diagram. I diagrammet syns förhållanden mellan tabellerna, vilka primärnycklarna är (PK) samt om kolumnerna är numeriska (alltså heltal eller möjligen decimaltal) eller textsträngar. De tabeller ni kommer att jobba med är Film, Roll och SS, som står för Skådespelare. Lite information om de tre tabellerna: Film: filmidt är automatiskt uppräknat. titel är obligatorisk och får vara maximalt 50 tecken. betyg är obligatoriskt och ska vara minst 1 och högst 10. bolagid måste (om det inte lämnas tomt) matcha ett filmbolags ID i tabellen Bolag. SS: ssid är automatiskt uppräknat. fnamn samt enamn är obligatoriska. De får vara maximalt 30 tecken. nationalitet är t.ex. US för USA och UK för Storbritannien och max 10 tecken långt.. agentid måste (om det inte lämnas tomt) matcha ett agentid i tabellen Agent. Roll: Tabellen har en sammansatt primärnyckel och alltså inget uppräknat ID. rolltyp har längden 2. Värden som används just nu är LA (för lead actor) och SA (supporting actor). betyg är alltså betyg för just den här rollen, t.ex. Harrison Ford i rollen som Han Solo i filmen Star Wars.
Uppgifter: 12. (2 p) Skriv koden för att skapa tabellen Film. Ta med all information du kan utläsa i form av lämpliga datatyper, stränglängder, tillåtna NULL-värden, begränsningar etc. 13. (2 p) Skriv koden för att visa antal filmer för varje skådespelare. Ordna på antal filmer fallande, sedan på efternamn stigande och sist förnamn stigande. (Bilden nedan visar hur det är tänkt. I registret spelar alltså Harrison Ford i sex filmer och Tom Cruise i en.) 14. (1+2 p) Tom Cruise spelar huvudrollen i den tuffa filmen Minority Report. a) Lägg till filmen Minority Report i registret, med betyg 9 och bolagid 2. b) Lägg sedan in själva rollen i tabellen Roll. Detta ska du göra utan att känna till vad filmen har för filmid och vad Tom Cruise har för ssid, i en enda SQL-sats. Ge Tom betyget 10 för rollprestationen och sätt hans rolltyp till LA. Du kan utgå från att det bara finns en film som heter Minority Report och bara en skådespelare som heter Tom Cruise. Här är tentamensuppgifterna slut.