Datalagring og formater



Relaterede dokumenter
Databasesystemer. IT Universitetet i København 7. juni 2005

Databasesystemer. IT Universitetet i København 16. januar 2006

Databasesystemer. IT Universitetet i København 8. juni 2006

Skriftlig eksamen i. Databaser. Vinter 2002/2003. Vejledende løsninger

Skriftlig eksamen i. Databaser. Vinter 2002/2003

Databaser Obligatorisk opgave 2 Vejledende løsning

Databasesystemer. IT Universitetet i København 8. juni 2006

Begrænsninger i SQL. Databaser, efterår Troels Andreasen

Databaser Obligatorisk opgave 1

Views etc. Databaser

Anvisning i aflevering af bitemporale data

Databasesystemer, forår 2006 IT Universitetet i København. Forelæsning 3: E-R modellering. 16. februar Forelæser: Rasmus Pagh

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Take-home Eksamen. DM505 Design og programmering af databaser. Syddansk Universitet Institut for Matematik og Datalogi

Eksamen, DSDS, efterår 2007

Sidste forelæsning. Jacob Aae Mikkelsen. 28. april 2013 IMADA. Jacob Aae Mikkelsen (IMADA) Sidste forelæsning 28.

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 3: E-R modellering. 17. februar Forelæser: Rasmus Pagh

Software Projekt NoSQL vs RMDB

Import af rekursivt (parent-child) hierarki i Palo

Skriftlig eksamen i kurset. Informationssystemer

Afleveringsopgave. Efterår 2001

Dorthes Bog Centrum har ca forskellige bøger (bibliografiske enheder), som alle skal være søgbare fra prototypen.

Skriftlig eksamen i Databaser, Vinter 2001/2002. Pa opfordring har jeg udarbejdet mulige lsninger pa eksamensopgaverne, men

Skriftlig eksamen i. Datalogi. Databaser. Sommer 2001

Data lagring. 2. iteration (implement backend)

PRÆSENTATION AF ER-DIAGRAMMER OG NORMALISERING

Database. lv/

Dokumentation af optagelse.dk

Introduktion til programmering

Efterår 2002 Note 10. Temaopgave

Assignment #5 Toolbox Contract

Dokumentation af optagelse.dk

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002

CLmul-b14e Gruppe 2 2. Database projekt

Database for udviklere. Jan Lund Madsen PBS10107

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5

ELEKTRONISK INDBERETNING ABORT 23/ VERSION 1.1

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Informations- og datamodellering

Air Crash Booking System

Design ved normalisering

Hvad er en relationsdatabase? Odense, den 19. januar Version 1.0

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

Datamodeller. 1. Elementerne. Vi betragter E/R-diagrammet, som et diagram over entiteter og relationer Tegneregler: Entitet

Database kursus Forår 2013

DML, Foresprgsler Relationel algebra + noget mere! af skemaer (overlap m. DDL)

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (key, nøgle) for dataelementer.

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer.

:55 i/iv BEM 2.0 BEM 2.0. Fælles Medicinkort - Dokumentation -

:01 i/iv BEM 2.0 snitflade. BEM 2.0 snitflade. Fælles Medicinkort - Dokumentation -

Database-sproget SQL. SELECT A1,, Ar FROM R1,, Rk WHERE B med. SQL ~ SEQUEL ~ Structered English QUEry Language SQL-forespørgsel, generel form

Skriftlig eksamen i Datalogi

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.

Søren Løbner (lobner) ddb Databaser

Reeksamen, DSDS, forår 2008

DKAL Snitflader REST Register

Design af IT-medier. Skriftlig prøve 27. august Alle skriftlige hjælpemidler er tilladt.

Information Integration

Databaseadgang fra Java

Bilag 5. Snitflade mellem udtræksprogram og database. Udkast af 12. juni Udarbejdet for. SUP-Styregruppen

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach 2002

Skriftlig opgave. Designtanker i database-nære systemer

Introduktion til programmering

En Kort Introduktion til Oracle

Business Online. Business Online - User manual. User Manual Booking. Indholdsfortegnelse

Brugervejledning til databrowseren

ABM standard arbejdsgruppen nedsat af Statens Arkiver, Biblioteksstyrelsen og Kulturarvsstyrelsen

Microsoft Log Parser, Windows logfil analyse

Køreplan Matematik 1 - FORÅR 2005

Kursusbeskrivelse. Forarbejde. Oprettelse af en Access-database

Eksamen, DSDS, efterår 2008

Jørgen Koch. och. Access. Normalisering m.v.

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 4: Mere om E-R modellering. 24. februar Forelæser: Rasmus Pagh

Web services til med udgangspunkt i katalogen. Adam Dickmeiss Index Data

