Lena Strömbäck, ankn 2324 2003-05-06 Skriftlig tentamen i kursen TDDB48 Databasteknik Datum: 2003-05-06 Tid: 14-18 Lokal: GARN Hjälpmedel: Inga hjälpmedel tillåtna Poängränser: Tentamen består av två delar Den praktiska delen kräver 13 poäng för godkänt Den teoretiska delen kräver 13 poäng för godkänt För betyg 4 krävs ungefär 35 poäng För betyg 5 krävs ungefär 45 poäng Resultat annonseras inom två veckor. Jourhavande lärare: Lena Strömbäck, 0709-39 6776, 013-16 46 99, 013-28 23 24 Henrik André-Jönsson, 070-3547403, 28 29 58 En engelsk version av frågorna finns på baskidan av varje blad. Använd ett papper för varje fråga även om du bara skriver en rad på det. Skriv namn och personnummer på varje blad. Ge relevanta svar på frågorna. Poängavdrag kan ges för svar som inte är direkta svar på frågan.
Del 1: Praktisk Observera! Uppgift 1 till 3 på den här tentamen beskriver ett gemensamt problem. Det är här viktigt att ni utgår från svaret på föregående uppgift när ni löser nästa uppgift. Om ni av någon anledning inte har kunnat svara på den tidigare uppgiften så är det viktigt att ni noterar vilket ER-diagram vilka tabeller ni utgår från när ni löser de följande uppgifterna. 1. ER/EER modellering 7p Bok klubben Tegelstenen vill ha hjälp med att designa en databas. Nedan följer deras önskemål om vad systemet ska klara av. Skapa ett ER/EER diagram som uppfyller deras krav och motivera ditt design förslag så bra som möjligt. Följande information ska finnas med: Böcker som finns på lager: Författare, Utgivningsår, ISBN, Titel, Abstract, Antal exemplar som finns hemma. Böcker som inte finns på lager men som kan beställas: Författare, Utgivningsår, ISBN, Titel Böcker som inte finns på lager och som utgått: Författare, Utgivningsår, ISBN, Titel Många böcker ingår dessutom i serier, så för varje bok ska man kunna se om den ingår i en serie eller ej, och om den gör det så ska man kunna se vad serien heter och vilken del i serien boken är. Vidare vill man ha koll på sina kunder. Följande information måste lagras om varje kund: Kundnummer, Namn, Adress, Telefonnummer, inköpshistorik och beställda böcker. Varje gång en kund beställer ett antal böcker ska ordern registreras i systemet. För varje order är det viktigt att man noterar när ordern togs emot, vilka böcker som ingår i ordern, vem som beställt och när böckerna skickades till kunden. Notera att uppgiften kommer att bedömmas utifrån två perspektiv. Dels om ni har lärt er rätt syntax och dels om ni har gjort en bra lösning. Det är viktigt att ni skriver ner era antaganden och motiverar er lösning. 2. ER/EER till Relationer (7p) a. Gör om ER/EER-diagrammet ovan till relationer. Om du väljer att inte följa standardreglerna ska dina översättningar motiveras. Markera primär- och främmande nycklar i din lösning. (4p) b. Det finns fyra sätt att översätta arv. Vilka? Om du har arv i det diagram som du gjort motivera varför du valt den översättning du gjort, om inte så beskriv i vilka fall de olika översättningarna är bäst. (3p)
Part 1: Practical Note! The first three exercises on this exam contains a common problem. It is important that you use the answer of the preceding exercise while solving the following one. If you, for some reason do not do this, for instance if you have not been able to solve the preceeding exercise, it is important that you describe the ER-diagrams and tables you use for solving the exercises. 1. ER/EER modelling 7p A book club The Brick needs help to design a database. Their requirements on the system is described below. Create a ER/EER diagram that fulfills their requirements and motivate your suggestions. The following information have to be present in the database: Books in store: Author, Year of publication, ISBN, Title, Abstract, Number of books in store. Books in not in store but which can be ordered: Author, Year of publication, ISBN, Title Books not in store that are out of print: Author, Year of publication, ISBN, Title Many books are part of a series, for each book it should be possible to decide if it is part of a series. If the book is part of a series we need to store the name of the series and which number in the series the book is. The book club also need to store information about their customers. The following information need to be stored for each customer: Customernumber, Name, Address, Phone, History of purchases, List of ordered books. Each time a customer orders some books the order should be registered in the system. For each order it is important to note when the order was received, the books that are part of the order, who has ordered and when the books were sent to the customer. The exercise will be corrected both according to correct ER/EER syntax and if you have made a good design of your diagram. It is important that you write your assumptions and motivate your solution. 2. ER/EER to relations (7p) a. Transform the ER/EER diagram from exercise 1 to relations. If you choose to not follow the standard rules your translations should be motivated. Mark primary and foreign keys in your solution. (4p) b. There are four possibilities for translating inheritance. Which? If you have inheritance in your diagram motivate why you have translated it the way you have, if nocribe when each of the translations should be used. (3p)
3. SQL 6p Utgå från dina relationer i uppgift 2 och skriv SQL-uttryck för följande: a. Lägg in följande data: (2p) Böcker på lager: Författare Titel Utgivningsår ISBN Abstract Antal ex Serie/(del i ringen de två tornen konungens återkomst serien) 1945 1122 Ingen 23 Härskarringen/(1) 1946 1123 Ingen 21 Härskarringen/(2) 1947 1124 Ingen 18 Härskarringen/(3) Böcker som inte finns på lager: Författare Titel Utgivningsår ISBN Abstract Serie/(del i serien) J.K. De vises 1998 2211 Ingen Harry Potter/(1) Rowlings sten Böcker som utgått: Författare Titel Utgivningsår ISBN Abstract Serie/(del i serien) Gilles Bonde från Ham 1934 0321 Ingen - Följande kund: Peter, Storgatan 2, 111 22 Linköping, 013-98242 Följande order: Peter har beställt alla böckerna i härskarringen. b. Vilka böcker finns klara för omgående leverans? (1p) c. Vilken kund har handlat för näst mest pengar? (3p)
3. SQL 6p Use your relations from exercise 2 and write SQL statements for the following tasks: a. Add the following data to your relations: (2p) Books: Author Title Publ. Yaer ISBN Abstract Number of copies Series/part of the series ringen 1945 1122 Ingen 23 Härskarringen/(1) de två tornen konungens återkomst 1946 1123 Ingen 21 Härskarringen/(2) 1947 1124 Ingen 18 Härskarringen/(3) Books not in store: Author Title Publ. Year ISBN Abstract Series/part of the J.K. Rowlings De vises sten series 1998 2211 Ingen Harry Potter/(1) Books out of print: Author Title Publ. Year ISBN Abstract Series/part of the Toliken Gilles Bonde från Ham series 1934 0321 Ingen - The following customer: Peter, Storgatan 2, 111 22 Linköping, 013-98242 The following order: Peter has ordered all the books in Härskarringen. b. What books are available for immediate delivery? (1p) c. Who is the second best customer? (I.e. has purchased books for second most money.) (3p)
4. Normalisering (5p) Följande tabell beskriver en bussresearrangörs kundregister med bokade bussresor. BokNr Namn AvrDatum PersNr Resmål Längd Reskod 1234 Per 20030607 112233- Toscana 2 veckor TOSCVIN Persson 4455 1234 Stina 20030607 334455- Toscana 2 veckor TOSCVIN Persson 6677 5678 Pia 20030705 222222- Paris 5 dagar DISNEY5DGR Karlsson 3333 5678 Filip 20030705 111111- Paris 5 dagar DISNEY5DGR Karlsson 2222 5432 Karl Bonde 20030607 554433-2211 Toscana 2 veckor TOSCVIN Bokningsnumret (BokNr) är unikt för ett antal personer som bokat en resa tillsammans. Varje person har ett namn och ett personnummer (PersNr). Avresedatum (AvrDatum) talar om när resan ska påbörjas. Varje typ av resa har en reskod som unikt bestämmer resmål och längd på resan. (Dock kan samma reskod referera till flera likadana resor med olika avresedatum.) Normalisera tabellen ovan till BCNF. Det är viktigt att du redovisar antaganden och fullständiga funktionella beroenden samt motiverar varje steg i normaliseringsprocessen.
4. Normalisation (5p) The table below contains a bus travel agencys list of booked travels. BookNr Name Date PersNr Destin. Length Code 1234 Per 20030607 112233- Toscana 2 weeks TOSCVIN Persson 4455 1234 Stina 20030607 334455- Toscana 2 weeks TOSCVIN Persson 6677 5678 Pia 20030705 222222- Paris 5 days DISNEY5DGR Karlsson 3333 5678 Filip 20030705 111111- Paris 5 days DISNEY5DGR Karlsson 2222 5432 Karl Bonde 20030607 554433-2211 Toscana 2 weeks TOSCVIN The Booking number (BokNr) is unique for a group of persons that have booked their trip together. Each person has a name and a personal number (PersNr). Date is the date when the trip will begin. Each kind of trip has its own code that determines the destination (Destin.) and length of the trip. (The same code can refer to several trips with different startdates.) Normalise the table to BCNF. It is important that you describe your assumptions and full functional dependencies as well as all steps in the normalisation process.
Del 2: Teoretisk 5. Relationsmodellen (8p) Vad är relationen mellan följande begrepp. Beskriv och exemplifiera. a. Supernyckel och kandidatnyckel (bara nyckel enligt Riccardi) b. Kandidatnyckel och primärnyckel c. Kandidatnyckel och primära attribut d. Referensintegritet och främmande nycklar 6. Relationsalgebra (3p) Antag att vi har tabellerna R(a, b, c,) bestående av n rader och S(d, e, f, g) bestående av m rader. a. Skriv uttrycket i relationsalgebra för att göra join på R och S över R.a = S.f. (1p) b. Vad är det minimala och maximala antalet rader som detta uttryck producerar? När produceras minimalt och maximalt antal rader? (2p) 7. Optimering (5p) a. Hur fungerar en heuristisk frågeoptimerare? Beskriv den heuristiska frågeoptimeringsalgoritmen. (Optimization of complex expressions i Riccardi) (3p) b. Vad är syftet med den heuristiska frågeoptimeringen? (2p) 8. Datastrukturer (6p) Givet följande data: Non-spanning data block, en block storlek på 10 bytes, en pekarstorlek på 2 bytes och följande tupel storlek: Pnum 2 bytes, Name 4 bytes, Jobcode 1 byte. Databasen innehåller 1000 element. a. Hur ser ett primärindex (index by primary key enligt Riccardi) på Pnum ut? (1p) b. Visa hur många blockaccesser behövs för att hitta en person givet ett Pnum. (2p) c. Hur ser ett sekundärindex på Jobcode ut? (1p) d. Visa hur många blockaccesser behövs för att hitta alla personer som har Jobcode = 4 om man använder ditt index från uppgift c. (2p) 9. Recovery (3p) a. Förklara vad som händer vid en kontrollpunkt (checkpoint) (1p) b. Vad innebär det att en transaktion är återställningsbar (recoverable)? Ge exempel på en transaktion som inte är återställningsbar och förklara varför den inte är det. (2p)
Part 2: Theoretical 5. Relational model (8p) How are the following terms related. Describe and give examples. a. Super key and candidate key b. Candidate key (only key in Riccardi) and primary key c. Candidate key and primary attributes d. Referential integrity and foreign keys 6. Relational algebra (3p) Suppose we have the tables R(a, b, c,) consisting of n rows and S(d, e, f, g) consisting of m rows. a. Write the relational algebra expresssion for the join of R and S on R.a = S.f. (1p) b. What are the minimum and maximum number of rows the expression produces. In what circumstances does it produce that number of rows. (2p) 7. Optimisation (5p) a. How does heuristic query optimisation work? Describe the algorithm for heuristic query optimisation. (Optimization of complex expressions in Riccardi) (3p) b. What is the purpose of heuristic query optimisation? (2p) 8. Data structures (6p) Assume the following data: Non-spanning data block, block size 10 bytes, pointer size 2 bytes, the following tuple: Pnum 2 bytes, Name 4 bytes, Jobcode 1 byte. The database contains 1000 elements. a. What would a primary index (index by primary key in Riccardi) on Pnum look like? (1p) b. Show how many block accesses are needed to find a person given a Pnum. (2p) c. What would a secondary index on Jobcode look like? (1p) d. Show how many block accesses are needed to find all persons with Jobcode=4 using your index from c. (2p) 9. Recovery (3p) a. Explain the actions taken at a checkpoint (1p) b. What does it mean that a transaction is recoverable? Give an example of a transaction that is not recoverable and explain why it is not. (2p)