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