E00 (% af 2 timer) En database til registrering af produkter i en produktionsvirksomhed har følgende skema, hvor primærnøgler er understreget:

Relaterede dokumenter
Spørgsmål 2 Givet at R indeholder 3 tupler (d,f,a,b,c), (d,f,b,d,e), (e,g,a,b,c). Hvilke tupler må R da også indeholde?

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

Skriftlig eksamen i. Databaser. Vinter 2002/2003

Fra ER til RM. Databaser, efterår Troels Andreasen. Efterår 2002

Normalisering, del 2

Skriftlig eksamen i. Datalogi. Databaser. Sommer 2001

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

Design ved normalisering

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

Funktionel afhængighed

Efterår 2002 Note 10. Temaopgave

Databaser Obligatorisk opgave 1

Relationel Algebra og SQL

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

ER-modellen. Databaser, efterår Troels Andreasen. Efterår 2002

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

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

Afleveringsopgave. Efterår 2001

Skriftlig eksamen i kurset. Informationssystemer

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

Obligatorisk opgave 2. SQL, relationel algebra og relationel kalkyle

Datalagring og formater

Database design for begyndere

Views etc. Databaser

Introduktion til SQL queries

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

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

Anvisning i aflevering af bitemporale data

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

Eksamen, DSDS, efterår 2007

Information Integration

ER-modellen. Databaser, efterår Troels Andreasen. Efterår 2002

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

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

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

DB undervisning 01-01

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

(fig.1. Eksempel på en almindelig entity)

Henrik Bulskov Styltsvig

Databasesystemer fra forskellige synsvinkler

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

En opsamling af artefakter for Hotel Databasen som REST-service Bygger på Hotel opgaven i 8 trin

Import af rekursivt (parent-child) hierarki i Palo

Manglende konsistens i datamodellen og upræcise SQLsætninger er årsagen til, at mange IT-systemer fejler.

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

Modul 2 Database projekt Multimediedesign 3. semester Gruppe 3 IRF/TUJE

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

PRÆSENTATION AF ER-DIAGRAMMER OG NORMALISERING

1. Basal select med (stjerne)

Data lagring. 2. iteration (implement backend)

Database. lv/

Opgave 1 Basal select med (stjerne)

Air Crash Booking System

Danmarks Tekniske Universitet

Søren Løbner (lobner) ddb Databaser

En Kort Introduktion til Oracle

Eksempel på en database: studenter, kurser, eksamener

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

er et helt tal. n 2 AB CD AC BD (b) Vis, at tangenterne fra C til de omskrevne cirkler for trekanterne ACD og BCD står vinkelret på hinanden.

Danmarks Tekniske Universitet

Algebra. Denition. Signatur: et antal sorter eller typer: (simple eller strukturerede). et antal konstantsymboler med type, og

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

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

Samspillet mellem databaser og kort styres af GeoCAD programmet GeoDB.

Baggrundsnote om logiske operatorer

Databaser Obligatorisk opgave 2 Vejledende løsning

Jayne Alice Jensen [Link til portfolio]

Betjeningen i 4 områder (markeret med gult) giver anledning til nærmere analyse, da passagertallet er relativt beskedent.

Kap4: Velfærdseffekten af prisdiskriminering i flybranchen

Introduktion til programmering

Notat Betjening af Åbyskov med bybussystemet i Svendborg

Notat: Betjening af Karup lufthavn

Problemstilling ved DBK integration i BIM Software Hvad skal der til. Nicolai Karved, Betech Data A/S

Objektorientering og databaser

DATABASE - MIN MUSIKSAMLING

Kundetilfredshed efterår Udarbejdet af DMA/Research A/S for Kundeservice, Midttrafik efterår 2008

Conceptual, logic, physical

i x-aksens retning, så fås ). Forskriften for g fås altså ved i forskriften for f at udskifte alle forekomster af x med x x 0

DM507 Eksamen Obligatorisk Opgave Rejseplanlægning

Spørgsmål og Svar A3 udbud af almindelig rutekørsel

Køreplan for påskestævnet 2011

Introduktion til programmering

Anden undervisningsgang. Database

Eksamen, DSDS, efterår 2008

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

Notat Business case Rute Odense - Ferritslev - Ørbæk - Svendborg

3. rettelsesblad vedr. 32. udbud Ruter i Skanderborg og Odder Kommune 2011

CLmul-b14e Gruppe 2 2. Database projekt

PROTOKOLLAT. med tilkendegivelse af 27. februar faglig voldgiftssag (FV ): Fagligt Fælles Forbund. (advokat Evelyn Jørgensen) mod

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

Identifikation af planer der ikke findes i PlansystemDK vha. datasættet... 9

Eksamen Uden hjælpemidler - normeret til 60 minutter

CCS klassifikation og identifikation

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

