bild
Skolan för
datavetenskap
och kommunikation
KTH / CSC / Kurser / DD1368 / dbtd11

Databasteknik för D, dbtd11

En introduktion till databassystem.

Nyheter

16 juni : Omtentan är färdigrättad och finns att hämta på CSC studentexp från måndag kl 11. Under Tentamen i menyn ligger nu tentalydelsen med lösningsförslag och rättningsmall (för att betygssättningen ska bli transparent) samt lite statistik. Jag kontaktar dem som fått Fx för att komma överens om komplettering. Nästa tentatillfälle är i samband med nästa års kurs.

31 maj: Kursanalysen finns nu under Kursanalys i menyn till höger.

11 maj: Möjlighet finns att redovisa restlabbar 26 och 27 maj (enligt tidigare mail). Tag denna chans, eftersom examinationen kommer att ändras till nästa år = extrajobb för dig som har delar kvar!

11 maj: Omtentan är flyttad till Tisdag 7 juni kl 14-19 i L42, L43, L44. Ingen föranmälan krävs. Bonuspoängen gäller även på omtentan. Tag denna chans, eftersom examinationen kommer att ändras till nästa år = extrajobb för dig som har delar kvar!

14 april: Dina tankar och ideer är mycket värdefulla i kursens fortsatta utveckling. Därför är det jättebra om du vill fylla i kursenkäten:

12 april: Omtentan kommer infalla Tisdag 31 maj kl 08-13 i D32, D41. Ingen föranmälan krävs. Bonuspoängen gäller även på omtentan.

5 april: Fler förtydliganden på förekommen anledning: * Gränssnittet kan vara textbaserat men måste fungera som designen det baseras på. Om ni är osäkra, fråga en handledare idag. * Relationsschemat ska se ut som det ni tog fram i steg 2. Om ni avvikit från denna design måste ni på redovisningen förklara varför och motivera det nya relationsschemat. * Databasen måste (naturligtvis) sparas mellan körningar. * Olika användartyper ingår INTE i designen, och måste därmed inte implementeras. Implementationen ska omfatta HELA designen, men måste inte innehålla mer än designen.
Ett mail med alla krav kommer gå ut idag.

31 mars: Tentan är nu färdigrättad, och tentor kan hämtas ut på CSC Studentexp från 12 idag. Trots att många tyckte det var en svår tenta gick det mycket bra. Under Tentamen i menyn ligger nu tentalydelsen med lösningsförslag och rättningsmall (för att betygssättningen ska bli transparent) samt lite statistik. Jag kontaktar dem som fått Fx för att komma överens om komplettering.

30 mars: Kravet på grafiskt gränssnitt är borttaget. Detta eftersom databasdelen av projektet endast omfattar 1 hp (ca 30 timmar), och denna tid kanske inte räcker till för att få grafiken att funka. Beskrivningen under Projekt i menyn är uppdaterad.

23 mars: På förekommen anledning vill jag förtydliga lite om projektet. Projektet slutredovisas 14-15/4 - inga ytterligare redovisningar. Kraven för databasdelen av projektet sammanfattas under Projekt i menyn - och har kompletterats med förtydliganden. På datorsalstiderna (se Schema i menyn) kan ni få hjälp med implementationsfrågor i projektet - och även redovisa kvarvarande labbar.

15 mars: Teoridelen av kursen är nu avklarad. Det som återstår är projektet (slutredovisningar 14-15/4) samt labbar och gruppuppgift för några personer. Labbar redovisas på datorsalstiderna i period 4, se Schema i menyn. Jag tar kontakt med dem som inte redovisat gruppuppgiften, så kan vi ordna en uppsamlingsomgång. Lösningsförslag till tentan är ännu inte klara, meddelande kommer på denna sida inom kort.

13 mars: (Slarv)fel i Föreläsning 7, optimeringsregel 8: theta_R, theta_S, skulle vara L_R, L_S. Detta är också vad som står i boken i fall 8.a. på sid 585.

