Databasteknik
för D1, SDU1 m fl
lördag 7 mars 2015
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 34.
För betyget 3 respektive G krävs 17 poäng. |
Resultat: | Meddelas på kursens hemsida eller via e-post senast lördag 28 mars 2015. |
Å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. Det är möjligt att läraren inte alltid går att nå. |
Nu behöver de en databas för att hålla reda på robotarna.
Det vi ska lagra i databasen är 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) Här är robot nummer 826. Vad heter robottypen?
b) Hur många robotar har vi?
c) Hur många robotar har vi som inte är förstörda? En robot är förstörd om den förlorat en strid.
d) Det står i scenariot att en robot inte kan vara både vinnare och förlorare i samma strid. Kanske har vi ändå råkat lägga in en robot som vinnare och förlorare i samma strid? Skriv en SQL-fråga som visar vilka robotar och strider det i så fall är!
(Alternativt: Om din databas från uppgift 2 gör att man inte kan göra detta fel, förklara varför det inte går!)
e) Vilken dag inträffade den dyraste striden, dvs den strid som gav störst sammanlagd kostnad för skadorna den orsakade?
Allteftersom robotar blir billigare, siktar AASS på att köpa in tusentals och kanske miljoner robotar, av många olika typer. De har förstås strider hela tiden.
Robotnr | Robottypnr | Robottyp | Aktiveringsdatum |
---|---|---|---|
826 | 71 | Strids-giraff 2000 | 2012-03-22 |
827 | 72 | Attackrullare X-1 | 2012-03-22 |
828 | 72 | Attackrullare X-1 | 2012-04-02 |
a) Vilka kandidatnycklar finns i tabellen?
b) Vilka fullständiga funktionella beroende finns i tabellen?
c) Vilken är den högsta normalform som tabellen uppfyller, av 1NF, 2NF, 3NF och BCNF? (Ledtråd: Det är inte BCNF.) Motivera svaret!
d) Beskriv ett problem som finns i den här tabellen, men som man skulle slippa om den hade uppfyllt BCNF.
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;
Klient 1 | Klient 2 |
---|---|
create table Strutsar
(nummer integer not null primary key, status integer); |
|
insert into Strutsar values (1, 10); | |
select * from Strutsar; -- Fråga 1 | |
insert into Strutsar values (2, 20); | |
select * from Strutsar; -- Fråga 2 | |
start transaction;
insert into Strutsar values (3, 30); rollback; | |
select * from Strutsar; -- Fråga 3 | |
start transaction;
insert into Strutsar values (4, 40); |
|
select * from Strutsar; -- Fråga 4 | |
select * from Strutsar; -- Fråga 5 | |
commit; | |
select * from Strutsar; -- Fråga 6 | |
select * from Strutsar; -- Fråga 7 |
Vad blir resultatet av var och en av de sju select-frågorna?