Deskriptiv statistik. Version 2.1. Noterne er et supplement til Vejen til matematik AB1. Henrik S. Hansen, Sct. Knuds Gymnasium

Affine rum. a 1 u 1 + a 2 u 2 + a 3 u 3 = a 1 u 1 + (1 a 1 )( u 2 + a 3. + a 3. u 3 ) 1 a 1. Da a 2

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

Regulære udtryk og endelige automater. Ugens emner

DKAL Snitflader REST Register

Køreplan Djurs Sommerland. Gyldig fra 29. juni juni 2015 DIREKTE BUSRUTE DJURSBILLETTEN: BUS OG ENTRÉ MED RABAT DJUR SOMME LAND

Transkript:

OBS-OBS: Der tages forbehold for fejl og mangler i besvarelserne. Der er ikke tale om "officielle" løsninger, men blot notater som er sendt til censor i forbindelse med godkendelse af opgaverne. E00 (% af 2 timer) Opgave 1 (20%) Givet en relation R med skemaet R(A, B, C, D, E) og følgende afhængigheder: {A, B} ->> C, D -> E. Kan det sluttes at {A, B} -> C også må gælde? Kan det sluttes at D ->> E? Giv i forbindelse med svaret en kort forklaring. Spørgsmål 2 Givet at R indeholder 3 tupler (d,f,a,b,c), (d,f,b,d,e), (e,g,a,b,c). Hvilke tupler må R da også indeholde? Normaliser R til Boyce-Codd normalform. Svar Opgave 1 (20%) Kan det sluttes at {A, B} -> C også må gælde? Nej, med X ->> Y er kombinationer af (X,Y) med samme X og forskelligt Y nemlig en mulighed. Kan det sluttes at D ->> E? Ja. X -> Y betyder: kun en værdi til Y, givet en værdi for X. Altså må specielt, for to tupler t1 og t2 i relation R med t1[x]=t2[x], gælde at t1[y]= t2[y]. Derfor findes altid to tupler t3 og t4, så t1[x]=t2[x]= t3[x]=t4[x] og t3[y]=t1[y]= t4[y]=t2[y] og t3[r-xy]=t2[r-xy]= t4[r-xy]=t1[r- XY], nemlig tuplerne t3=t2 og t4=t1. Spørgsmål 2 Givet at R indeholder 3 tupler (d,f,a,b,c), (d,f,b,d,e), (e,g,a,b,c). Hvilke tupler må R da også indeholde? Da må R (pga. de 2 første og AB ->> C) også indeholde de 2 tupler (d,f,b,b,c), (d,f,a,d,e).... Opgave 2 (50%) En database til registrering af produkter i en produktionsvirksomhed har følgende skema, hvor primærnøgler er understreget: produkt(pnr, p)

stykliste(pnr, del-pnr) lager(lnr, kvm, bynr) opbevares(pnr, lnr, antal) by(bynr, by) Til skemaet knyttes følgende kommentarer. Relationen produkt omfatter et produkts stamoplysninger, der her er produktets nummer og, hhv. pnr, og p. stykliste er en del-af relation, der udtrykker at produktet del-pnr er en del af produktet pnr. Relationen lager indeholder stamoplysninger om et lager, hvilket er et nummer, et areal i kvadratmeter og et bynummer, hhv. lnr, kvm og bynr. I opbevares registreres hvilke produkter, der opbevares på et lager; produktet pnr opbevares på lageret lnr. Endelig indeholder relationen by et nummer og et for en by i hhv. bynr og by. Skitser et ER-diagram, der kan give anledning til dette skema. Spørgsmål 2 Formuler i SQL følgende forespørgsler: I hvilke byer (angiv ) oplagres produktet med p "tryklodder"? Angiv det samlede antal der produceres af produktet med p "tryklodder" fordelt på by, idet der ses bort fra byen med et Herning. Et produkts umiddelbare delprodukter er dem, der optræder sammen med produktet i stykliste. Formuler endvidere i SQL følgende: a) I hvilke byer kan man producere produktet med nr. 17? Forudsætningen for at producere et produkt i en by er at alle produktets umiddelbare delprodukter opbevares på et lager i byen. b) I hvilke byer opbevares hverken produktet med nummer 17 eller dettes umiddelbare delprodukter? Spørgsmål 4 Virksomheden har gennemført en politik for produktnummerering, således at et produkt A, der er en del af et andet produkt B, altid har et lavere nummer end det andet produkt. Skitser i SQL en del af databaseskemaet, der omfatter en begrænsning, som sikrer, at der ikke er "cykler" i styklisten (et produkt A må ikke være en del af sig selv og må ikke have delprodukter, der har A som delprodukt, osv.) Spørgsmål 5 Virksomheden har endvidere en politik, der går ud på at ethvert produkt skal findes på mindst et lager. Skitser hertil en trigger der, i forbindelse med oprettelsen af et ny produkt med pnr = X, automatisk sikrer at dette opbevares med antal 1 på lageret med lnr=0 - altså opretter en tupel (X, 0, 1) i opbevares.

