TDDB 48 Database technology

advertisement
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)
Download