Databasteknik
för D1, SDU1 m fl
onsdag 18 augusti 2010
Gäller som tentamen för:
DT1012 Datateknik A, Databasteknik, provkod 0100
DT1007 Datateknik A, Tillämpad datavetenskap, provkod 0310
Hjälpmedel: | Inga hjälpmedel. |
Poängkrav: |
Maximal poäng är 32.
För betyget 3 respektive G krävs 16 poäng. |
Resultat och lösningar: | Meddelas på kursens hemsida eller via e-post senast onsdag 8 september 2010. |
Återlämning av tentor: | Efter att resultatet meddelats kan tentorna hämtas på universitetets centrala tentamensutlämning i L1506, måndag till torsdag kl 10-14. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070 - 73 47 013. |
I databasen lagras data om ett antal planeter, som var och en har ett unikt nummer, ett namn, och ett avstånd från jorden. Man lagrar också data om FOI:s olika rymdskepp, som vart och ett har ett unikt nummer och ett unikt namn. Man har också företagit ett antal expeditioner. Varje expedition har ett unikt nummer, ett startdatum (när man lämnade jorden) och ett returdatum (när man kom tillbaka).
I varje expedition deltog ett eller flera rymdskepp. Varje expedition besöker noll, en eller flera planeter. Samma rymdskepp kan ingå i flera olika expeditioner. Samma planet kan besökas av flera olika expeditioner.
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) Vilka rymdskepp har namn som börjar på X? Vi vill veta deras namn.
b) Vilka expeditioner har ännu inte återvänt? (Man ser det på att deras returdatum är null.) Vi vill veta expeditionernas nummer, och när de åkte.
c) Vilka planeter har rymdskeppet "Stålkomet 7" besökt? Vi vill veta planeternas namn och nummer.
d) Hur många expeditioner har besökt planeten "Ismisär 2"?
e) Vilken planet ligger längst bort? Vi vill veta den planetens namn och nummer.
f) Vi vill ha fram en lista med antalet planeter som varje rymdskepp besökt. Resultatet ska se ut ungefär så här:
Formulera en SQL-fråga som ger ett sådant svar!+--------+-------------+-------+ | Nummer | Namn | Antal | +--------+-------------+-------+ | 17 | Stålkomet 7 | 13 | | 4 | Dunderplutt | 0 | | 11 | Stålkomet 5 | 9 | +--------+-------------+-------+
(Tänk på att eftersom rymdskeppet "Dunderplutt" inte besökt några planeter alls, så får man inte med det alls i svaret om man inte gör på ett speciellt sätt när frågan formuleras.)
Definiera gärna vyer om det underlättar frågorna.
a) Ge ett exempel på hur illa det kan gå om man använder den databashanterare som inte erbjuder atomicitet!
b) Ge ett exempel på hur illa det kan gå om man använder den databashanterare som inte erbjuder hållbarhet!
När du testkör fungerar allt bra, och i början fungerar det utmärkt även i skarp drift. Men efter ett år eller så ringer de från företaget och klagar över att databasen går trögt. Frågorna tar lång tid att köra.
Vad kan ha blivit fel? Hur bör du lösa problemet?