Svar Opgave 2 (50%) lnr kvm bynr by lager ligger i by opbevares antal stykliste produkt pnr p Spørgsmål 2 I hvilke byer (angiv ) oplagres produktet med p "tryklodder"? select by from produkt p, opbevares o, lager l, by b where p.pnr=o.pnr and o.lnr=l.lnr and l.bynr=b.bynr and p="tryklodder" Angiv det samlede antal der produceres af produktet med p "tryklodder" fordelt på by, idet der ses bort fra byen med et Herning. select by, sum(antal) from produkt p, opbevares o, lager l, by b where p.pnr=o.pnr and o.lnr=l.lnr and l.bynr=b.bynr and by<>"herning" group by by a) I hvilke byer kan man producere produktet med nr. 17? select by from by b where not exists ( select del-pnr from stykliste where pnr=17 except select pnr from opbevares o, lager l where o.lnr=l.lnr and l.bynr=b.bynr ) b) I hvilke byer opbevares hverken produktet med nummer 17 eller dettes umiddelbare delprodukter? select by from by b where not exists ( select pnr from opbevares o, lager l where o.lnr=l.lnr and l.bynr=b.bynr intersect ( select pnr from produkt where pnr=17

union select del-pnr from stykliste where pnr=17 ) ) Spørgsmål 4 Virksomheden har gennemført en politik for produktnummerering, således at et produkt A, der er en del af et andet produkt B, altid har et lavere nummer end det andet produkt. Skitser en del af databaseskemaet, der omfatter en sikring af, at der ikke er "cykler" i styklisten (et produkt A må ikke være en del af sig selv og må ikke have delprodukter, der har A som delprodukt, osv.) Kan klares hvis stykliste defineres ved: create table stykliste ( pnr int references produkt, del-pnr int references produkt, check (del-pnr < pnr), primary key (pnr, del-pnr) ); Spørgsmål 5 Virksomheden har endvidere en politik, der går ud på at ethvert produkt skal findes på mindst et lager. Skitser hertil en trigger der, i forbindelse med oprettelsen af et ny produkt, automatisk sikrer at dette opbevares med antal 1 på lageret med lnr=0 - altså opretter en tupel (x, 0, 1), hvor x er pnr for det nye produkt, i opbevares. Kan i princippet håndteres med følgende: create trigger trig after insert on produkt referencing new as nnn insert into opbevares (nnn.pnr, 0, 1) Opgave 3 (30%) Til administration af den del af det offentlige trafiknet, der vedrører busdrift, skal der konstrueres et system med en database, der registrerer følgende. Om alle busdrift-selskaber registreres et entydigt nummer snr samt. For de involverede busser registreres bussens registreringsnummer regnr og antallet af sæder antal-sæder. De ruter der køres på registreres med et entydigt rutenr og længde for rutenangive i kilometer længde. Involverede chauffører registreres med et entydigt nummer cnr samt med. Endelig registreres samtlige ture der køres på en dag med et entydigt nummer tnr samt med tidspunkt for påbegyndelse af turen tid (der er altså ikke tale om en komplet køreplan kun tures starttidspunkt er registreret og der findes kun en slags dag altså ingen specielle lørdage eller søndage, f.eks.) Selskab er forbundet med bus, rute og chauffør i sammenhænge hhv. ejer, kører og ansat. Disse registrerer for et selskab hvilke busser det ejer, hvilke ruter det kører og hvilke chauffører det har ansat. Tur er forbundet med bus, rute og chauffør i sammenhænge hhv. i, på og med. Disse

registrerer om en tur at den gemmenføres "i" den givne bus, "på" den givne rute og "med" den givne chauffør. Et design for denne database er illustreret i nedenstående ER-diagram noterede skema. snr Selskab 1 1 1 Ejer Kører Ansat regnr N N rutenr N cnr antalsæder Bus Rute Chauffør 1 1 længde 1 i på med N N N Tur tnr tid Oversæt skemaet angivet herover til et relationelt databaseskema. Noter evt. blot skemaet ved prædikatnotation (såsom "selskab(snr, )"). Husk at angive primærnøgler. Spørgsmål 2 Formuler i relationel algebra følgende forespørgsel til en database med skemaet fra spørgsmål 1. a) På hvilke ruter (angiv rutenr) kører en chauffør med "Knud Hansen"? b) Hvilke selskaber har ikke en chauffør med "Knud Hansen", der kører på en rute med rutenr 17? Formuler endvidere i SQL følgende. a) Hvormange siddepladser er der sammenlagt i busserne på de ture, der køres af chaufføren med "Knud Hansen"?

