Databasteknik
för D1 m fl
tisdag 14 mars 2017
Gäller som tentamen för:
DT105G Databasteknik, provkod 0100
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 fyra poäng på uppgift 1 och minst fem poäng på uppgift 2. |
Resultat: | Meddelas på kursens hemsida eller via e-post senast tisdag 4 april 2017. |
Återlämning av tentor: | Elektroniskt via Studentforum. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070 - 73 47 013. |
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) Det finns flera olika båtar som heter Rudolfina. Vilka nummer har de?
b) (2p) Här är båt nummer 4711. Vad heter ägarna?
c) (2p) Vad heter de fiskarter som har fångats av båt nummer 4711?
d) (3p) Man kan tänka sig att en båt blir sänkt av en fisk som fångats av den båten. (Fisken kanske var så stor och tung att båten sjönk.) Vad heter de båtar som råkat ut för detta?
e) (3p) Vilken art tillhör den fisk som sänkt flest båtar?
Vilka index bör man skapa för att just SQL-frågorna a-c i uppgift 3 ska gå snabbt att köra?
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 nio select-frågorna?
Klient 1 | Klient 2 |
---|---|
create table Fiskar
(nummer integer not null primary key, vikt integer); |
|
insert into Fiskar values (1, 100); | |
select * from Fiskar; -- Fråga 1 | |
select * from Fiskar; -- Fråga 2 | |
start transaction; | |
select * from Fiskar; -- Fråga 3 | |
insert into Fiskar values (2, 200); | |
select * from Fiskar; -- Fråga 4 | |
commit; | |
select * from Fiskar; -- Fråga 5 | |
select * from Fiskar; -- Fråga 6 | |
start transaction;
insert into Fiskar values (3, 300); |
|
select * from Fiskar; -- Fråga 7 | |
rollback; | |
select * from Fiskar; -- Fråga 8 | |
select * from Fiskar; -- Fråga 9 |
Fiskar | |
---|---|
Nummer | Vikt |
1 | 100 |
2 | 200 |
4 | 100 |
a) Vi vet redan att Nummer är primärnyckel i tabellen. Men finns det fler kandidatnycklar? I så fall vilka?
b) Vilka fullständiga funktionella beroenden finns i tabellen?
c) Vilken är den högsta normalform, av 1NF, 2NF, 3NF och BCNF, som tabellen uppfyller? Motivera svaret!
Påstående | Sant | Falskt |
---|---|---|
De flesta personer som arbetar med data som finns i en databas söker i databasen genom att skriva SQL-frågor. | ||
Den så kallade tre-schema-arkitekturen innebär att samma databas kan betraktas på tre olika nivåer: SQL-nivån, transaktionsnivån och klientnivån. | ||
En svag entitetstyp är en entitetstyp där instanserna inte lagras i databasen, utan beräknas utifrån andra data som finns i databasen. | ||
"Relationerna" i en relationsdatabas är kopplingarna mellan tabeller med främmande nycklar ("foreign keys"). | ||
Det finns en standard för frågespråket SQL, men de flesta vanliga databashanterarna följer inte SQL-standarden särskilt exakt, utan de har sina egna dialekter. | ||
Integritetsvillkor i databaser handlar om vilka data man får lagra om personer, för att inte kränka den personliga integriteten. | ||
En så kallad lagrad procedur är en programsnutt som man kan lagra i databasen, men den kan inte anropas och köras i databasen, utan måste först hämtas av klientprogrammet. Därefter kan den köras som en del av det programmet. | ||
Många webbplatser lagrar sina data i en databas. Det brukar fungera så att webbläsaren (till exempel Internet Explorer eller Safari) först hämtar den grundläggande HTML-koden för webbsidan, och sen kopplar webbläsaren upp sig mot databashanteraren och kör SQL-frågor. Svaren från SQL-frågorna visas sen av webbläsaren. | ||
Tre vanliga databashanterare är Microsoft MySQL Server, Microsoft Access Server och DbVisualizer. |