ecpr erstatnings CPR Design og arkitektur

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

DB undervisning 01-01

Funktionel afhængighed

Trin 1 INSERT INTO Debitor (DebitorNr, KundeKategori, KreditMax, SidstRykket, Sælger ) VALUES (20121, 10, 40000, NULL, "Bjarne Larsen");

e-journal Suploader-funktionalitet Suploader-funktionalitet Forfatter: Erik H. Olesen Fejl! Henvisningskilde ikke fundet. Erik H. Olesen Kunde: MedCom

Introduktion til SQL queries

Workshop Persistence

Introduktion til SQL

Tietgenskolen - Nørrehus. Data warehouse. Database for udviklere. Thor Harloff Lynggaard DM08125

OBJECT IDENTIFICERES OID PHMR

SQL for MySQL-begyndere

Udgivelsen er beskyttet af Creative Commons license, Navngivning 2.5

Eksempel på en database: studenter, kurser, eksamener

21/ VERSION 1.1

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Assistance og kompensation

Danmarks Tekniske Universitet

Københavns Lufthavn. Januar Kristian Durhuus. Driftsdirektør

DATABASE - MIN MUSIKSAMLING

DEN GODE MODEL: OPSAMLING PÅ MODELLERINGSOPGAVER OG INTRO TIL MODELLERINGSALTERNATIVER

Udgivelsen er beskyttet af Creative Commons license, Navngivning 2.5

Transkript:

Datalagring og formater IT Universitetet i København 4. januar 2011 Eksamenssættet består af 6 opgaver med 15 spørgsmål, fordelt på 11 sider (inklusiv denne side). Det anbefales at læse opgaverne i rækkefølge, men det er ikke vigtigt at løse dem i rækkefølge. Vægten af hver opgave er angivet. Du har 4 timer til at besvare alle spørgsmål. Hvis du ikke er i stand til at give et fuldt svar på et spørgsmål, så prøv at give et delvist svar. Siderne i besvarelsen skal være numererede, og forsynet med navn, CPR nummer og kursuskode (BDLF). Skriv kun på forsiden af arkene, og sortér dem inden numereringen, så opgaverne forekommer i nummerrækkefølge. KBL refererer i sættet til kursusbogen Database Systems - an application approach, 2nd edition, af Michael Kifer, Arthur Bernstein og Philip M. Lewis. Alle skriftlige hjælpemidler er tilladt. 1

1 Datamodellering (25%) Der skal udvikles en database, som indeholder information om flyafgange. Målet er at understøtte en række søgninger, som traditionelle bookingsystemer ikke understøtter. I stedet for en specifikation af hvilke data, systemet skal indeholde, gives en række eksempler på søgninger, som systemet skal understøtte. Du behøver ikke redegøre for, hvordan søgningerne konkret skal understøttes. Forbindelsessøgninger: Find alle direkte flyafgange fra A til B, der afgår mellem tidspunkterne t 1 og t 2. Find alle direkte flyafgange fra A til B, der ankommer mellem tidspunkterne t 1 og t 2. Find alle flyforbindelser fra A til B, der involverer én mellemlanding med højst 3 timers ventetid. Find den hurtigste forbindelse mellem A og B (total rejsetid). Specificerede forbindelsessøgninger: Find alle flyafgange fra A til et sted, hvor gennemsnitstemperaturen i den aktuelle måned er mindst 25 grader. Find alle flyafgange fra A til Afrika (eller et valgfrit kontinent) med ankomst mellem tidspunkterne t 1 og t 2. Find en direkte forbindelse fra A til B med et flyselskab fra USA (eller et valgfrit andet land). En flyafgang kan være knyttet til mere end ét flyselskab ( code share ). Billetsøgninger: Find de ledige billettyper for en flyafgang, samt deres pris. Find den billigste ledige billettype for en given forbindelsessøgning. Find den billigste ledige business class billet for en given forbindelsessøgning. a) Lav en E-R model for en database, der indeholder tilstrækkelig information til at besvare søgningerne beskrevet ovenfor. Hvis du gør dig nogen antagelser om data, som ikke fremgår af opgaven, skal de beskrives. Benyt E-R notation fra KBL. Der lægges vægt på, at modellen udtrykker så mange egenskaber ved data som muligt, f.eks. participation constraints, og at den svarer til et normaliseret databasedesign. Data, der ikke er nødvendig for overstående, fx detaljeret information om bookninger, skal ikke tages med. 2

