Tekniska högskolan i Linköping Institutionen för datavetenskap Tore Risch/Thomas Padron-McCarthy Tentamen i TDDB38 Databasteknik -------------------- lördag 18 oktober 1997 kl 9-13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Hjälpmedel: Inga hjälpmedel. Poängkrav: Maximal poäng är 30. För godkänt krävs 15 poäng. Resultat: Anslås i IDA:s tentaresultatsrum (på bottenvåningen i norra delen av E-huset). Visning: Tid för visningen anges då resultaten anslås. Examinator: Tore Risch Jourhavande, via telefon: Tore Risch, telefon 070-6545231 Thomas Padron-McCarthy, telefon 070-7493646 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Anvisningar ----------- Läs igenom hela skrivningen och notera eventuella oklarheter innan du börjar lösa uppgifterna. Förutom anvisningarna på skrivningsomslaget gäller följande: Skriv tydligt och klart. Lösningar som inte går att läsa kan naturligtvis inte ge några poäng, och oklara formuleringar kommer att misstolkas. Antaganden utöver de som står i uppgiften måste anges. Gjorda antaganden får förstås inte förändra den givna uppgiften. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ LYCKA TILL! Scenario till uppgift 1-4: Svenska äppelforskningsinstitutet i Linköping bedriver forskning om äppelodling. Institutet har ett stort antal äppelträd, av olika sorter, och samlar in data om dessa. Varje enskilt äpple undersöks och vägs. Data för ett visst år lagras sen i en databas. ("Trädsort" och "äppelsort" är samma sak.) Ett E/R-diagram över databasen ser ut så här: 1. (4p) Implementera databasen i relationsmodellen, dvs översätt E/R-diagrammet ovan till tabeller. Ange vilka relationer som finns, vilka attribut varje relation innehåller, och vad som är primärnyckel. Implementationen ska vara bra. (Titta även på fråga 3 nedan, så att den fungerar i din lösning!) 2. (3p) Det finns ett hundratal äppelsorter, och tiotusentals träd. Varje träd kan bära flera hundra äpplen. Gör realistiska antaganden om vilka frågor som kommer att ställas, ange dessa antaganden, och bestäm sedan lagringsstrukturer (inklusive sekundärindex) för tabellerna. 3. (4p) Formulera följande SQL-frågor mot databasen: a) På positionen x=98, y=47 står ett äppelträd. Av vilken trädsort är detta träd? b) Trädgårdsmästaren "Sven Svensson" ansvarar för ett antal träd. Av vilka trädsorter är dessa träd? c) Hur mycket väger, i genomsnitt, ett äpple av sorten "Åkerö"? (Hint: Det finns en aggregatfunktion som heter "avg".) d) Vilken trädgårdsmästare har mätt flest äpplen? (Du får, om du vill, underlätta genom att definiera en vy.) 4. (1p) Formulera fråga 3b ovan (om vilka trädsorter som trädgårdsmästaren "Sven Svensson" ansvarar för) i relationsalgebra. 5. (5p) Flygbolaget Struggel And Strul behöver utveckla ett nytt system för platsbokning som förbättrar servicen för deras resenärer. Sittplatserna på varje flygning finns i en relation SEATBOOKINGS(FNO, DATE, SEAT, SMOKING, CLASS, PASSENGER) där FNO är flygningens nummer, DATE är den dag flygningen äger rum, SEAT är ett platsnummer, SMOKING är 'Y' för plats med rökning tillåten och 'N' annars, CLASS är 1 eller 2, samt PASSENGER är blank om platsen är obokad, och namnet på den passagerare som bokat platsen annars. Nyckel är FNO, DATE, SEAT. Implementera med hjälp av s.k. ECA-triggers en 'väntelista' där kunder kan anmäla sina platsbokningsbehov om lämplig plats ej finns tillgänglig, och där platsen bokas automatiskt när lämplig plats blir ledig. Det markeras därvid i väntelistan att platsen blivit bokad. WAITING(FNO, SMOKING, CLASS, PASSENGER, SEAT) En väntande passagerare fyller in FNO, SMOKING, CLASS, och PASSENGER, varefter systemet bokar plats så snart den blivit ledig. Passageraren skall sedan kunna se i väntelistan vilken plats han/hon har fått. Väntelistan är en relation som du designar själv. Ange kortfattat hur man registrerar sig i väntelistan. 6. (5p) Vad är replikering? Vad är fragmentering? När är replikering fördelaktigt? När är fragmentering fördelaktigt? Hur lagras normalt schemainformation i ett distribuerat DBMS? 7. (4p) Vi har två relationer EMPLOYEE(SSN, NAME, SALARY, DNO, ADDRESS, PHONE) DEPARTMENT(DNO, DNAME, MGR, SECR, LOCATION) och frågan SELECT S.NAME FROM EMPLOYEE E, DEPARTMENT D, EMPLOYEE S WHERE E.NAME = "Kalle Karlsson" AND D.DNO = E.DNO AND D.SECR = S.SSN Översätt frågan till tuple-relationskalkyl. Översätt frågan till domän-relationskalkyl. 8. (4p) Man har en relation med många poster: SELLERS(SSN, NAME, SALES, BONUS) Man vill mycket ofta skapa en lista över de 10 försäljare som har högsta SALES beloppen (så man kan öka deras BONUS). - Hur designar man databasen för att effektivt kunna understödja sådana 10-i-topp frågor? - Hur bär man sig åt för att söka ut det 10 bästa försäljarna utan att läsa alla posterna i filen? (Standard SQL - ej Access-SQL) - Förklara kortfattat varför metoden fungerar.