Databasteknik för civilingenjörer
måndag 29 maj 2017
Gäller som tentamen för:
DT504G Databasteknik för civilingenjörer, provkod 0100
Hjälpmedel: | Ordbok för översättning. |
Poängkrav: | Maximal poäng är 40. För godkänt betyg krävs 25 poäng, varav minst fyra poäng på uppgift 1 och minst fem poäng på uppgift 2. För den som följt kursen våren 2017 ger varje i tid inlämnad inlämningsuppgift en extra poäng. Den som inte gått kursen våren 2017 får dessa (fem) extrapoäng ändå. |
Resultat: | Meddelas på kursens hemsida eller via e-post senast måndag 19 juni 2017. |
Återlämning av tentor: | Elektroniskt via Studentforum. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070 - 73 47 013. |
Airbus A380. Av: Roman Zelentsov (Rulexip). Licens: Creative Commons Attribution-Share Alike 3.0 Unported.
I databasen ska vi lagra följande:
ER- och EER-diagram kan ritas på flera olika sätt. Om du använder en annan notation än kursboken, måste du förklara den notation som du använder.
Du behöver inte skriva create table-kommandon i SQL, men du ska ange vilka relationer som finns och vilka attribut varje relation innehåller. Ange också alla kandidatnycklar, vilken av dessa som är primärnyckel, samt vilka referensattribut som finns och vad de refererar till.
Implementationen ska vara bra.
a) (1p) Vad heter de flygplatser som har en kod som innehåller bokstaven X?
b) (2p) Vilka flygbolag från USA har just nu flygplan som befinner sig på Arlanda?
c) (2p) Vilka länder har flygplanen från flygbolaget United besökt? (Man kan se det på vilka flygplatser de varit på.)
d) (2p) Vad heter de flygbolag som inte har några flygplan?
e) (3p) Vad heter det flygbolag som har flest flygplan?
a) Fråga a kan vara svår att få att gå snabbare genom att skapa index. Varför?
b) Vilka index bör man skapa för att fråga b och c ska gå snabbare?
c) De flesta databashanterarna skapar automatiskt index på primärnycklar. Vilka anledningar finns det till att man gjort så?
Flygplan | |||||
---|---|---|---|---|---|
ID | Beteckning | Tillverkare | Modell | Bolag | Bolagsland |
1 | N26906 | Boeing | 787 | United | USA |
2 | N26907 | Airbus | A380 | United | USA |
3 | SE-KSG | Saab | 340 | SAS | Sverige |
4 | SE-AXA | Saab | 340 | SAS | Sverige |
5 | SE-TYH | Saab | 340 | SAS | Sverige |
6 | SE-KOD | Saab | 39 | SAS | Sverige |
Kolumnen Beteckning är den unika registreringsbeteckningen från scenariot. ID är en extra nyckel vi skapat för att underlätta arbetet med databasen.
a) Vilka fullständiga funktionella beroenden finns i tabellen?
b) Vilken är den högsta normalform,
av 1NF, 2NF, 3NF och BCNF, som tabellen uppfyller?
c) Varför uppfyller tabellen inte den närmast högre normalformen?
d) Beskriv något problem som finns i den här tabellen,
och som man skulle slippa med en högre normalform.
a) ACID-transaktion
b) B-träd
c) cursor
d) DBA
e) ECA-regel
a) "Relationerna" i en relationsdatabas är kopplingarna mellan tabeller med främmande nycklar ("foreign keys").
b) En databas är normalt lagrad på en hårddisk eller SSD. Databashanterare kan fungera på lite olika sätt, men det vanliga är att databashanteraren läser in alla data till primärminnet när man startar den, och jobbar med dem där. När minnet är fullt, skrivs databasen tillbaka till disken. Därför är det viktigt att ha stabli strömförsörjning till datorn, så man inte blir av med alla sina data.
c) När databashanteraren kör en SQL-fråga, söker den i tabellerna i den ordning som de står i frågan. Till exempel kommer en fråga som select A, B, C from X, Y where X.D = Y.E att börja med tabell X. Olika ordningar kan ge mycket olika prestanda, och därför är det viktigt att skriva tavellerna i en lämplig ordning när man skriver SQL-frågor.