b) Formuler en forespørgsel, der resulterer i en liste over chauffører med og antal kilometer, der køres dagligt, idet der på listen kun medtages chauffører der kører mere end 200 km. dagligt. Svar Opgave 3 (30%) selskab(snr, ) bus(regnr, antal-sæde, snr) rute(rutenr, længde, snr) chauffør(cnr,, snr) tur(tnr, tid, regnr, rutenr, cnr) Spørgsmål 2... a) Hvormange siddepladser er der sammenlagt i busserne på de ture, der køres af chaufføren med "Knud Hansen"? select sum(antal-sæder) from chauffør, tur, bus where chauffør.cnr=tur.cnr and tur.regnr=bus.regnr and chauffør.="knud Hansen" b) Formuler en forespørgsel, der resulterer i en liste over chauffører med og antal kilometer, der køres dagligt, idet der på listen kun medtages chauffører der kører mere end 200 km. dagligt. select chauffør., sum(længde) from chauffør, tur, rute where chauffør.cnr=tur.cnr and tur.rutenr=rute.nutenr group by cnr having sum(længde) 200

F00 (% af 2 timer) Opgave 1 (20%) Antag at vi har en relation R med fire attributter A, B, C og D. Under punkterne 1-3 nedenfor er angivet tre alternative sæt af funktionelle afhængigheder, der vedrører R. Angiv for hver af disse, (i) nøgle(r) for R og (ii) hvilke af de angivne funktionelle afhængigheder, der bryder BCNF, samt (iii) en BCNF normalisering af R fremkommet ved at dekomponere R svarende til de angivne afhængigheder. OBS: Der er tale om tre alternative sæt af afhængigheder, der således skal behandles isoleret. 1. C D,C A,B C 2. B C,D A 3. A B,BC D,A C Svar 1.(i) B (ii) C D og C A bryder BCNF (iii) AC,BC og CD. 2.(i) BD (ii) B C og D A (iii) AD,BC,BD 3.(i) A (ii) BC D (iii) BCD,ABC. Opgave 2(10%) Antag at vi, for en relation S med skema S(A,B,C), har en forekomst med følgende fire tupler: (1,2,3),(4,2,3),(5,3,3),(5,3,4). Hvilke af afhængighederne 1-6 herunder kan man slutte ikke kan gælde for S (m.a.o. hvilke afhængigheder brydes af den givne forekomst). 1. A -> B 2. A ->> B 3. BC -> A 4. BC ->> A 5. B -> C 6. B ->> C Svar 2 3 og 5 Opgave 3 (40%) En database til håndtering af et flyselskabs flyvninger er designet med følgende skema: Lufthavn(Lnr, By) Flytype(Tnr, Navn, Antal-sæder, Hastighed)

Kan_lande(Lnr, Tnr) Fly(Flynr, Tnr) Rute(Rnr, Afstand, Fra-Lnr, Til-Lnr) Flyvning(Flyvningnr, Dag, Tid, Flynr, Rnr) I skemaet er nøgler understreget, og der er indført særlige attributter til entydig identifikation (Lnr for lufthavnsnummer, Tnr for Flytypenummer, m.fl). Lufthavn registrerer lufthavne med på byen, hvor de hører hjemme. I Flytype kan registreres flytyper med typebetegnelse (Navn), antal sæder, samt den hastighed de skal flyve med (det antages her kun at benyttes én hastighed). For flytyper er der tillige med Kan_lande registreret, hvilke lufthavne de kan lande i. Konkrete fly er registreret i Fly med angivelse af flytype (Tnr). En rute, der registreres i Rute, er blot en kombination af en afgangslufthavn (Fra-Lnr) og en ankomstlufthavn (Til-Lnr) med angivelse af afstand i kilometer imellem de to lufthavne. En flyvning, der registreres i Flyvning, foregår på en bestemt ugedag (Dag), til et fastlagt tidspunkt, med et bestemt fly og på en bestemt rute. Skitser et ER-diagram der kan give anledning til det angivne relationelle databaseskema. Svar 1 By Rnr Fra Lnr. Lufthavn Rute Afstand Til Tnr Kan_lande Navn Antal_sæder Flytype På Hastighed Af Flynr Fly Med Flyvning Dag Tid Flyvningnr