12 mars: Fel i Föreläsning 4 om wound-wait (sid 11): stod "rollback på den äldre transaktionen", numera rättat till "rollback på den yngre transaktionen". Detta är också vad som står i boken längst ner på sid 675, om än mycket kryptiskt. Lösningen i tenta 1 tal 4 är alltså korrekt.

12 mars: Småfel rättade i fiktiv extenta 4, tal 2b och 3a.

11 mars: Mer utförlig lösning i fiktiv extenta 4, tal 1.

10 mars: Förtydligande av lösningsförslagen, fiktiva tentor uppgift 1. I lösningsförslaget står det "Beräkna den kanoniska täckningen enligt...". Det var menat som en ledning till hur lösningen går till. Det räcker inte att på tentan skriva "Jag beräknar den kanoniska täckningen och resultatet blir..." - man måste naturligtvis redovisa alla beräkningar som görs för att gå från den enda stora relationen till ett relationsschema i 3NF. Detta kommer också meddelas på tentan.

8 mars: Ytterligare fiktiva extentor på väg - en ligger på sidan Tentamen i menyn, en annan kommer imorgon.

7 mars: Förtydligande ifråga om hjälpmedel på tentan: Man får ha med sig boken (med anteckningar i), kopior av föreläsnings-oh (med anteckningar i), samt alla handskrivna anteckningar. Man får INTE ha med sig fotokopior av andras anteckningar. Man får INTE heller ha med sig tryckt eller datorskrivet material.

3 mars: Nu är oh-bunten klar och kan köpas på CSC Studentexp för 40:- (obs lite billigare än de beräknade).

2 mars: Småfel rättade i lydelserna till lab 3 och 5.

2 mars: Kopior av föreläsningsbilder håller på att tryckas på CSC Studentexp. Nytt meddelande kommer här när de är klara - förhoppningsvis i slutet av denna vecka. Bunten kommer kunna köpas på CSC Studentexp, och kommer kosta 50:-, vilket motsvarar kopieringskostnaden.

1 mars: Man kan nu boka tid för redovisning av lab 3 och 5. Tryck här för att hämta bokningslistor:

28 februari: Ny lydelse för lab 3 finns nu. Ni som redan gjort lab 3 behöver inte göra om den, men måste vid redovisningen kunna visa (skriva på papper) vilka kommandon ni använde för att komma fram till svaren på frågorna i labben. För att hjälpa till med lab 5 (som använder databasen från lab 3) har lydelsen till lab 5 kompletterats med en kort beskrivning av hur databasen skapas.

26 februari: Det är fortfarande problem med lab 3, nu beroende på att den nya databasen (som är bättre för tidtagning) är för stor. Vi återgår därför till den gamla (som är mindre och därmed enklare att jobba med många på en gång). Ny lablydelse kommer 1/3, där det kommer att stå beskrivet bl.a. hur man tar tid på systemnivå istället för inne i psql. De som redan gjort lab 3 behöver naturligtvis inte göra om den. Däremot ber vi alla som nu har en 86MB-databas på nestor att ta bort den och invänta den nya lablydelsen

24 februari: Pga en bugg i Remores visades felaktiga bokningstider. Den verkliga tiden är förmodligen tidigare än den ni såg förut. Om ni inte hinner till er nuvarande tid den 24/2, kom så fort ni kan efter det, och sätt upp er på listan i Sima. Vi ska se till att alla får redovisa. Det finns också tider kvar den 25/2.

24 februari: Förtydligande av uppgiftslydelsen i lab 3: Det funkar inte om alla jobbar på samma databas - ni måste populera er egen databas med data. Två filer createDb.sql och populateDb.sql finns nu på kursbiblioteket för att hjälpa till med detta. Pdf-filen under Laborationer i menyn är uppdaterad.

24 februari: Förtydligande av uppgiftslydelsen i lab 2 (första stycket): "Programmet ska även KUNNA ANVÄNDA AGGREGERANDE FUNKTIONER FÖR ATT visa statistik för den aktuella tabellen.". Med aggregerande funktioner menar vi naturligtvis max(), min(), sum(), count() etc. Pdf-filen under Laborationer i menyn är uppdaterad.