b) Lav en relationel datamodel, der svarer til E-R modellen. For hver relation angives attributter, nøgler (med understregning), og fremmednøgler (med stiplet understregning). Airport(id,continent) Flight(id,from_id,depart,to_id,arrive) Codeshare(flight_id,airline_id) Airline(id,country) Climate(airport_id,month,avg_temperature) Ticket(flight_id,type,price,available) Alle attributter med navn, der slutter på _id er fremmednøgler. 2 XML (25%) XML dokumenter kan repræsenteres som træer. I dette problem betragter vi følgende træ, som repræsenterer et XML dokument uden tekstknuder. Som i KBL bruges en stiplet linie 3

til at indikere en attributknude. flight route no= 123 airline airports time country name from to date hour duration a) Giv en tekstuel repræsentation af XML dokumentet. Der lægges vægt på velformet XML. Processing elementer <? > behøver ikke angives. <flight no= 123 > <route> <airports><from/><to/></airports> <time><date/><hour/><duration/></time> </route> <airline><country/><name/></airline> </flight> XPath udtryk returnerer en mængde af XML elementer. I dokumentet ovenfor findes der bare ét element med hvert navn, så derfor kan sådanne mængder angives som mængder af navne, fx {date,time}. b) Angiv den mængde, der returneres af hvert af flg. XPath udtryk: 1. flight/route 2. flight/* 3. */route/* 4. //time[name] 5. time/../* 6. //country/*/.. 1. {route}. 2. {route, airline}. 3. {airports, time}. 4

4. {}. 5. {}. 6. {}. c) Angiv et XML Schema, der definerer et sprog, som indeholder XML dokumentet ovenfor. Det skal tillade tekstelementer under from, to, date, hour, duration, country og name elementer. Der kan være mere end ét airline element under flight elementet. Der behøver ikke at være et country element under airline. Desuden kan time elementet stå før airports. Ud over disse ting skal strukturen være som i eksemplet. Det er ikke nødvendigt at angive specifikke datatyper for tekstelementer, og at anvende namespaces. <?xml version="1.0" encoding="utf-8"?> <schema xmlns="http://www.w3.org/2001/xmlschema" xmlns:f="http://flightinfo.org" targetnamespace="http://flightinfo.org"> <element name="flight"> <complextype> <sequence> <element ref="f:route"/> <element ref="f:airline" maxoccurs="unbounded"/> </sequence> <attribute name="no" type="string"/> </complextype> </element> <element name="route"> <complextype> <all> <element ref="f:airports"/> <element ref="f:time"/> </all> </complextype> </element> <element name="airline"> <complextype> <sequence> <element name="country" type="string"/> <element name="name" minoccurs="0" type="string"/> 5

</sequence> </complextype> </element> <element name="airports"> <complextype> <sequence> <element name="from" type="string"/> <element name="to" type="string"/> </sequence> </complextype> </element> <element name="time"> <complextype> <sequence> <element name="date" type="string"/> <element name="hour" type="string"/> <element name="duration" type="string"/> </sequence> </complextype> </element> </schema> 6

I det sidste spørgsmål følgende betragter vi et XML dokument på formen: <flightinfo> <flight no= 123 >... </flight> <flight no= 456 >... </flight>... </flightinfo> I XQuery refereres til dokumentet som doc("flightinfo.xml"). Vi antager, at det er muligt at skifte fra et fly til et andet hvis og kun hvis: 1) Datoerne for afgangene er identiske, og 2) Sluttidspunktet (hour + duration) for den første flyvning er mellem 1 og 4 timer fra starttidspunktet (hour) for den næste flyvning. d) Skriv XQuery udtryk, der returnerer: 1. En liste af alle numre (no) på flyvninger fra CPH til FRA. 2. En liste med alle lufthavne, som SAS flyver fra eller til. (Duplikater er OK.) 3. En liste af alle par af lufthavne hvor man kan komme fra den ene til den anden med én mellemlanding. Brug formatet: <conn><from>cph</from><to>ewr</to></conn>. 1. doc("flightinfo.xml")//airports[from="cph" and to="fra"]/../../@no/string() 2. doc("flightinfo.xml")//airline[name= SAS ]/../route/airports/*/string() 3. for $a in doc("flightinfo.xml")//flight for $b in doc("flightinfo.xml")//flight let $aa := $a/route/airports let $ba := $b/route/airports let $at := $a/route/time let $bt := $b/route/time let $transfer := $bt/hour - ($at/hour + $at/duration) where ($aa/to=$ba/from) and ($at/date=$bt/date) and ($transfer>=1) and ($transfer<=4) return <conn>{($aa/from, $ba/to)}</conn> 3 SQL (20 %) Vi betragter følgende relationer, der indeholder information om inspektioner af fly: Inspection(iid,planeId,date) Employee(eid,name,title,employedSince) InspectedBy(employeeId,inspectionId) 7