Spørgsmål 2 Formuler følgende forespørgsler, til en database med det givne database-skema, i SQL. Hvilke ruter (rnr), med en afstand (Afstand) på mindre end 500 km, går til lufthavnen Lnr = "L21". Hvilke ruter (rnr) har bestemmelsessted (by for lufthavn der flyves til) "København", der udgår fra lufthavne i en afstand af mindre end 500 km. fra "København". Angiv dag (Dag), afgangstidspunkt (Tid) og flyvetid for samtlige flyvninger på ruten med rutenummer Rnr="R35". Flyvetiden beregnes som Afstand/Hastighed. Svar 2 a) select Rnr from Rute where Til_Lnr="L21" and Afstand<500 b) select Rnr from Rute, Lufthavn where Til_Lnr=Lufthavn.Lnr and Lufthavn.By='København' and Afstand<500 c) select Dag, Tid, Afstand/Hastighed Flyvetid from Flyvning, Rute, Fly, Flytype where Rute.Rnr='R335' and Rute.Rnr=Flyvning.Rnr and Fly.Flynr=Flyvning.Flynr and FlyType.Tnr=Fly.Tnr Forklar hvad svaret udgør på forespørgslerne (udtrykt i hhv. SQL og relationel algebra) : a) select fra.by,til.by from rute, Lufthavn fra, Lufthavn til where rute.fra-lnr=fra.lnr and rute.til-lnr=til.lnr union select fra.by,til.by from rute r1, rute r2, Lufthavn fra, Lufthavn til where r1.fra-lnr=fra.lnr and r1.til-lnr=r2.fra-lnr and r2.til-lnr=til.lnr union select fra.by,til.by from rute r1, rute r2, rute r3, Lufthavn fra, Lufthavn til where r1.fra-lnr=fra.lnr and r1.til-lnr=r2.fra-lnr and r2.til-lnr=r3.fra-lnr and r3.til-lnr=til.lnr b) π (Flytype Fly Flyvning σ By= Stokholm (Rute Fra-Lnr=LnrLufthavn)) c) π B (ρ R(A,B,C,D) (Flytype) π A,B,C,D ((ρ R(A,B,C,D) (Flytype)) D<H(ρ S(E,F,G,H) (Flytype))))

Svar 3 a. par af byer, der er forbundne med ruter, direkte, via en eller via to andre byer. b. Typebetegnelserne for flytyper på fly, der flyver på ruter, der afgår fra Stokholm c. Typebetegnelserne for flytyper, der har den maksimale hastighed Opgave 4 (30%) Nedenstående ER-diagram repræsenterer et design af en database til registrering på et uddannelsessted, af: hvad de forskellige fag omfatter hvilke studerende, der er aktive på stedet samt for de studerende, hvilke aktiviteter de er i gang med og har gennemført. Fnr Navn Del_af Fag Læser Igang_med Anr Aktivitet Student Gennemført isa isa isa isa Pnr Navn Kursus Projekt Karakter Navn Navn. Lav en oversættelse det skitserede skema til et relationelt database skema. Nøgler skal medtages. Svar 1 fag(fnr,) aktivitet(anr, del-af-fnr) kursus(anr, ) projekt(anr, ) student(pnr,) igang_med(anr,pnr) gennemført(anr,pnr,karakter)

Spørgsmål 2 Forklar hvad der naturligt ud fra beskrivelse og diagram ovenfor må være begrænsninger på databasen, svarende til referenceintegritet. Formuler tillige disse begrænsninger ved brug af relationel algebra, idet der refereres til skemaet fra spørgsmål 1. Svar 2 aktivitet.del-af-fnr skal referere til eksisterende fag.fnr svarende til π del-af-fnr(aktivitet) π fnr (fag) = Ø do. for øvrige

E99 (% af 4 timer) Opgave 3 (25%) Til administration af busdrift er konstrueret en database med følgende relationelle skema (nøgler er understreget): selskab(snr, ) bus(regnr, antal-sæde, snr) rute(rutenr, længde, snr) chauffør(cnr,, snr) tur(tid, regnr, rutenr, cnr) Om alle busdriftselskaber er i selskab registreret et nummer samt et i hhv snr og. I bus er for hver bus registreret et registreringsnummer, et antal sæder og et selskabsnummer for selskabet, som bussen tilhører (i hhv. regnr, antal-sæde og snr). En rute er registreret ved et nummer (rutenr), en længde i kilometer (længde) og et selskabsnummer (snr) for selskabet, som har ansvaret for ruten, og en chauffør er registreret ved et nummer (cnr), et () samt et nummer for selskabet (snr), der har ansat chaufføren. Endelig registreres med tur, for hver tur en bus (regnr) kører på, en rute (rutenr) med en chauffør (cnr) og den tid der tager at køre turen (tid). Skitser er ER-diagram, der kan give anledning til ovenstående relationelle databaseskema snr Selskab Ejer Kører Ansat regnr rutenr Bus Rute Chauffør cnr antalsæder på længde tid Spørgsmål 2. Skitser ændringer i både ER-diagram og relationelt skema, der tager højde for at der indføres et entydigt nummer tnr på tur.

