Databasteknik II
för D3 m fl
lördag 21 maj 2011
Gäller som tentamen för:
DT3001 Datateknik C, Databasteknik II, provkod 0100
Hjälpmedel: | Miniräknare. |
Poängkrav: |
Maximal poäng är 32.
För betyget 3 krävs 16 poäng. |
Resultat och lösningar: | Meddelas via e-post eller på kursens hemsida, http://basen.oru.se/kurser/db2/2010-2011-p34/, senast lördag 11 juni 2011. |
Återlämning av tentor: | Efter att resultatet meddelats kan tentorna hämtas i den centrala tentamensutlämningen i Studentcentrum. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070-73 47 013. |
Tabellen Personer
10 miljoner rader |
| ||||||||||||||||||||||||||||||
Tabellen Vägsträckor
10 miljoner rader |
| ||||||||||||||||||||||||||||||
Tabellen Böter
1 miljon rader |
|
Pid, Sid och Bid är primärnycklar. Person och Vägsträcka är referensattribut, och refererar till Pid respektive Sid.
a) (1p) Ange den systematiska översättningen av SQL-frågan till relationsalgebra, även kallad kanonisk form. (Det är alltså den o-optimerade formen.) Skriv upp den som ett relationsalgebrauttryck.select Personer.Personnummer from Personer, Vägsträckor, Böter where Personer.Pid = Böter.Person and Böter.Vägsträcka = Vägsträckor.Sid and Vägsträckor.Namn = 'Strutsvägen' and Böter.Uppmätt > 40;
b) (1p) Rita upp samma relationsalgebrauttryck som ett frågeträd.
c) (3p) Visa hur en heuristisk frågeoptimerare optimerar frågeträdet från deluppgiften ovan. Visa både vilka olika optimeringar som görs, och vad slutresultatet blir.
d) (1p) Hur fungerar (kort) en kostnadsbaserad frågeoptimerare?
e) (2p) En kostnadsbaserad frågeoptimerare kan ta hänsyn till en del saker som en heuristisk frågeoptimerare normalt inte bryr sig om. Vilka? Förklara, med exempel från databasen och frågan i exemplet!
a) Hur lång tid tar det i genomsnitt att köra följande fråga, om databasen saknar särskilda index:
select Datum from Böter where Bid = 786777
b) Hur lång tid tar det i genomsnitt att köra samma fråga, om databasen har ett primärindex i form av ett B+-träd på Bid?
c) Hur lång tid tar det i genomsnitt att köra samma fråga, om databasen har ett sekundärindex i form av ett B+-träd på Bid
d) Hur lång tid tar det i genomsnitt att köra följande fråga, om databasen saknar särskilda index:
e) Hur lång tid tar det i genomsnitt att köra samma fråga, om databasen har ett primärindex i form av ett B+-träd på Bid?select sum(Böter) from Böter
f) Hur lång tid tar det i genomsnitt att köra samma fråga, om databasen har ett sekundärindex i form av ett B+-träd på Bid
a) Mitt i uppdateringen går strömmen! Förklara, med ändringar i databasen, noteringar i loggfilen och allt, varför det skulle kunna vara ett problem, och varför det inte är det.update Böter set Böter = Böter + 1000;
b) Mitt i återställningen ("recovery") går strömmen en gång till! Förklara, med ändringar i databasen, noteringar i loggfilen och allt, varför det skulle kunna vara ett problem, och varför det inte är det.
a) (1p) ODBC
b) (1p) JDBC
c) (1p) ESQL
d) (1p) ADO.NET
b) Visa med exempel vilka problem med referensintegritet som man kan få, när man lägger till den tidsdimensionen.
c) Det kan bli fel i databasen. Om en person slår upp en hastighetsbegränsning genom att titta i tabellen Vägsträckor, kan hon bli lurad, och ska då få lägre böter. Därför måste vi spara allt som tidigare stått i den tabellen, genom att lägga till tidsdimensionen transaktionstid. Visa hur det kan göras.