Plane(pid,airline,modelId,buildDate) Model(mid,name,manufacturer,engineType) Attributter i primærnøgler er understregede. I det følgende antages, at der i databasen ikke er angivet fremmednøgler. a) Skriv en SQL forespørgsel, der returnerer pid på alle SAS fly bygget efter 2000-01-01 (builddate> 2000-01-01 ). SELECT pid FROM Plane WHERE airline="sas" and builddate> 2000-01-01 b) Skriv en SQL forespørgsel, der beregner antallet af medarbejdere som har inspiceret et SAS fly (airline= SAS ). SELECT COUNT(DISTINCT IB.employeeId) FROM Inspection I, InspectedBy IB, Plane P WHERE I.iid=IB.inspectionId and I.planeId=Plane.pid and Plane.airline= SAS c) Skriv en eller flere SQL kommandoer, der sletter al information om inspektioner før 2000-01-01. DELETE FROM Inspection WHERE date<"2000-01-01"; DELETE FROM InspectedBy WHERE inspectionid NOT IN Inspection d) Skriv en SQL forespørgsel, der returnerer navn på de medarbejdere som kun har arbejdet med fly fra én producent (manufacturer). SELECT name FROM Employee E WHERE 1= (SELECT COUNT(DISTINCT M.manufacturer) FROM Inspection I, InspectedBy IB, Plane P, Model M WHERE E.eid=IB.employeeId and I.iid=IB.inspectionId and I.planeId=P.pid and P.modelId=M.mid) 8

4 Normalisering (10%) Betragt følgende relationer fra opgave 3: Plane(pid,airline,modelId,buildDate) Model(mid,name,manufacturer,engineType) Henholdsvis pid og mid er nøgler for relationerne. Desuden er modelid en fremmednøgle, der refererer til Model(mid). Antag nu, at hver producent (manufacturer) kun bygger ét fly på hver dato (builddate). a) Argumentér for, at {modelid, builddate} er en nøgle for Plane. Til hver værdi af modelid hører der præcis én producent. Sammen med builddate identificerer det et unikt fly. Det overvejes at slå relationerne sammen til én (ved en join operation): Plane2(pid,airline,buildDate,modelId,modelName,manufacturer,engineType) b) Argumentér for, at denne relation ikke er på BCNF. Der lægges vægt på, at svaret bruger begrebet funktionel afhængighed ( functional dependency, FD). NB! I eksamenssættet var modelid ved en fejl udeladt fra Plane2 (der således ikke indeholder samme information som de to oprindelige tabeller). Det betyder at man behøver yderligere antagelser (fx at name er en nøgle for Model) for at kunne løse opgaven. I bedømmelsen vil der blive taget hensyn til dette. Vejledende svar for det reviderede spørgsmål. Ifølge spørgsmål a) har vi denne funktionelle afhængighed: modelid builddate pid, airline. Men {modelid, builddate} er ikke en nøgle for Plane2, da forskellige producenter kan producere fly på samme dag. 5 Relationsalgebra (10 %) Betragt igen relationerne fra opgave 3. a) Giv en beskrivelse i ord af, hvad følgende udtryk beregner: π title (σ date> 2010-12-31 (π iid,date (Inspection)) InspectedBy Employee) iid=inspectionid eid=employeeid Titlerne på de inspektører, der har lavet en inspektion efter 2010-12-31. 9

b) Skriv et udtryk i relationsalgebra, der svarer til følgende SQL forespørgsel: SELECT airline, manufacturer FROM Plane, Model WHERE mid = pid and name = 747 π airline,manufacturer (Plane σ name= 747 (Model)) mid=pid 10

6 Indeksering (10%) Betragt følgende SQL forespørgsler: 1. SELECT COUNT(*) FROM Employee WHERE title= apprentice and employedsince< 2008-01-01 2. SELECT * FROM Employee WHERE name>title 3. SELECT name FROM Employee WHERE eid=42 4. SELECT * FROM Employee, InspectedBy WHERE title= apprentice and eid=employeeid 5. SELECT DISTINCT name,title FROM Employee En kollega overvejer følgende (B-tree) indekser: (a) Employee(name) (b) Employee(title,employedSince) (c) Employee(employedSince,title) (d) Employee(name,eid,title) (e) Employee(eid,name) (f) Employee(eid,title) a) Angiv for hver forespørgsel de indekser (om nogen), der kunne formodes at blive brugt i en hurtig query plan. Understreg det indeks, du mener vil give den bedste ydelse. (Alle svar, der med rimelighed kunne være korrekte, accepteres.) Skriv fx 0. a,b hvis du mener, at indeks a og b kan bruges til at udføre forespørgsel 0 hurtigere, og at b er bedst. 1. b,c 2. Intet B-træ indeks hjælper. 3. e,f 4. e,f 5. Ingen af indekserne hjælper. 11