snr Selskab Ejer Kører Ansat regnr rutenr cnr Bus Rute Chauffør antalsæder i på længde med Tur tnr Det relationelle skema: selskab(snr, ) bus(regnr, antal-sæde, snr) rute(rutenr, længde, snr) chauffør(cnr,, snr) tur(tnr, tid, regnr, rutenr, cnr) I det følgende kan der ses bort fra disse ændringer. Formuler i relationel algebra følgende forespørgsler til en database med skemaet fra spørgsmål 1. a) På hvilke ruter (angiv rutenr) kører chaufføren med "Knud Hansen"? π rutenr σ ="Knud Hansen" (tur*chauffør) b) Hvilke selskaber (angiv ) har har enten busser med flere end 60 sæder eller ruter, der er længere end 200 km. π σ antal-sæde>60 (bus*selskab) U π σ længde>200 (rute*selskab) c) Hvilke selskaber (angiv ) har ingen chauffør, der hedder "Knud Hansen", men har enten busser med flere end 60 sæder eller ruter, der er længere end 200 km. (π σ antal-sæde>60 (bus*selskab) U π σ længde>200 (rute*selskab)) - π selskab. σ chauffør.="knud_hansen"(chauffør*selskab) tid Spørgsmål 4 Angiv med SQL for selskab og det totale antal sæder i samtlige selskabets busser opdelt på selskaber, idet der kun medtages selskaber med et gennemsnitligt antal sæder større end 10. select, sum(antal-sæde) antal from selskab, bus where selskab.snr=bus.snr

group by having avg(antal-sæde)>10 Spørgsmål 5 Med en naturlig join i udtrykket selskab*bus kan de to indgående relationer samles til een. (* er her naturlig join operatoren i relationel algebra) Angiv skemaet for resultatrelationen (der f.eks. kan kaldes sb) med nøgle og forklar endvidere hvorfor denne ikke er på Boyce-Codd normalform. Skema sb(snr,, regnr, antal-sæde) Fordi (f.eks.) snr -> og snr er ikke supernøgle. Opgave 4 (10%) Betragt mængden Γ af fem propositionelle formler opskrevet på klausulform: Γ = {Q P, R P, S P, P, Q S R T, Q} Vis ved resolution at Γ er inkonsistent. Γ = {Q P, R P, S P, P, Q S R T, Q, Q} pga. P og Q P Γ = {Q P, R P, S P, P, Q S R T, Q, Q, falsk} pga. Q og Q dermed inkonsistent Spørgsmål 2 Benyt modbevis ved resolution til at vise at med Γ ' = {Q P, R P, S P, P, Q S R T} har vi at Γ' T, altså at formlen T er beviselig udfra formlerne Γ'. Antag det modsatte - altså T Γ '' = {Q P, R P, S P, P, Q S R T, T} Γ '' = {Q P, R P, S P, P, Q S R T, T, Q} pga. Q P og P Γ '' = {Q P, R P, S P, P, Q S R T, T, Q, R} pga. R P og P Γ '' = {Q P, R P, S P, P, Q S R T, T, Q, R, S} pga. S P og P Γ '' = {Q P, R P, S P, P, Q S R T, T, Q, R, S, S R T } pga., Q S R T og Q Γ '' = {Q P, R P, S P, P, Q S R T, T, Q, R, S, S R T, R T } pga., S R T og S Γ '' = {Q P, R P, S P, P, Q S R T, T, Q, R, S, S R T, R T, T } pga., R T og R Γ '' = {Q P, R P, S P, P, Q S R T, T, Q, R, S, S R T, R T, T, falsk } pga., T og T altså en modstrid.

F99 (% af 4 timer) Opgave 3 (25%) En database til at støtte en bygherre er skitseret i følgende ER-diagram: hnr fag Håndværker tilbud udfører Opgave forudsætter opgnr opgave Med et skema som det viste skal kunne håndteres eet byggeprojekt, der involverer håndværkere og opgaver. Tilbud gives af håndværkere på opgaver, og til en opgave udvælges, på baggrund af de givne tilbud, en håndværker der skal udføre den. En opgave kan forudsætte at andre opgaver er udført (f.eks. fundamentet skal støbes før murerne kan mures). Oversæt ovenstående ER-skema til et relationelt databaseskema. Angiv heri nøgler og sørg for at det relationelle skema kan udtrykke det samme som ER-skemaet. Svar 1 Håndværker(hnr,, fag) Opgave(opgnr, beskrivelse, udføres-af-hnr) tilbud(opgnr, hnr) forudsætter(opgnr, forudsat-opgnr) Spørgsmål 2 Formuler til en database, med skemaet fra spørgsmål 1, følgende forespørgsler i SQL: A: Hvilke opgaver findes der flere tilbud på? B: Angiv de fag, hvor der findes håndværkere der kan starte byggeriet (dvs. håndværkere der skal udføre opgaver, der ikke forudsætter andre opgaver). Svar 1 A: select opgnr, count(hnr) from tilbud group by opgnr having count(hnr) > 1 B: select fag from håndværker, opgave where håndværker.hnr=opgave.udføres-af-hnr and opgnr not in (select opgnr from forudsætter) Modificer ER-skemaet således at højest to tilbud kan afgives på den samme opgave.

