Databasteknik
onsdag 19 mars 2025
Gäller som tentamen för:
DT105G Databasteknik, provkod A001
Hjälpmedel: | Ordbok för översättning. |
Poängkrav: | Maximal poäng är 40. För godkänt betyg krävs 24 poäng, varav minst sex poäng på uppgift 1. |
Resultat: | Meddelas senast 15 arbetsdagar efter tentamensdatum. |
Återlämning av tentor: | Elektroniskt via webbportalen Studenttjänster. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070 - 73 47 013. |
Tyvärr har det hänt att butiker fuskar. För att framstå som billigare sänker de priserna just den dagen som undersökningen görs, på just de varor som ingår i undersökningen, och när undersökningen är klar höjer de priserna igen.
Därför ska vi prova ett nytt upplägg! Undersökningen ska pågå under hela året, och varje dag ska tusentals pensionärer gå till landets butiker och ta reda på priserna. Och naturligtvis behöver de en databas för att spara de data som de samlar in.
Det som ska lagra i databasen är:
Här är ett ER-diagram för databasen i scenariot:
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 butiker som finns i Örebro?
b) (2p) I hur många städer finns det ICA-butiker? Dvs, vad är antalet städer där det finns minst en butik med ett namn som innehåller ICA, till exempel Norra ICA Närköp?
c) (2p) Det finns bara en pensionär som heter Agda Svensson och är född 1950. Vilka telefonnummer har hon?
d) (2p) 12 februari 2025 besökte Agda Svensson, från uppgiften ovan, några olika butiker som ligger i Örebro. Vad heter de butikerna?
e) (3p) En av butikerna som Agda Svensson besökte 12 februari 2025 heter Coop Forum och ligger i Örebro. Hur många varor undersökte hon priset på vid det besöket?
f) (3p) Vilken pensionär har gjort flest besök? Vi vill veta namn och nummer på den pensionären.
Ange för var och en av sökningarna hur man kan få dem att gå snabbare:
a) Sökningen i deluppgift 2a
b) Sökningen i deluppgift 2b
c) Sökningen i deluppgift 2c
d) Sökningen i deluppgift 2d
Tänk på att det kan finnas sökningar där det inte hjälper att skapa index. Vilka sökningar är det i så fall, och kan vi göra något annat för att få de frågorna att gå snabbare?
Vi startar två olika klientprogram som loggar in på samma databas, och ger följande SQL-kommandon, i den angivna ordningen, i de två klienterna.
Vad blir resultatet av var och en av de sex select-frågorna?
Steg | Klient 1 | Klient 2 |
---|---|---|
1 |
create table Tröjor
(Nummer integer not null primary key, Storlek varchar(3)); |
|
2 | insert into Tröjor values (1, 'M'); | |
3 | insert into Tröjor values (2, 'XL'); | |
4 | select * from Tröjor; -- Fråga 1 | |
5 | start transaction; | |
6 | insert into Tröjor values (3, 'XS'); | |
7 | start transaction; | |
8 | insert into Tröjor values (4, 'S'); | |
9 | select * from Tröjor; -- Fråga 2 | |
10 | select * from Tröjor; -- Fråga 3 | |
11 | insert into Tröjor values (5, 'XXL'); | |
12 | commit; | |
13 | rollback; | |
14 | select * from Tröjor; -- Fråga 4 | |
15 | start transaction; | |
16 | select * from Tröjor; -- Fråga 5 | |
17 | insert into Tröjor values (6, 'L'); | |
18 |
update Tröjor set Storlek = 'XXL' where Nummer = 1; | |
19 | select * from Tröjor; -- Fråga 6 | |
20 | commit; |
select * from Tröjor;
a) Vad är skillnaden mellan en snapshot-databas och en historisk databas?
b) Beskriver EER-diagrammet en snapshot-databas eller en historisk databas? Förklara!
c) Det finns en detalj i diagrammet som är konstig, givet vad vi vet om grönsaker. Vilken? Förklara också varför den är konstig!
a) Vad är skillnaden mellan en databashanterare och en databasadministratör?
b) Vad är skillnaden mellan en främmande nyckel och en relation?
c) Vad är skillnaden mellan ett schema och en transaktion?