2003-01-08 Lena Strömbäck, ankn 2324 Written exam in the course TDDB 48 Database technology Date: 2003-01-08 Time: 14-18 Room: GARN Equipment: English dictionary allowed Limits for passing: The exam consists of two parts: Part one requires 13 points for pass Part two requires 13 points for pass Grade 4 requires approx. 35 points Grade 5 requires approx. 45 points Results: Will be available within two weeks Teacher in charge: Lena Strömbäck, 0709-39 6776, 013-16 46 99, 013-28 23 24 A Swedish version of the questions is found at the back of each sheet. Use one sheet for each question, even if you only write one line on it. This is necessary since several people correct the exam and we divide the assignments. For this same reason be sure to write your name and personal number on each page. Part 1: Practical 1. ER modelling (8p) The bookstore LotsofBooks plan to start a web shop for selling books. Help them create a good ER model that they can later use to implement the system. The system should keep track of all books in stock so that they can see what they have in stock and if they have to reorder books from the publishing companies. The system should also keep track of customers. The first time a customer orders books they will have to register in the system. LotsofBooks would like the system to keep track of all books a customer has bought (and when the purchase was done) so that they can perform directed marketing later on and send out offers targeted directly for each customer. The following data is stored on each book: ISBN, Author(s), Title, Edition, Publication Year The following data is stored on each author: Name, country of origin, publication history, Year of birth The following data is stored about a customer: Name, Address (street/po box, zip & country), Email, Phone (optional), Book wish list (optional), current orders (orders not shipped yet), order history. All data not present here but present in the ER diagram must be explained! Design decisions must be made clear. For full points on the exercise you have to motivate your choices and discuss alternative solutions. 2. Normalisation (4p) The following relation describes the contest results for member in a skiing club: BOOKINGS(Name, BirthYear, Contest, Arranger, Phone, Class, Result) The Name is the name of a member in a club and we assume that it uniquely identifies a person. BirthYear is when this person was born. Contest is the name of a contest and it uniquely identifies the contest. Arranger is the club arranging the contest and Phone is a phone number to contact that club. Class is the class that the person has participated in and Result is his result in this contest class. We assume that a person can participate in more than one class for each contest. Transform the relation so that it will be in BCNF, show every step you make and explain why you do it. Del 1: Praktisk 1. ER modellering (8p) Bokaffären MassaBöcker planerar att dra igång en Web-shop för att sälja böcker. Hjälp dem att skapa en bra ER-model som dom kan använda för att implementera sin databas. Databasen ska användas för att hålla koll på alla böcker i lagret, så att man kan se hur många exemplar av en bok man har liggande, eller om man behöver göra en beställning. Systemet behöver också hålla koll på alla kunder. Innan en kund gör några inköp måste kunden registrera sig. MassaBöcker skulle vilja att systemet håller koll på vad varje kund har köpt (och när) så att man senare kan göra riktade marknadsföringsåtgärder för varje kund. Följande data ska lagras för varje bok: ISBN, Författare, Titel, Utgåva, Publiceringsår Följande data ska lagras för varje författare: Namn, ursprungsland, publiceringshistorik, födelseår Följande data ska lagras för varje kund: Namn, Adress (gatu/box, postnr & land), e-post, telefon (inte nödvändigt), en bokönskelista, aktuell order (böcker som är beställda men inte skickade). All data som inte finns med här, men som finns med i ER diagrammet (eller vice versa) måste förklaras! Designbeslut måste klargöras. För full poäng på uppgiften måste du motivera dina designval och redogöra för alternativa lösningar. 2. Normalisering (4p) Följande relation beskriver tävlingsresultaten för medlemmarna i en skidklubb: BOOKINGS(Name, BirthYear, Contest, Arranger, Phone, Class, Result) Name är namnet på en medlem i klubben och vi antar att namnet unikt identifierar en person. BirthYear är när denna person är född. Contest är namnet på en tävling och vi antar att namnet unikt identifierar en tävling. Arranger är den klubb som arrangerar tävlingen och Phone är ett telefonnummer för att kontakta denna klubb. Class är den klass som medlemmen deltagit i och Result är hans resultat i klassen. En person kan delta i mer än en klass i en tävling. Transformera relationen till BCNF, visa varje steg du gör och förklara varför du gör det. 3. EER modelling to relations (7p) This EER-diagram represents the mini world of a rental service. Customers can rent bicycles. As a customer can for example rent the same bike on two different occasions (and the rental service wants to track this), there is a rental entity that represents each rental of an object by a customer. Bicycles can be marked as suitable for male, female or both sexes; they can also be grouped in mountain bikes and city AcquisitionDate EndDate AcquisitionPrice ObjectID StartDate CustID Brand Name Bicycle Wheelsize 1 participates Rental 1 makes Customer Address d Female Unisex City hasBasket 8 8 8 8 8 Male d Mountain ProfileDepth bikes. a. Translate this EER-diagram to a suitable relational schema (but read the following questions first). Use the following syntax: (4p) TablenameA(A-Attribute1, A-Attribute2, A-Attribute3) A-Attribute1 is primary key. TablenameB(B-Attribute1, B-Attribute2) TablenameA(A-Attribute1) B-Attribute1 is primary key, B-Attribute2 is foreign key and references AAttribute1 in TablenameA. b. Formulate the SQL-query that will return all ObjectIDs for female city bikes that are unavailable for rent on 11-Feb-2003 (=that are already rented by someone during this day or longer). (2p) (You can assume that SQL automatically converts between date and text data types, for example, you can assume that StartDate > ‘11-Feb-2003’ is a valid Boolean expression). c. There are four ways of implementing subclasses. Why did you implement the subclasses Male, Female, and Unisex the way you have? Motivate your choice for this specific case. (1p) 3. EER modellering till relationer (7p) Detta EER-diagram representerar en minivärld för en hyrservice. Kunder kan hyra cyklar. Eftersom en kund kan hyra samma cykel vid flera olika tillfällen (och hyrservicen vill hålla koll på detta), finns en entitet rental som representerar varje hyrtillfälle. Cyklar kan markeras som passande för herrar eller damer eller både och; de kan också grupperas som mountain bikes och city bikes. AcquisitionDate EndDate AcquisitionPrice ObjectID StartDate CustID Brand Name Bicycle Wheelsize 1 participates Rental 1 makes Customer Address d Female Unisex City hasBasket 8 8 8 8 Male d 8 Mountain ProfileDepth a. Översätt diagrammet till ett lämpligt relationsschema men läs följande frågor först. Använd följande syntax: (4p) TablenameA(A-Attribute1, A-Attribute2, A-Attribute3) A-Attribute1 är primärnyckel. TablenameB(B-Attribute1, B-Attribute2) TablenameA(A-Attribute1) B-Attribute1 primärnyckel, B-Attribute2 är främmande nickel och refererar till AAttribute1 i TablenameA. b. Formulera SQL-frågan som returnerar ObjectIDs för female city bikes som är upptagna (dvs hyrda av någon) 11-Feb-2003. (2p) (Du kan anta att SQL automatiskt konverterar mellan datum och text. Till exempel, du kan anta StartDate > ‘11-Feb-2003’ är ett tillåtet uttryck). c. Det finns fyra sätt att implementera subklasser. Varför implementerade du klasserna Male, Female, och Unisex på det sätt du gjorde? Motivera ditt val för detta fall. (1p) 4. SQL (6p) This is a snap from a database at a hospital. Patients are prescribed pills (nothing else!). Patient PatID PatName 1001 Svensson, Anders 1002 Ljungberg, Fredrik Pill PillID PillName PillClassification 401 Insomnix 5 402 Rigor 2 403 Dolorex 10 404 Musculus 5 Prescription PillsPerDay PatID PillID Date 1001 401 2002-04-23 2 1002 403 2002-04-23 4 1002 403 2002-09-09 4 NumberOfDays 14 3 2 a. List all pill names and their classification sorted by their classification (highest classification first) and their name. (2p) Result: Dolorex Insomnix Musculus Rigor 10 5 5 2 b. List the names of the pills that have ever been prescribed to the patient called Ljungberg, Fredrik. (2p) Result: Dolorex c. For each pill that was ever prescribed, list the total number of pills prescribed. (2p) Result: Insomnix Dolorex 28 20 4. SQL (6p) Detta är ett utdrag från en databas på ett sjukhus. Patienterna ordineras piller (inget annat!). Patient PatID PatName 1001 Svensson, Anders 1002 Ljungberg, Fredrik Pill PillID PillName PillClassification 401 Insomnix 5 402 Rigor 2 403 Dolorex 10 404 Musculus 5 Prescription PillsPerDay PatID PillID Date 1001 401 2002-04-23 2 1002 403 2002-04-23 4 1002 403 2002-09-09 4 NumberOfDays 14 3 2 a. Lista namnet och klassifikationen på alla piller sorterat på klassifikation (högsta först) och namnet. (2p) Resultat: Dolorex Insomnix Musculus Rigor 10 5 5 2 b. Lista namnet på alla piller som ordinerats till patienten Ljungberg, Fredrik. (2p) Resultat: Dolorex c. För varje piller som någonsin ordinerats, lista det totala antal piller som ordinerats. (2p) Resultat: Insomnix Dolorex 28 20 Part 2: Theoretical 5. A DBMS is built in a three-layered architecture. Imagine a database with 2000 students and 150 courses. The database consists of information which students have passed the courses. We would like a teacher to only access information of his courses and a student only to access information of his results. Describe briefly what this database looks like, i.e. what kind of information is present and how is it structured, on each of the layers in the architecture. (4p) 6. Suppose we have the tables R(a, b, c,) consisting of n rows and S(d, e, f, g) consisting of m rows. (5p) a. Write the relational algebra expresssion for the join of R and S on R.a = S.f. (1p) b. Write the relational calculus expression for the same query as in a. (1p) c. What are the minimum and maximum number of rows the expression produces. In what circumstances does is produce that number of rows. (2p) d. Assume that we instead make the join on R.b=S.g. What is now the maximum and minimum number of produced rows. When do we get a maximum or minimum result? (1p) 7. You have implemented a large relational database and now you are starting to discover that the queries you run are a little bit slow. You decide to create a secondary index on the relation and the RDBMS you are using support Hashing and B+-trees. Explain how these two structures work, and explain what you take into account when deciding which structure to use and under what circumstances each structure is optimal. (4p) 8. What is it we try to optimize during query optimization? It is not enough to say that we try to optimize query execution time. (2p) 9. For each of the following transaction schedules, characterize it as serial, serializable, recoverable or strict. Motivate your answers. (4p) a. T1.read(t), T2.read(t), T2.write(t), T2.commit, T1.rollback b. T1.write(t), T2.read(t), T2.write(t), T2.commit, T1.rollback 10. Give three examples of failures in DBMSs. For each one, describe how recovery from this failure may be accomplished. (6p) Del 2: Teoretisk 5. Ett DBMS är byggt i en arkitektur med tre lager. Antag att vi har en databas med 2000 studenter och 150 kurser. Databasen innehåller information om vilka studenter som klarat kurserna. Vi vill att varje lärare bara ska se information om kurser han hållit medan studenterna bara kan se sina egna resultat. Beskriv kortfattat hur denna databas kan se ut, det vill säga vilken typ av information som finns och hur den är strukturerad på vart och ett av de tre lagren. (4p) 6. 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. (5p) a. Skriv uttrycket i relationsalgebra för att göra join på R och S över R.a = S.f. (1p) b. Skriv ett uttryck i relationskalkyl för samma operation som i a. (1p) c. Vad är det minimala och maximala antalet rader som detta uttryck producerar? När produceras minimalt och maximalt antal rader? (2p) d. Antag att vi i stället gör join R.b=S.g. Vad är nu det maximalt respektive minima antalet producerade rader? När får vi maximalt respektive minimalt resultat? (1p) 7. Du har implementerat en stor relationsdatabas och nu börjar du att upptäcka att dina frågor är lite långsamma. Du bestämmer dig för att skapa ett sekundärindex på en relation och RDBMS stödjer Hashning och B+-träd. Förklara hur dessa strukturer fungerar och förklara vad du tar hänsyn till när du bestämmer vilken struktur som är optimal, och under vilka förutsättningar den är optimal. (4p) 8. Vad är det vi försöker optimera vid frågeoptimering? Det räcker inte med att svara att vi vill minimera frågeexekveringstiden. (2p) 9. För vart och ett av följande scheman karaktärisera det som seriellt, serialiserbart, återställningsbart eller strikt. Motivera dina svar. (4p) a. T1.read(t), T2.read(t), T2.write(t), T2.commit, T1.rollback b. T1.write(t), T2.read(t), T2.write(t), T2.commit, T1.rollback 10. Ge tree exempel på felsituationer för ett DBMS. För vart och ett av dessa beskriv hur återställning från detta fel kan uppnås. (6p)