24 februari: På projektsidan under Projekt i menyn finns nu en beskrivning av hur semariet 1-2 mars kommer gå till. I korthet: Ni ska först redovisa MDI-aspekter steg 2 och databasaspekter steg 1 och 2. Sen ska ni påbörja steg 3, och kan få hjälp av lärare under tiden. Viktigt: Ingen kommer bli underkänd på databasdelen av steg 1 och 2 - denna examination är endast inlagd för att rätta till eventuella fel innan ni börjar implementera.

22 februari: Tupel- och domänkalkyl kommer inte utgå ur kursen - detta efter diskussion med andra databaslärare.

22 februari: En ny version av lab 3 ligger nu under Laborationer i menyn.

18 februari: Tentan kommer att se en aning annorlunda ut jämfört med DD1364. Därför har inga gamla DD1364-tentor lagts ut. Två fiktiva extentor håller på att utarbetas, och kommer upp på hemsidan i början av nästa vecka. Där kan ni se ungefärlig svårihetsnivå, betygsnivåer, och material man får ha med sig. OBS: DD1364-omtentanter, titta på de fiktiva extentorna för att se ändringar!

18 februari: En rättelse i hemtal 4 uppgift 1 är nu införd: B+-trädet ska inte vara av ordning 2 utan ordning 4. (Ett B+-träd av ordning 2 är helt enkelt ett binärträd.) Pdf-filen under Hemtal i menyn är uppdaterad.

15 februari: Man kan nu boka tid för redovisning av lab 1, 2 och 4. Tryck här för att hämta bokningslistor:

10 februari: Övning 1-3 ligger nu upplagda på schemat under Schema i menyn.

8 februari: Gruppindelningen för diskussionsgrupperna är nu klar och ligger under /info/dbtd11/Diskussionsgrupper.txt. Ta kontakt med de andra medlemmarna i din grupp så snart som möjligt, och läs om andra halvan av gruppuppgiften under Gruppuppgift i menyn.

7 februari: Bilderna från dagens föreläsning, med felen på bild 36 och 37 rättade, ligger nu uppe i schemat.

5 februari: Lab 2, eller närmare bestämt instruktionerna för PostgreSQL på CSC, innehöll förut gamla instruktioner för att länka till javamodulen. Problemet är att detta är den första databaskurs som använder Rapp och java, instruktionerna är för systemet som föregick Rapp. Felen är nu rättade.

31 januari: En gammal uppgiftsformulering (om T-matriser) hängde kvar under Gruppuppgift i menyn, men är nu borttagen.

28 januari: Om man inte kan komma på det ordinarie labbredovisningstillfället men fortfarande vill få bonuspoäng går det bra att bestämma träff med en handledare utanför lektionstid innan bonusdatumet. Mailadresser till några av handledarna finns under Lärare i menyn.

27 januari: Fel i lab0.pdf är nu rättade: semikolon efter alla SQL-satser, ett saknat "table", etc. Också kompletterat med information om problem med å,ä,ö i variabelnamn.

25 januari: Gruppindelningen för modelleringsgrupperna är nu klar och ligger under /info/dbtd11/Modelleringsgrupper.txt. Ta kontakt med de andra medlemmarna i din grupp så snart som möjligt, och läs om gruppuppgiften under Gruppuppgift i menyn.

25 januari: Ett fåtal studenter är inte registrerade på kursen i LADOK.(Alla är däremot med i Rapp numera.) Om du inte ser kursen i Mina Sidor, ta kontakt med din studievägledare så lägger de till dig i LADOK.

24 januari: De som vill göra laborationerna på sin egen dator är välkomna att arbeta i miljön SQLite istället för i PostgreSQL som stöds av CSC. Mer information om detta finns under Manualer i menyn.

21 januari: Laborationerna finns nu utlagda under Laborationer i menyn. Det kan hända att hård- och/eller mjukvaran uppgraderas under kursens gång; labblydelserna kommer då uppgraderas, och ett meddelande kommer om detta här. Inget ni sparat kommer gå förlorat. Vad gäller redovisningar, så kommer det en lista för tidbokning i god tid innan redovisningstillfällena. För information om vilka laborationer som ska redovisas när, se Schema i menyn.