Skitser tillige en oversættelse til et relationelt skema af denne ændring. Svar 3 h hnr fag Håndværker tilbud1 tilbud2 udfører Opgave forudsætter opgnr opgave Håndværker(hnr,, fag) Opgave(opgnr, opgave, udføres-af-hnr, tilbudt-hnr1, tilbudt-hnr2) forudsætter(opgnr, forudsat-opgnr) Spørgsmål 4 Formuler i SQL en forespørgsel, der som svar angiver forudsatte opgaver med to attributter (opgave, forudsat-opgave) Forespørgslen skal udtrække forudsatte opgaver i to niveauer (hvis tag forudsætter mur og mur forudsætter fundament så skal ikke kun (tag,mur) og (mur, fundament) være i svaret, men også (tag, fundament)). Forklar hvordan en sådan forespørgsel kan formuleres til flere niveauer af forudsatte opgaver. Svar 4 Select o1.opgave, o2.opgave forudsat-opgave from opgave o1, opgave o2, forudsætter f where o1.opgnr=f.opgnr and o2.opgnr=f.forudsat-opgnr union Select o1.opgave, o2.opgave forudsat-opgave from opgave o1, opgave o2, forudsætter f 1, forudsætter f2 where o1.opgnr=f1.opgnr and f1.forudsat-opgnr=f2.opgnr and o2.opgnr=f2.forudsat-opgnr Fortsættes til n te niveau efter samme princip: n niveauer kræver n delforespørgsler, i te niveau kræver i eksemplarer af relationen forudsætter. Spørgsmål 5 Antag at vi som (delvist overlappende) supplement til ovenstående har en registrering af håndværkere med deres fag og de opgaver de kan udføre i følgende skema: Kan-udføre(hnr, fag, opgave) og at der gælder følgende multiværdi-afhængighed: hnr ->> fag. Normaliser Kan-udføre til 4 de normalform.

Svar 5 (hnr,fag) og (hnr, opgave) Opgave 4 (10%) Betragt mængden Γ af tre propositionelle formler opskrevet på klausulform (idet er negation og V er logisk eller): Γ = { P V Q V R V S, P, R} Tilføj een formel til Γ således at Q bliver beviselig og bevis Q ved modbevis ved resolution. Svar S tilføjes: Γ = { P V Q V R V S, P, R, S } modbeviset (idet Q tilføjes): Γ = { P V Q V R V S, P, R, S, Q, Q V R V S } Γ = { P V Q V R V S, P, R, S, Q, Q V R V S, Q V S } Γ = { P V Q V R V S, P, R, S, Q, Q V R V S, Q V S, Q } Γ = { P V Q V R V S, P, R, S, Q, Q V R V S, Q V S, Q, falsk }

E98 (% af 4 timer) Opgave 4 (15%) En database til et busselskab, der kan understøtte administrationen af køre- og arbejdsplaner er skitseret i følgende ER-diagram: type typeid sæder Bustype af start-tid pnr Bus i Tur med Chauffør busid på stedid Busrute rutested Stoppested ruteid køre-tid Til skemaet skal bemærkes følgende: en tur er noget, der foregår på en busrute i en bus med en chauffør og som starter til et bestemt tidspunkt (start-tid) og køreplaner er registreret i databasen sådan, at der til hvert sted på ruten er tilknyttet en køre-tid, dvs. den tid det tager på en tur at nå fra første stoppested til det aktuelle (første sted har derfor køretid 0). Oversæt ovenstående ER-skema til et relationelt databaseskema. Angiv heri nøgler (men se bort fra begrænsninger i øvrigt) og sørg for at det relationelle skema kan udtrykke det samme som ERskemaet. Svar 1 bustype(typeid,type,sæder) bus(busid, typeid) tur(start-tid, ruteid, busid, pnr) chauffør(pnr, ) busrute(ruteid) rutested(ruteid, stedid, køre-tid)

Spørgsmål 2 Modificer ER-skemaet således at rutested bliver en entitetstype i stedet for en sammenhæng ( relationship ), mens en oversættelse som i spørgsmål 1 giver samme resultat (også hvad angår primærnøgler). Svar 2 stedid Busrute for rutested har Stoppested ruteid rel-tid Modificer ER-skemaet således at Tur bliver en sammenhæng i stedet for en entitetstype, mens en oversættelse igen giver samme resultat som i spørgsmål 1 (også hvad angår primærnøgler). Svar 3 start-tid pnr Bus tur Chauffør busid Busrute ruteid Opgave 5 (15%) I nedenstående ER-diagram skitseres en database, der kan omfatte oplysninger om personer med nr. og samt personers venne- og terapeut-relationer.

