OR- OCH OO-DBHS, 2I-1227, IS4
FÖRELÄSNINGAR
OCH SEMINARIER
Databasmodeller. Relationsmodellen. Objektdatabaser. Semistrukturerade data.
Kursens uppläggning.
FÖRELÄSNING 1:
FÖRELÄSNING 2:
Modell och frågespråk för relationsdatabaser
FÖRELÄSNING 3:
Modell och frågespråk för objektdatabaser.
FÖRELÄSNING 4:
Modell och frågespråk för semistrukturerade data. XML som datamodell.
FÖRELÄSNING 5:
Inbäddade frågespråk.
FÖRELÄSNING 6:
Gästföreläsning.
SEMINARIUM 1:
Konstruktion av databasscheman enligt objekt- och relationsmodellen.
SEMINARIUM 2:
Frågespråk för relationsdatabaser.
SEMINARIUM 3:
Frågespråk för relationsdatabaser och objektdatabaser.
SEMINARIUM 4:
Semistrukturerade data.
1
OR- OCH OO-DBHS, 2I-1227, IS4
LITTERATUR
S. Abiteboul et. al., Data on the Web, Morgan Kaufmann, 2000.
Artikelsamling
Bredvidläsningslitteratur
E. Bertino and L. Martino, Object-Oriented Database Systems, Addison-Wesley, 1994.
Connoly, Begg and Strachan, Database Systems,Addison-Wesley, 1998
M. Stonebreaker, Object Relational DBMSs – the Next Great Wave, Morgan Kauffmann, 1996.
2
OR- OCH OO_DBHS, 2I-1227, IS4
LÄRARE
FÖLJANDE LÄRARE UNDERVISAR PÅ KURSEN:
NAMN
EPOSTADRESS
TEL
Maria Bergholtz
[email protected]
16 16 58
Nikos Dimitrakas
[email protected] 16 20 99
Paul Johannesson
[email protected]
16 16 71
Ulla-Stina Juhlin
[email protected]
16 16 37
Michael Persson
[email protected]
16 16 31
Kursansvarig är Paul Johannesson.
3
OR- OCH OO-DBHS, 2I-1227, IS4
E X A M I N ATI O N
Kursens examination består av tre delar:
Seminarier
Laborationer
Tentamen
Betyget för kursen sätts enbart utifrån tentamensresultatet.
SEMINARIER
UPPGIFT:
Seminarierna är obligatoriska och den studerande skall inför varje seminarium ha ett skriftligt
lösningsförslag på samtliga seminarieuppgifter. Det är bra att samarbeta om uppgifterna, men varje
student skall skriva ned sin egen lösning.
REDOVISNING:
Seminarieledaren låter någon av studenterna presentera sin lösning vid tavlan och därefter följer en
gemensam diskussion baserad på den presenterade lösningen. Varje studerande skall alltså vara
beredd att redogöra för sina lösningar och att besvara frågor med utgångspunkt från de givna
uppgifterna samt aktivt delta vid diskussioner om alla presenterade lösningar.
Villkor för rest: Om en studerande inte närvarat eller inte gjort lösningsförslag till ett seminarium får
den studerande lösa en extrauppgift. Denna skall redovisas både muntligt och skriftligt. Exakta
villkor för extrauppgifter bestäms av seminarieledaren eller kursansvarig.
LABORATIONER
UPPGIFT:
De studerande skall gruppvis genomföra tre laborationer:
1. Frågespråk för objektdatabaser (en del av seminarium 3)
2. Embedded SQL
3. XML och relationsdatabaser
Anvisningar för laborationerna delas ut senare.
4
OR- OCH OO_DBHS, 2I-1227, IS4
T E N TA M E N
UPPGIFT
Skriftlig tentamen.
5
OR- OCH OO-DBHS, 2I-1227, IS4
SEMINARIUM 1
MODELLERING
LÄSANVISNINGAR
Artikelsamling
Föreläsningsbilder för föreläsning 1 och 3
Läroböcker om relationsdatabaser från tidigare kurser, t.ex. Connoly/Begg/Strachan
ÖV N I N G 1 – B OK T RYC K E R I E T
genom att inte ha några lager vare sig på tryckta
böcker eller på papper. Förlaget har ett tryckeri med en/flera nya automatiserade tryckpressar som
hämtar information från databaser och trycker upp boken/böckerna och paketerar dem.
ETT FÖRLAG EFFEKTIVISERAR SIN VERKSAMHET
Förlaget kommer att erbjuda nya specialtjänster, t.ex. att en kund med dålig syn kan beställa en bok
tryckt med ett tydligt typsnitt och en större font. Kunden kan också välja mellan olika format på
boken. Detta medför att textinnehållet i boken inte kan vara uppdelat på sidor, utan sidnummer,
fotnoter, innehållsförteckning och index m.m. genereras inför tryckning så att allt hamnar på rätt
sida. Det behövs också information om ett nytt kapitel börjar löpande eller om ett nytt kapitel alltid
börjar på en högersida samt uppgifter om den tryckta bokens mått. Tryckpressen beräknar
pappersåtgång inför en tryckning och meddelar om mer papper behöver beställas. Utöver tryckta
versioner av böcker tillhandahåller förlaget också Internetversioner, audioversioner (med manlig eller
kvinnlig röst) samt böcker i Brailleskrift.
Det finns ett gammalt beställningssystem som kan nås via WWW eller via datorerna på förlaget.
Beställningssystemet ger information om utbudet av titlar med författare, utgivningsår och ISBNnummer. Kunden kan lägga in beställning av böcker med sina adress- och leveransuppgifter samt
betalningssätt. Den nya verksamheten kräver att nya uppgifter om specialupplagor, t.ex. större font,
måste kunna erbjudas i beställningssystemet.
Förlaget behöver ha information om titlar, författare, utgivningsår, ISBN-nummer och bokinnehållet
(originaltexten inklusive figurer) med default format på rubriker, brödtext, sidhuvud och sidfot,
tabell- och figurtitlar, innehållsförteckning, index m.m. m.m. De har också information om omslag
med bild och text, förlagets texter på bokomslag och på förlagssidor i den tryckta boken.
Några exempel på frågor som kan förekomma är:

Har ’Moby Dick’ tryckts i ett format större än 14 x 20 cm?

På vilken sida börjar kapitel 4 av ’Moby Dick’, specialbeställning #123?

Hur många bilder finns i kapitel 4 av ’Moby Dick’?
6
OR- OCH OO_DBHS, 2I-1227, IS4

Vilka typsnitt har använts i specialbeställning #234?

Vilka kapitel i specialbeställning #456 innehåller fler än 20 sidor?

Vilken storlek har texten i tabellerna i specialbeställning #567?

I vilka böcker är bilderna centrerade? I vilka är de vänsterställda?

Vilka böcker använder kursiv text i rubrikerna?

Vilka sidor i specialbeställning #678 innehåller typsnittet Sabon?

Vilken är defaultfonten för kapitelrubriker resp. figurtexter i ’Moby Dick’?

Vilka (par av) böcker använder exakt samma typsnitt?

Finns det någon rubrik i Stora Läkarboken, specialbeställning #248, som har ett typsnitt större
än 20 punkter?
1. Gör en konceptuell modell åt förlaget som ger möjlighet att representera allt som
beskrivs ovan, t.ex. beställningsuppgifter, titeluppgifter och specialtjänster. Speciellt skall
alla frågor ovan kunna hanteras av schemat. Det centrala är alltså att kunna representera
den grafiska utformningen av en bok. Ange avbildningsregler för samtliga attribut. Gör
en konceptuell modell åt organisationen som ger möjlighet att representera allt som
beskrivs ovan.
2. Skapa ett relationsdatabasschema utifrån det konceptuella schemat i uppgift 1).
Specificera nycklar och främmande nycklar.
3. Skapa ett OO-databasschema utifrån det konceptuella schemat I uppgift 1). Använd den
syntax som definieras i föreläsningsbilderna. Använd OO-begrepp som objektidentitet,
arv, och komplexa typer där detta är tillämpbart.
4. Jämför databasschemana från uppgift 2) och 3). Vilket schema blir enklast? Varför?
ÖV N I N G 2 – R E V E R S E E N G I N E E R I N G
Betrakta nedanstående relationsdatabasschema och lös följande uppgifter:
a) Översätt relationsdatabasschemat till ett konceptuellt schema. Ange
avbildningsregler för samtliga attribut. Ett krav på lösningen är att om man
översätter det konceptuella schemat till ett relationsdatabasschema så skall man
erhålla schemat nedan.
b) Översätt det i a) erhållna schemat till ett objektorienterat databasschema.
Q(A, B, C, D)
R(A, B, C, M)
7
OR- OCH OO-DBHS, 2I-1227, IS4
S(A, B, E, F, G)
T(A, H)
U(J, K, A, B, C)
V(A, J, L)
W(A, B, J)
Q(A, B, C) << R(A, B, C)
R(A, B) << S(A, B)
S(A) << T(A)
S(G) << U(J)
T(A) << U(J)
U(A, B, C) << R(A, B, C)
V(A) << T(A)
V(J) << U(J)
V(L) << U(J)
W(A, B) << S(A, B)
W(J) << U(J)
Uttrycket S(G) << U(K) uttrycker ett främmande nyckel samband, d.v.s. attributet G i
relationsschemat S är en främmande nyckel med avseende på attributet K i
relationsschemat U.
ÖV N I N G 3 - S C H E M A S TOR L E K
Konstruera ett konceptuellt schema som uppfyller följande två villkor:
8