20 januari: Äldre D-studenter som inte läser DH1620 MDI kan ändå läsa databasteknik denna kursomgång, under kurskod DD1364, 7,5 hp. Man får då göra ett projekt om 2,5 hp, och i övrigt göra samma labbar, hemtal, tenta, gruppuppgift som de som läser DD1368. All info i Rapp ligger under DD1368, men kommer i LADOK dyka upp under kurskod DD1364. Ni ska alltså registrera er i Rapp på DD1368 på precis samma sätt som D2:orna. Om du är D-äldre men inte fått mail av mig, kontakta mig.

17 januari: Ett fel har insmugit sig i föreläsning 1, bild nr 38 (kokboksmetoden). Regel b ska vara: "Alla objektklasser med bara I-term på N-sidan i ett 1:N-samband bildar egna basrelationer." Detta är nu rättat i föreläsningsanteckningarna som ligger på hemsidan (Schema i menyn).

13 januari: Registrera er innan 24/1 kl 12.00 som aktiva på kursen på rapp.nada.kth.se/rapp. Grupperna för gruppuppgiften sätts samman 24/1 av de som är aktiva. Eftersom gruppuppgiften är obligatorisk måste ni alltså registrera er i tid om ni ska gå kursen detta läsår.

5 januari: Hemtalslista 1 och gruppuppgiftsbeskrivningen är nu tillgängliga under Hemtal respektive Gruppuppgift i menyn.

Lärandemål

Studenterna skall efter genomgången kurs kunna modellera och implementera en egen databas. Vidare skall man ha skrivit ett applikationsprogram mot en databas.

Detta innebär att studenterna skall kunna:

  • förklara ett databashanteringssystems funktioner och uppbyggnad
  • diskutera för och nackdelar med olika databasmodeller
  • modellera och strukturera data med hänsyn till aktuella restriktioner
  • förklara hur olika restriktioner påverkar databasstrukturen
  • diskutera för- och nackdelar med olika implementationer av en databas
  • välja indexstruktur som är användbar i den aktuella situationen
  • använda frågespråk för att formulera frågor samt beskriva den matematiska bakgrunden för frågespråk
  • förklara mekanismerna för frågeoptimering
  • förklara principerna för hantering av parallellitetsproblem och återhämtning
  • förklara lösningar på säkerhetsproblem
  • skriva inbäddade SQL-satser i ett tredjegenerationens programspråk

Kursens huvudsakliga innehåll

Definition av relationsmodellen. Informationstrukturering enligt "Entity-Relationsship"-modellen. Funktionella beroenden och deras betydelse för god databasdesign. Normalisering. Frågespråk och bakomliggande matematik. Lagrings- och åtkomstmetoder. Transaktionshantering. Säkerhets- och integritetskontroll. Fjärde generationens utvecklingsverktyg för databassystemdesign. Informationssystemutveckling. Översikt över olika modeller för datarepresentation. Laborationer utförda på experimentella och kommersiella system.

Kurslitteratur

  • A. Silberschatz, H. F. Korth and S. Sudarshan, Database System Concepts, 6:e upplagan, McGraw-Hill, 2010.

Boken kan köpas på Kårbokhandeln eller på din favoritbutik på nätet, och hittas med ISBN 9780071289597. Det går också bra att använda 5:e upplagan som kan köpas begagnat av äldre studenter.

Kurslitteraturen läser man på egen hand parallellt med kursen. Tänk på att föreläsningar och övningar bara täcker en del av kursmaterialet.

Läsanvisningar till både 6:e och 5:e upplagan finns under Schema i menyn.

Examination

Kursmoment