pnr Person ven terapeut Hvordan vil et relationelt databaseskema, der svarer hertil, med to relationsskemaer person og ven, komme til at se ud? Hvilke integritets-begrænsninger bør medtages fordi de er udtrykt i ER-skemaet? Svar 1 Skema: Person(pnr,,tpnr) Ven(pnr,vpnr) Begrænsninger: Person(vpnr) fremmednøgle til Person(pnr) Ven(pnr) fremmednøgle til Person(pnr) Ven(vpnr) fremmednøgle til Person(pnr) Spørgsmål 2 Formuler til databasen forespørgslerne: Hvem er ven med deres terapeut? Hvilke terapeuter har venner? Det kan antages at, hvis der står i databasen, at A har en ven B, så står der også i databasen, at B har en ven A. Svar 2 Select pnr From Person Where tpnr in (select vpnr from ven where ven.pnr=person.pnr) Select pnr From ven Where where pnr in (select tpnr from person) Hvilke terapeuter har flere venner, der er terapeuter? Dan som svar en liste over terapeuter, der har mindst to venner, der er terapeuter. Svar 3 Select pnr From ven Where pnr in (select tpnr from person) And vpnr in (select tpnr from person) Group by pnr

Having count(vpnr) > 1

F98 (% af 4 timer) Opgave 4 (15%) En database til et busselskab, der kan understøtte administrationen af køre- og arbejdsplaner er skitseret i følgende ER-diagram: type typeid sæder Bustype af start-tid pnr Bus i Tur med Chauffør busid på stedid Busrute rutested Stoppested ruteid køre-tid Til skemaet skal bemærkes følgende: en tur er noget, der foregår på en busrute i en bus med en chauffør og som starter til et bestemt tidspunkt (start-tid) og køreplaner er registreret i databasen sådan, at der til hvert sted på ruten er tilknyttet en køre-tid, dvs. den tid det tager på en tur at nå fra første stoppested til det aktuelle (første sted har derfor køretid 0). Oversæt ovenstående ER-skema til et relationelt databaseskema. Angiv heri nøgler (men se bort fra begrænsninger i øvrigt) og sørg for at det relationelle skema kan udtrykke det samme som ERskemaet. Svar 1 bustype(typeid,type,sæder) bus(busid, typeid) tur(start-tid, ruteid, busid, pnr) chauffør(pnr, ) busrute(ruteid) rutested(ruteid, stedid, køre-tid)

Spørgsmål 2 Modificer ER-skemaet således at rutested bliver en entitetstype i stedet for en sammenhæng ( relationship ), mens en oversættelse som i spørgsmål 1 giver samme resultat (også hvad angår primærnøgler). Svar 2 stedid Busrute for rutested har Stoppested ruteid rel-tid Modificer ER-skemaet således at Tur bliver en sammenhæng i stedet for en entitetstype, mens en oversættelse igen giver samme resultat som i spørgsmål 1 (også hvad angår primærnøgler). Svar 3 start-tid pnr Bus tur Chauffør busid Busrute ruteid Opgave 5 (15%) I nedenstående ER-diagram skitseres en database, der kan omfatte oplysninger om personer med nr. og samt personers venne- og terapeut-relationer.

pnr Person ven terapeut Hvordan vil et relationelt databaseskema, der svarer hertil, med to relationsskemaer person og ven, komme til at se ud? Hvilke integritets-begrænsninger bør medtages fordi de er udtrykt i ER-skemaet? Svar 1 Skema: Person(pnr,,tpnr) Ven(pnr,vpnr) Begrænsninger: Person(vpnr) fremmednøgle til Person(pnr) Ven(pnr) fremmednøgle til Person(pnr) Ven(vpnr) fremmednøgle til Person(pnr) Spørgsmål 2 Formuler til databasen forespørgslerne: Hvem er ven med deres terapeut? Hvilke terapeuter har venner? Det kan antages at, hvis der står i databasen, at A har en ven B, så står der også i databasen, at B har en ven A. Svar 2 Select pnr From Person Where tpnr in (select vpnr from ven where ven.pnr=person.pnr) Select pnr From ven Where where pnr in (select tpnr from person) Hvilke terapeuter har flere venner, der er terapeuter? Dan som svar en liste over terapeuter, der har mindst to venner, der er terapeuter. Svar 3 Select pnr From ven Where pnr in (select tpnr from person) And vpnr in (select tpnr from person) Group by pnr

Having count(vpnr) > 1