Om man översätter schemat till ett relationsdatabasschema så innehåller det minst
sju attribut.

Om man översätter schemat till ett konceptuellt schema så innehåller det högst fem
attribut.
OR- OCH OO_DBHS, 2I-1227, IS4
SEMINARIUM 2
FRÅGESPRÅK FÖR RELATIONSDATABAS ER
LÄSANVISNINGAR
Föreläsningsbilder för föreläsning 2
Läroböcker om relationsdatabaser från tidigare kurser, t.ex.Connally/Begg, (ev.
Elmasri&Navathe) avsnitten om SQL och Relationsalgebra. Speciellt SQL måste
vara aktuellt från tidigare kurser.
ÖV N I N G 4 – F R Å G E S P R Å K F Ö R R E L A T I O N S DA TA B S E R
BETRAKTA FÖLJANDE RELATIONSDATABASSCHEMA:
Person(Name, Street, City)
Customer(Name)
CreditCard(CardNo, Type, Owner)
Piece(PNo, Name)
Color(PNo, Color)
Order(OrderNo, Customer, PNo)
OrderItem(OrderNo, PNo, Quantity)
Customer.Name << Person.Name
CreditCard.Owner << Person.Name
Color.PNo << Piece.PNo
Order.Customer << Customer.Name
Order.PNo << Piece.PNo
OrderItem.OrderNo<< Order.OrderNo
OrderItem.PNo << Piece.PNo
Besvara var och en av nedanstående frågor med hjälp av:
a) Relationsalgebra
b) Tuppelkalkyl
c) SQL
Det är starkt rekommenderat att exekvera lösningarna under c) vid dator (en relationsdatabas enligt
ovan finns upplagd på kurskontona).
1. Vilka kunder har inte köpt någonting överhuvudtaget?
2. Vilka produkter har köpts av kunder med kreditkortsnummer XX eller kreditkortsnummer YY?
3. Vilka produkter har köpts av kunder med både kreditkortsnummer XX och kreditkortsnummer
YY?
9
OR- OCH OO-DBHS, 2I-1227, IS4
4.
5.
6.
7.
8.
10
Vilka kunder har köpt samtliga produkter som innehåller blått?
Vilka kunder har köpt minst två huvudprodukter?
Vilka kunder har köpt åtmonstone en produkt som Donald Duck också har köpt?
Vilka kunder har köpt åtminstone samma produkter som ‘Donald Duck’?
Vilka (par av) kunder har köpt exakt samma huvudprodukter?
OR- OCH OO_DBHS, 2I-1227, IS4
SEMINARIUM 3
FRÅGESPRÅK
LÄSANVISNINGAR
Utdraget ur “Principles of Multimedia Database Systems” i artikelsamlingen
Föreläsningsbilder för föreläsning 2, 3, 4
Lathund för Jasmine ODQL (längst bak i kursanvisningarna)
ÖV N I N G 5 – OD QL OC H S QL
Betrakta nedanstående frågor. Var och en av frågorna skall formuleras i:
a) Objektorienterat frågespråk enligt föreläsningarna
b) Jasmine ODQL (kan avvika från a))
c) SQL i enlighet med relationsschemat efter frågorna
Vidare skall lösningarna under b) exekveras vid dator.
Denna övning utgår från klassfamiljen CAStore i Jasmine. Det är därför lämpligt att före övningen
bekanta sig med denna genom att studera den tutorial som finns i Jasmine Studio.
Notera att klassen Order innehåller ett attribut product som anger vilken som är den beställda
huvudprodukten. Order innehåller också ett mängdvärt attribut orderitems som pekar ut beställda
biprodukter. product skall användas i frågorna 1-8, medan orderitems skall användas i 9-10.
1. Vilka accessoarer innehåller blått? (Använd attributet colors som är definierat i Piece.)
2. Vilka accessoarer innehåller enbart färgen brunt? (Använd attributet colors som är definierat i Piece.)
3. Vilka kunder använder ett kreditkort som de inte själva äger?
4. Vilka kunder som bor i Stockholm har köpt en produkt som innehåller brunt? (Använd attributet
product som är definierat i Order och colors som är definierat i Piece.)
5. Vilka kunder har köpt en produkt som inte innehåller blått?
6. Vilka kunder har köpt enbart sådana produkter som innehåller blått? (Använd attributet product
som är definierat i Order och colors som är definierat i Piece.)
7. Vilka är namnen på de kunder som har ett kreditkort som ägs av Donald Duck och som har
beställt en blå produkt? (Använd attributet product som är definierat i Order och colors som är definierat
i Piece.)
8. Vilka kunder använder kreditkort som ägs av ägaren till Dewey Ducks kreditkort?
11
OR- OCH OO-DBHS, 2I-1227, IS4
9. Vilka kunder har köpt produkter som innehåller rött? (Använd attributet orderitems som är
definierat i Order och colors som är definierat i Piece. Ledtråd: använd scan.)
10. Vilka kunder har köpt enbart sådana produkter som innehåller rött? (Använd attributet orderitems
som är definierat i Order och colors som är definierat i Piece. Ledtråd: använd scan.)
RELATIONSDATABASSTRUKTUR
Person(Name, Street, City)
Customer(Name)
CreditCard(CardNo, Type, Owner)
Piece(PNo)
Color(PNo, Color)
Order(OrderNo, Customer, PNo)
OrderItem(OrderNo, PNo, Quantity)
Customer.Name << Person.Name
CreditCard.Owner << Person.Name
Color.PNo << Piece.Pno, Color
Order.Customer << Customer.Name
Order.PNo<< Piece.PNo
OrderItem.OrderNo << Order.OrderNo
OrderItem.PNo << Piece.PNo
ÖV N I N G 6 – M U LT I M E D I A DA TA BA S S Y S T E M
Läs utdraget ur “Principles of Multimedia Database Systems”.
a) Definiera en strukturerad multimediadatabas enligt definition 9.3 för biograffilmer.
Databasen skall innehålla bild, ljud och video. Den skall vara så omfattande att den kan
användas för att besvara frågor av den typ som ges i uppgift b) nedan.
b) Med utgångspunkt i lösningen av a)-uppgiften och frågespråket i avsnitt 9.4, skriv uttryck för
följande:
- På vilka bilder finns Cary Grant och en person, som också finns med på en videosekvens i
en film regisserad av Ingmar Bergman?
- Vilka personer finns med på en videosekvens från San Francisco men inte på någon bild
från denna stad?
12
OR- OCH OO_DBHS, 2I-1227, IS4
SEMINARIUM 4
SEMISTRUKTURERADE DATA
LÄSANVISNINGAR
Kapitel 2 - 5 i läroboken
Föreläsningsbilder för föreläsning 4
ÖV N I N G 7 – E N DA TA G R A F
Betrakta datagrafen nedan och lös följande uppgifter:
a) Beskriv datagrafen i XML.
b) Översätt följande frågor till naturligt språk och skriv ut svaren på dem:
select user: U
from documents.sales_order.user U
select user: U
from documents._ D
D.user U
where D.date > 000701
c) Formulera frågor för nedanstående i frågespråket som beskrivs i avsnitt 4.2 i läroboken:
1.
2.
3.
4.
5.
6.
7.
Vilka material har beställts från leverantören Choco?
Vilka kunder har beställt produkter som kostar mer än 100£?
Vilka användare har skapat affärsdokument som avser materialet Jelly beans?
Vilka inköpsorder är baserade på inköpsbegäranden gjorda före 000701?
Vilka affärspartner (d.v.s. kunder eller leverantörer) har gjort någon transaktion före juni 00?
Vilka material har beställts i kvantiteter större än 500?
Vilka säljorder avser material med olika leveransdagar?
13
OR- OCH OO-DBHS, 2I-1227, IS4
John Doe
user
date
50
quantity
Truffles
name
000801
25
price
material
purchase
request
item
Joe Smith
user
based
on
000803
date
purchase
order
quantity
Truffles
name
material
Joe Smith
Sweety
400
quantity
Jelly beans
user
vendor
name
000805
documents
20
price
material
item
date
500
quantity
purchase
order
Truffles
name
item
25
price
material
Abe Abner
sales
order
Acme
1000
quantity
user
customer
000728
Mint balls
name
material
5
price
date
item
delivery
date
50
quantity
material
item
Truffles
name
25
price
delivery
date
14
000810
000810
OR- OCH OO_DBHS, 2I-1227, IS4
UPPGIFT 8 – FRÅN RELATION TILL S SD
Betrakta följande relation:
Company
Ericsson
Nokia
Nokia
Date
020101
020110
020111
Nasdaq
300
450
448
Stockholm
302
500
500
London
305
430
432
Frankfurt
300
435
433
En tupel i tabellen anger slutkurserna för en aktie på ett antal börser en viss dag.
Lös följande uppgifter:
a) Uttryck ovanstående relation som ett ssd-uttryck.
b) Formulera frågor i SQL mot relationen ovan:
1. Vad var slutkursen för Ericsson 020101 på Nasdaq?
2. Vilka börser hade en högre slutkurs på Ericsson 020101 än Stockholmsbörsen?
c) Formulera frågorna i b) mot ssd-uttrycket i a). Använd frågespråket från avsnitt 4.2. i läroboken.
UPPGIFT 9 – REKURSIVITET
Betrakta datagrafen nedan. Den uttrycker äganderelationer mellan företag, t.ex. att GM äger SAAB.
Lös följande upgfiter:
a) Konstruera en relation som innehåller samma information som datagarafen.
b) Formulera följande frågor mot datagrafen. Använd frågespråket från avsnitt 4.2 i läroboken.
1. Vilka företag ägs direkt av GM?
2. Vilka företag ägs direkt eller indirekt av GM? (Mutter AB ägs indirekt av GM eftersom Mutter
AB ägs av SAAB som ägs av GM.)
c) Formulera frågorna i b) mot relationen i a). Använd SQL som frågespråk.
15
OR- OCH OO-DBHS, 2I-1227, IS4
name
GM
Opel
owns
Chrysler
name
name
owns
company
name
SAAB
owns
owns
Ford
company
Volvo
name
owns
16
name
name
Mutter AB
OR- OCH OO_DBHS, 2I-1227, IS4
L AT H U N D F Ö R JA S M I N E O D Q L
I detta avsnitt beskrivs ett antal praktiska handgrepp som behövs för att köra Jasmine ODQL
A T T K OM M A I G Å N G
Man börjar genom att välja Command Prompt från Windows Start-meny. Därefter skriver man
(användarens input i fetstil):
C:\>codqlie
Då skapas kopplingen till databasen. Därefter skall man byta till den klassfamilj man vill arbeta med,
t.ex. CAStore som innehåller den exempeltillämpning som följer med Jasmine.
L235(systemCF) > defaultCF CAStore;
L235(CAStore) >
Observera att varje kommando i ODQL skall avslutas med semikolon.
Nu kan man börja skriva in ODQL-uttryck som variabeldeklarationer, frågor och uppdateringar. Det
är möjligt att skriva dessa direkt, men det är betydligt smidigare att skriva uttrycken i en textfil och
sedan exekvera den filen. Antag att man har en fil D:\Jasbas\fil1.txt med följande innehåll:
String str;
str = select Customer.shoesize from Customer where Customer.name == ”Donald Duck”;
str.print();
Den första raden deklarerar stängvariabeln str. Den andra raden tilldelar str Donald Ducks
skonummer. Den tredje raden skriver ut str på skärmen. Exekvering ger följande:
L235(CAStore) > execFile D:\Jasbas\fil1.txt;
42
Antag att filen D:\Jasbas\fil1.txt innehåller följande:
/* Vilka accessoarer innehåller inte blått? */
String set strset;
17
OR- OCH OO-DBHS, 2I-1227, IS4
strset = select Accessory.name
from Accessory
where not(Accessory.colors.hasElement("blue"));
strset.print();
Först ges en kommentar inom /*…*/. Därefter deklareras en variabel strset som är mängdvärd.
Därefter tilldelas strset namnen på de accessoarer som inte är blåa. Till slut skrivs värdet på strset ut.
Exekveringen blir så här:
L235(CAStore) > execFile D:\Jasbas\fil2.txt;
Bag{ Red Umbrella, Pigskin Bag, Loafer, Sandal }
MÄNGDHANTERING
ODQL liknar i mycket SQL. En viktig skillnad är att man i ODQL kan arbeta explicit med mängder.
De vanligaste mängderna är ”bags”, alltså egentligen inte mängder eftersom de kan innehålla
dubbletter. En bag ser ut så här
Bag{1, 2, 4, 1,8}
ODQL tillhandahåller ett antal mängdoperationer, de viktigaste är
union
intersect
differ
hasElement
Betrakta följande fil samt exekvering:
Integer set is1;
Integer set is2;
Integer set is3;
is1 = Bag{1,2,3,4};
is2 = Bag{1,3,5,7};
is3 = Bag{};
is3 = is1.union(is2);
is3.print();
18
OR- OCH OO_DBHS, 2I-1227, IS4
is3 = is1.intersect(is2);
is3.print();
L235(CAStore) > execFile D:\Jasbas\fil3.txt;
Bag{ 4, 2, 1, 3, 5, 7 }
Bag{ 1, 3 }
Man kan iterera över en mängd med hälp av scan-satsen. I följande exempel skrivs namnen på alla
kunder ut:
Customer sit;
Customer set custset;
custset = select Customer from Customer;
scan(custset, sit) {
sit.name.print();
};
/* sit är en variabel som itererar över elementen i custset */
L235(CAStore) > execFile D:\Jasbas\fil4.txt;
DE JAMES
LYDIA CHASE
ANGELA EASA
MARION AKERLUND
Donald Duck
Huey Duck
Dewey Duck
Louie Duck
Mickey Mouse
Minnie Mouse
I M P E R A T I VA K ON S T R U K T I ON E R
ODQL innehåller vanliga imperativa programspråkskonstruktioner som if-then-else och while. I
exemplet nedan skrivs en mängd om den innehåller elementet 2.
19
OR- OCH OO-DBHS, 2I-1227, IS4
is1 = Bag{1,2,3,4};
is2 = Bag{1,3,5,7};
if (is1.hasElement(2)) {is1.print();};
if (is2.hasElement(2)) {is2.print();};
L235(CAStore) > execFile D:\Jasbas\fil5.txt;
Bag{ 1, 2, 3, 4 }
AV S L U T N I N G
Man avslutar en ODQL session på följande sätt:
L235(CAStore) > end;
C:\>
O D Q L OC H JA S M I N E S T U D I O
Mycket av det som går att göra i ODQL kan också göras i Jasmine Studio, men Studio har åtskilliga
begränsningar. En fil med exempel på databasuppdateringar skrivna i ODQL finns att hämta under
Resurser på kursens WWW-site.
20