Kursen examineras genom:
  • Datorlaborationer, gruppuppgift och projektarbete (3 hp). Datorlaborationerna utförs i grupper om 2 studenter, och examineras löpande vid datorsalsövningar i period 3. Gruppuppgiften utförs i grupper om 5 och examineras vid salsövningar i period 3. Laborationer och gruppuppgift redovisade i tid ger 15 bonuspoäng till tentan. Projektarbetet utförs i grupper om 5 och sker i samarbete med DH1620 Människa-datorinteraktion, inledande kurs, och examineras vid seminarier i vecka 9 och 15. Betyg (normalt samma för alla gruppmedlemmar): P / F.
  • Skriftlig tentamen (3 hp). Tentamen är 5 timmar lång och äger rum efter period 3. Hemtal, redovisade vid salsövningar i period 3, ger upp till 15 bonuspoäng till tentan. Betyg: A - F.

Detaljer om de två kursmomenten finns under Hemtal, Tentamen, Laborationer, Gruppuppgift och Projekt i menyn.

SU-studenter som läser kursen NA2090, och äldre D-studenter som läser kursen DD1364 gör samma moment, med undantag av projektet. Eftersom NA2090 och DD1364 omfattar 7,5 hp ingår det i dessa kurser ett mer omfattande projekt som redovisas med en skriftlig rapport. För mer detaljer, kontakta kursledaren.

Betyg

Kursbetyget baseras på summan av poäng insamlade på den skriftliga tentamen (max 70), från hemtal (max 15), från laborationer (max 10) och från grupparbete (max 5). För godkänt betyg på kursen måste båda examinationsmomenten vara godkända. Betygskriterier för de olika delarna av kursinnehållet är:

Mål E D C B A
Förklara ett databashanterings- systems funktion och uppbyggnad Förklara behovet av trenivå- arkitektur Förklara trenivå- arkitektur Beskriva implementation av databashanterings- system Beskriva olika komponenter i ett databashanterings- system Motivera val av implementation av komponenterna i ett databashanterings- system
Examineras med tentamen
Diskutera för- och nackdelar med olika databasmodeller Kunna beskriva olika modeller Kunna förklara skillnaden mellan olika modeller Kunna avgöra vilken modell som är lämplig i ett visst sammanhang
Examineras med tentamen
Modellera och strukturera data med hänsyn till aktuella restriktioner, förklara hur olika restriktioner påverkar databasstrukturen Kunna göra en enkel modell och överföra denna till databasstruktur. Normalisera en enkel struktur Göra en mer avancerad modell och som normaliseras Modellera, överföra till databasstruktur samt normalisera med hänsyn till restriktioner Kunna avgöra för- och nackdelar med en modell och en databasstruktur Kunna förklara och motivera de olika stegen i en normalisering
Examineras med hemtal, grupparbete och tentamen
Diskutera för- och nackdelar med olika implementationer av en databas Examineras med laborationer och projekt
Välja indexstruktur som är användbar i den aktuella situationen Kunna förklara hur olika indexstrukturer fungerar Kunna motivera val av indexstruktur Kunna avgöra vilka attribut som lönar sig att indexera Kunna välja indexstruktur för att få så snabb exekvering som möjligt Kunna förklara hur indexeringen effektiviserar exekveringen
Examineras med hemtal, projekt och tentamen
Använda frågespråk för att formulera frågor samt beskriva den matematiska bakgrunden för frågespråk, förklara mekanismerna för frågeoptimering Kunna skriva enkla frågor Kunna skriva mer avancerade frågor samt beskriva hur de optimeras Förklara den matematiska bakgrunden till frågespråk och optimering Avgöra vilka algoritmer som är lämpliga för evaluering av olika delar i en fråga Förklara optimering och evaluering
Examineras med hemtal och tentamen.
Förklara principerna för hantering av parallellitetsproblem och återhämtning, förklara lösningar på säkerhetsproblem Beskriva problemen med parallella transaktioner Beskriva principerna för hantering av parallella transaktioner Kunna förklara principerna för hantering av parallella transaktioner Kunna förklara hur återstart av databassystemet sker Kunna förklara olika metoder för transaktionshantering och återstart
Examineras med hemtal, laborationer och tentamen
Skriva inbäddade SQL-satser i ett tredjegenerationens programspråk Examineras med laborationer och projekt
Copyright © Sidansvarig: Hedvig Kjellström <hedvig@nada.kth.se>
Uppdaterad 2011-10-17