Databasteknik
för D1, SDU1 m fl
måndag 13 januari 2014
Gäller som tentamen för:
DT1026 Datateknik A, Databasteknik, provkod 0100
DT1030 Datateknik A, Tillämpad datavetenskap, provkod 0310
Hjälpmedel: | Inga hjälpmedel. |
Poängkrav: |
Maximal poäng är 40.
För betyget 3 respektive G krävs 25 poäng. För den som följt kursen hösten 2013 ger varje i tid inlämnad inlämningsuppgift en extra poäng. Den som inte gått kursen hösten 2013 får dessa (fem) extrapoäng ändå. |
Resultat: | Meddelas på kursens hemsida eller via e-post senast måndag 3 februari 2014. |
Återlämning av tentor: | Efter att resultatet meddelats kan tentorna hämtas på universitetets centrala tentamensutlämning. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070 - 73 47 013. |
De svarta klisterlapparna är överklistrade skott från tidigare serier.
Nu ska vi organisera skyttet i en databas, som innehåller serier men också skyttar, skytteklubbar och tävlingar.
Det vi ska lagra i databasen är, mer detaljerat, följande saker:
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.
Visa sen att tabellen uppfyller den normalformen.
a) Det bor några skyttar på adressen Vägen 7. Vad har de för personnummer och namn?
b) Vad heter de skyttar som har skjutit minst en 50-serie, oavsett om det är på tävling eller träning?
c) Vad heter de skyttar som har skjutit minst en 50-serie på tävling?
d) Finns det några skyttar som aldrig har missat tian på en tävling, dvs som bara skjutit 50-serier på de tävlingar de varit med i? Vi vill veta de skyttarnas namn.
e) Hur många serier har varje skytt skjutit, totalt? Vi vill ha ett resultat som för varje skytt innehåller skyttens personnummer och namn, och antalet serier. Skyttar som inte skjutit några serier alls ska också vara med, med antalet noll.
f) Vad heter den skytt som vann tävlingen Julpanget 24 december 2013? Det är alltså den skytt som sammanlagt fick högst antal poäng på de serier som han eller hon sköt under den tävlingen.
b) Vad är det som skiljer ett index från en nyckel?
c) De flesta databashanterarna skapar automatiskt index på de primärnycklar som man angett. Varför har databashanterartillverkarna valt att låta sina databashanterare göra så?
d) Databasen växer så att varje tabell innehåller många miljoner rader. Det finns inga index alls i databasen, inte ens på primärnycklar. De fyra SQL-frågorna a-d i uppgiften ovan körs många gånger. Vilka index bör man skapa för att just de frågorna ska gå snabbt att köra?
(Det finns en uppgift på nästa sida också.)
Vi statar två olika klientprogram som loggar in på samma databas, och ger följande SQL-kommandon, i den angivna ordningen, i de två klienterna;
Klient 1 | Klient 2 |
---|---|
create table Apelsiner
(id integer not null primary key, vikt integer); |
|
insert into Apelsiner values (1, 10); | |
select * from Apelsiner; -- Fråga nummer 1 | |
start transaction;
insert into Apelsiner values (2, 20); commit; | |
start transaction;
insert into Apelsiner values (3, 10); |
|
select * from Apelsiner; -- Fråga nummer 2 | |
select * from Apelsiner; -- Fråga nummer 3 | |
rollback; | |
select * from Apelsiner; -- Fråga nummer 4 | |
select * from Apelsiner; -- Fråga nummer 5 | |
start transaction;
insert into Apelsiner values (4, 20); | |
start transaction;
insert into Apelsiner values (4, 100); |
|
select * from Apelsiner; -- Fråga nummer 6 | |
select * from Apelsiner; -- Fråga nummer 7 | |
commit; | |
commit; |
a) Vad blir resultatet av var och en av de sju select-frågorna?
b) Man kommer att få felmeddelanden från databashanteraren? Vilka, när och varför?