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

Databasteknik för D, dbtd12

En introduktion till databaser.

Om du läst delar av DD1364, DD1368, 2I1100 eller DA3003 läsåret 10/11 eller tidigare så är du väldigt välkommen att läsa klart detta läsår. Innan du börjar, kontakta Hedvig Kjellström (se Lärare i menyn) - det behövs för att kunna planera antalet platser vid tenta och labpass.

  • Tentan kvar i DD1364, DD1368, 2I1100 eller DA3003: Tenta med DD1334 Databasteknik för alla utom D detta läsår.
  • Labbar kvar i DD1364, DD1368 eller DA3003: Kontakta Hedvig Kjellström (se Lärare i menyn) för att skräddarsy återstoden av din labbkurs, som en kombination av nuvarande labbar i DD1334 och de gamla labbarna i DD1368. Ett alternativ är också att göra de nya labbarna i denna kurs.
  • Projektet kvar i DD1364, DD1368 eller DA3003: Kontakta Hedvig Kjellström (se Lärare i menyn) för att skräddarsy ett projekt.

Nyheter

20 juni: Kursanalysen är nu klar och återfinnes under Kursanalys i menyn. Glad sommar alla studenter!

11 juni: Ni som har labbar kvar kan redovisa dem i CSCs labbvecka denna vecka. Kolla schemat för DD1368 här.

11 maj: Baserat på Doodlen har nu omtentan schemalagts till fredag 8 juni kl 14-17, och ommuntorna till måndag 11 juni kl 9.30-12.30. Om du vill tenta och/eller munta, skicka ett mail till Hedvig. (Ni som redan anmält er behöver såklart inte göra detta.)

26 april: Jag har skapat en Doodle för att schemalägga omtenta och ommunta i omtentaveckorna 23-24. Om du har för avsikt att tenta och/eller munta, gå in på denna sida för att ange de tider då du kan.

26 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:

16 april: Den sista schemalagda redovisningstillfället infaller nu på torsdag och fredag. Därefter bokar man redovisningstid genom att maila funktionsadressen dd-1368@csc.kth.se - OBS, inte genom att maila Hedvig. Betygen förfaller i samma takt som tidigare, med tvåveckorsintervall (se Laborationer i menyn). OBS: Handledarna är ofta upptagna av annat. Boka tid så snart som möjligt för försenade labbar för att vara säker på att någon kan ta din redovisning inom den tidsrymd du vill.

13 april: Man kan nu boka tid för redovisning av lab 3. Tryck här för att hämta bokningslistor:

13 april: Ytterligare en rättelse till lab 3, fråga 10:Documentary är tillagd som genre i video.xml. Rätt version ligger nu under Laborationer i menyn, och i kurskatalogen under labbar/lab3/.

5 april: Ytterligare en rättelse till lab 3, fråga 10: Svaren är sorterade enligt user rating. Rätt version ligger nu under Laborationer i menyn.

30 mars: Lösningar till lab 2, advancedAttributes och input3, uppdaterade med ett tredje möjligt fall. Den nya versionen ligger nu under Laborationer i menyn.

29 mars: Jag har förstått att många betvivlar nödvändigheten av att hitta gömda beroenden i samband med normaliseringen till BCNF. För de exempel som ges på labben finns inga gömda beroenden - normaliserigen funkar alltså fint utan dem. Dock kommer ni inte få godkänt om er algoritm inte letar efter gömda beroenden. (Till nästa år kommer labbiblioteket utökas med fler och mer komplicerade exempel.)

28 mars: Endast bokningar till Lab 2 som gjorts före torsdag kl 17.00 kommer med i handledarnas papperslistor. Boka därför din tid innan dess.

28 mars: Lab 3-kraven för E, D och C har sänkts något, och små rättelser har gjorts i svaren till fråga 7 och 9. Den nya versionen ligger nu under Laborationer i menyn.

27 mars: Rättelser i det andra B-talet på den fiktiva tentan: Pilar har bytt riktning, och några NOT NULL-begränsningar har tillkommit i facit. Den nya versionen ligger under Tentamen i menyn.

25 mars: Man kan nu boka tid för redovisning av lab 2. Tryck här för att hämta bokningslistor:

23 mars: Lab 3 ligger nu under Laborationer i menyn. Redovisningsdatum för Lab 3 är framflyttad till 19 april kl 13-15 och 20 april kl 13-15. De nya betygsgränserna och datumen är införda under Laborationer i menyn.

22 mars: Om man fått C på tentan kan man nu, till och med söndag kl 12.00, boka in sig för munta nästa vecka - följ länken från 16 mars nedan. Det är 37 tider kvar. Vi kommer lägga upp 9 ytterligare tider när det är 9 tider kvar.

21 mars: Lab 2 är nu kompletterad med alla alternativa lösningar till generics.dep och input3.dep; eftersom inte alla beroenden kan representeras samtidigt i datastrukturen i dessa fall, kommer lösningen bero på ordningen i vilken beroendena behandlas i normaliseringen. Den kompletterade lydelsen ligger under Laborationer i menyn. Inget har ändrats förutom tilläggen ilösningarna.

19 mars: Eftersom bokningssystemet behövs för Lab 2 kommer bokningar till muntan bara göras fram till och med söndag 25 mars kl 12.00.

19 mars: Redovisningar av Lab 2 kommer ske fredag 30 mars - men det går alldeles utmärkt att redovisa redan nu på fredag 23 mars! Bokningar för lab2-redovisning kommer att kunna göras från och med söndag 25 mars kl 13.00. Numera finns redovisningskvitto under Laborationer i menyn, som du kan be läraren skriva på efter redovisningen. Detta är inte obligatoriskt.

16 mars: Vi kommer att successivt släppa ytterligare tider för munta, beroende på hur stort intresset är. Några av dessa tider kommer infalla under påsklovet vecka 14. Om du är bortrest under påsklovet, registrera dig snarast för att vara säker på att få en tid under vecka 13.

16 mars: Denna information skickas ej ut per mail pga problem med samkörning av SU- och D-kursen. För att få reda på ditt betyg, gå in i Rapp.
De som fick C på tentan kan nu boka tider för munta i vecka 13. För att ge en bild av hur muntan går till ligger en fiktiv munta, med beskrivning och tre fiktiva uppgifter, under Tentamen i menyn.
Behöver jag munta för att nå det betyg jag vill? En sammanfattning av betygssystemet är:
Om du vill ha A på kursen måste du ANTINGEN munta till B och genomföra labbarna med lägst (A,A,B, vilka labbar som har vilket betyg spelar ingen roll) ELLER munta till A och genomföra labbarna med lägst (A,A,E)/(A,B,D)/(A,C,C)/(B,B,C).
Om du vill ha B på kursen måste du ANTINGEN strunta i att munta och genomföra labbarna med lägst (A,A,E)/(A,B,D)/(A,C,C)/(B,B,C) ELLER munta till B och genomföra labbarna med lägst (A,D,E)/(B,C,E)/(B,D,D)/(C,C,D) ELLER munta till A och genomföra labbarna med lägst (C,E,E)/(D,D,E).
Hur kan jag uppskatta mitt förväntade labbetyg? Lab 3 kommer handla om XML och XQuery och vara teoretiskt och konceptuellt enklare än lab 1 och 2.
Tryck här för att hämta bokningslistor:

13 mars: Jag håller nu på med att granska kamraträttningarna, resultat kommer inom de närmaste dagarna. Hållpunkter framöver är: Lab 3 och projektuppgiften för SU-studenter kommer 23/3. Muntor kommer schemaläggas 24,25,27,28,29/3, bokningsmöljighet från 19/3. Redovisning av lab 2 FRAMFLYTTAD till 30/3. Redovisning av lab 3 FRAMFLYTTAD till 19 eller 20/4, närmare info kommer inom en vecka.

3 mars: ...och en komplettering är att XQuery inte kommer på tentan utan endast i lab 3. (Jag sa det på föreläsningen men glömde det i inlägget 1 mars.)

1 mars: Jag har förstått att det börjar gå rykten om vad som "egentligen" kommer på tentan. De ryktena är felaktiga, här är korrekt information: Tentan testar betygskriterierna E-C för alla lärandemål utom det sista - varken mer eller mindre. I matrisen som beskriver betygskriterierna står det tydligt angivet i vilken del av examinationen som varje kriterium testas. Där framgår det alltså vad ni måste förstå för att få E, D eller C på tentan.
För att alla ska hitta betygskriterierna (längst ner på denna hemsida) lägger jag in en länk: HÄR ÄR BETYGSKRITERIERNA
Det skadar inte att upprepa vad jag sa inför lab 1 och 2: Det är alltså förståelse som testas. Jag har förstått att vissa av era tidigare kurser har krävt "strategier", som att lära sig typtal eller avsnitt i boken utantill (och tro mig, jag har läst mängder av sådana kurser när jag gick F på 90-talet). Sådan examination blir lätt orättvis eftersom den inte belönar förståelse utan snarare förmåga till memorering. I denna kurs sker all examination utifrån lärandemålen, och betygskriterierna utifrån varje lärandemål. Våga lita på att vi är välvilliga när vi designar tentan - inga kuggfrågor! Våga lita på er egen förmåga att lära er på djupet och förstå istället för att söka strategier, som utantillärning. Och lägg energin på att lära er så mycket som möjligt om databaser! :)

28 februari: Vi har också beslutat att flytta fram redovisningsdatum för lab 2 till 30/3, för att göra det möjligt att genomföra hela labben i period 4. Beskrivningen av betygsättning av labbar (Laborationer i menyn) är uppdaterad med denna info.

28 februari: Vi har beslutat oss för att sänka tentagränserna till 90 procent för C, 75 procent för D, 60 procent för E, eftersom det överensstämmer bättre med betygskriterierna. Den fiktiva tentan (Tentamen i menyn) är uppdaterad med de betygsgränser som kommer gälla den 12/3.

27 februari: Ingen anmälan till tentan, det är bara att dyka upp!

26 februari: Laboration 2 ligger nu under Laborationer i menyn. Den beräknas ta 30 timmar, varav huvuddelen av arbetet är förlagt till period 4 (eftersom det då är mycket färre inlämningar i andra kurser). Det är alltså inte nödvändigt att ha tillägnat sig lab2-kunskaperna innan tentan.
För att förekomma eventuella frågor av typen "EXAKT vad ska jag göra för att bli godkänd för B?" så vill jag upprepa vad jag sa inför lab 1: Vår grundinställning är att ni ska uppnå det betyg ni föresatt er. Om ni
1) läst och förstått huvuddragen i teorin bakom frågan, och
2) gjort ett ärligt försök att lösa uppgiften (men kanske gjort ett mindre fel här och där)
kommer ni få godkänt.
Våga lita på att vi är välvilliga när vi bedömer era redovisningar! Och lägg energin på att lära er så mycket som möjligt om databasmodellering! :)

26 februari:Jag har fått frågor från studenter som är oroliga inför tentan.
Den första undran är varför kraven för C är så höga. Svar: Tentan testar bara det allra mest grundläggande - inga specialfall eller kuggfrågor. Har man uppfyllt betygskriterierna för C (se längst ner på denna sida) kommer man klara alla uppgifter på tentan - med reservation för att man gör slarvfel förstås. Om tentaresultaten inte bedöms reflektera studenternas nivå, tex om många studenter missförstår en speciell formulering, kommer vi naturligtvis att gå igenom rättningarna och göra en ny bedömning, så att betyget ni får på tentan bedöms motsvara den nivå ni är på i betygskriterierna.
Den andra undran är vad som händer om man inte får det betyg man vill ha på tentan. Svar: Både tenta och munta kommer gå igen i juni, och det går bra att tenta upp betyget om man fått D eller E nu i mars, och sen munta ett par dar efter tentan. Om man fått C nu i mars, behöver man inte tenta om, utan kan boka en munta i juni.

24 februari: En fiktiv tentamen ligger nu under Tentamen i menyn, som en hjälp för er när ni tentapluggar. Observera att formen på talen kan komma att skilja sig på den riktiga tentan. Ett effektivt sätt att plugga är därför att göra övningarna i boken - inte att lära sig typtalen på den fiktiva tentan. Information om den muntliga kompletteringen kommer 12 mars.

24 februari: Laboration 2 kommer först nästa vecka - men innan datorsalstiden.

15 februari: Laboration 2 kommer först nästa vecka, efter Föreläsning 7 som handlar om normalisering. Den ska redovisas i period 4, 23 mars. Ämnet för Laboration 2 är just modellering och normalisering, vilket gör att en jättebra förberedelse denna vecka är att skumläsa bokens kapitel 3 och 4.

10 februari: Meddelande om bedömning av Lab 1: Många är oroliga för att bli kuggade på betygshöjande uppgifter, och mailar mig och vill ha exakta specifikationer på vad de ska göra på varje uppgift. Anledningen till att vi INTE har det, är att vi tror att ni lär er mer av att läsa självständigt i boken och lösa fria uppgifter, än att följa ett mekaniskt "recept" och presentera lösningarna på exakta deluppgifter.
Min tolkning av detta är att många är oroliga att bli underkända på oklara grunder. Jag har förstått att detta hänt i några av höstens kurser.
Det kommer inte hända i denna kurs. I.o.m. att vi har såpass öppna frågeställningar på labben, kommer vi inte ställa kuggfrågor och gå in på specialfall. För D ska ni ha förstått principerna för injektioner. För C ska ni ha förstått principerna för transaktioner. För B ska ni ha förstått principerna för index. För A ska ni ha förstått principerna för algebraisk frågeoptimering. Inte mer (eller mindre) än så.
Vår grundinställning är att ni ska uppnå det betyg ni föresatt er. Om ni
1) läst och förstått huvuddragen i teorin bakom frågan, och
2) gjort ett ärligt försök att lösa uppgiften (men kanske gjort ett mindre fel här och där)
kommer ni få godkänt.
Våga lita på att vi är välvilliga när vi bedömer era redovisningar! Och lägg energin på att lära er så mycket som möjligt om databasprogrammering! :)

9 februari: Man kan nu boka tid för redovisning av lab 1. Tryck här för att hämta bokningslistor:

9 februari: Bugg i create.sql fixad.

8 februari: För att göra det enkelt ifråga om SQL-injektioner (uppgift för betyg D i Lab 1 Task 2): Ert program ska fungera så att användaren inte har någon som helst möjlighet att exekvera SQL-kommandon. För att få D eller högre betyg är det alltså INTE tillåtet att ta emot strängar från användaren som innehåller SQL, inte ens om strängarna parsas.

30 januari: Anteckningar från första övningen finns nu i schemat. (Vi publicerar anteckningar från föreläsningar och övningar efter lektionen, för att göra det möjligt att involvera studenterna i lösningen av uppgifter - svaret står ju ofta längre ner i anteckningarna.)

30 januari: Några små buggar fixade i Interface.java - den nya versionen finns i kurskatalogen.

26 januari: Ytterligare en ändring i Laboration 1: Formulerinar om frågeoptimering är nu lite tydligare i Task 2, det är nu klargjort att ni inte bara ska optimera frågorna utan även beskriva hur det går till - inte i detalj med alla regler, men ni ska kunna förklara i stora drag. Det är också angivet att extra läsning krävs för frågan, för att förstå hur optimering går till. (Förmåga till egen informationshämtning är något vi alltså förväntar oss för A.) Exempelvis kan ni läsa kapitel 16 i kursboken.

22 januari: Ytterligare en ändring i Laboration 1: Formulerinar om transaktioner är nu lite tydligare i Task 2, och pythonkoden i kurskatalogen är uppdaterad.

20 januari: Ytterligare en ändring i Laboration 1: Värdena i fråga 8 ska vara "136.15 or -12789.85". Detta är ändrat i lablydelsen.

19 januari: Ytterligare en ändring i Laboration 1: "Computers" ska bort ur svaret på fråga 10. Detta är ändrat i lablydelsen.

17 januari: Det är små ändringar i lydelsen till Laboration 1. Om du redan har skrivit ut den, hämta den nya versionen under Laborationer i menyn.

17 januari: Info har lagts till under Kurslitteratur nedan, för de som vill använda en annan upplaga eller annan kursbok än Garcia-Molina et al., 2:a upplagan.

9 januari: Lydelsen till Laboration 1 ligger nu på hemsidan under Laborationer i menyn.

17 oktober: Hemsidan är nu uppe. Michael Minock och jag håller på att omstrukturera databasundervisningen för D, så att ni erbjuds en grundkurs DD1368 som ger en allmän orientering om databaser för de som vill lära sig arbeta med databassystem och sätta upp mindre databaser, samt en fortsättningskurs DD2471 som ger djupare kunskaper för de som vill lära sig konstruera stora databassystem. Grundkursen kommer ges i sin nya form i år, fortsättningskursen ges första gången i sin nya form 2013.
SU-studenter som läser kursen DA3003 följer DD1368 och gör dessutom en extra projektuppgift. DA3003 passar även den bra att kombinera med DD2471.

Lärandemål

Efter genomförd kurs ska du 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,
  • använda frågespråk för att formulera frågor samt beskriva den matematiska bakgrunden för frågespråk,
  • 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. Transaktionshantering. Översikt över olika modeller för datarepresentation. Laborationer utförda på experimentella och kommersiella system.

Kurslitteratur

  • H. Garcia-Molina, J. D. Ullman and J. Widom, Database Systems: The Complete Book, 2:a upplagan, Pearson, 2009.

Boken kan köpas på Kårbokhandeln eller på din favoritbutik på nätet, och hittas med ISBN 9780131354289. Samma bok kommer också användas i fortsättningskursen DD2471 Moderna databassystem och databastillämpningar fr.o.m. 2013.

Det går också bra att använda en annan bok, t.ex. äldre upplagor av Garcia-Molina et al., eller böckerna av Elmasri et al. eller Silberschatz et al., som innehåller ungefär samma information fast ibland i annan ordning. Du ansvarar då själv för att leta upp lämpliga avsnitt att läsa inför varje föreläsning. Som hjälp kan du titta i innehållsförteckningen till den rekommenderade kursboken, och hitta motsvarande avsnitt i din egen bok.

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 finns under Schema i menyn.

Examination

Kursmoment

Kursen examineras genom:
  • Datorlaborationer (3 hp). Datorlaborationerna utförs i grupper om 2 studenter, och examineras löpande vid datorsalsövningar i period 3 och 4. Betyg (normalt samma för alla gruppmedlemmar): A - F.
  • Skriftlig tentamen (3 hp). Tentamen består av en 2 timmar lång skriftlig teoritentamen, i vissa fall följt av en muntlig kompletterande tentamen, och äger rum efter period 3. Betyg: A - F.

Detaljer om de två kursmomenten finns under Laborationer och Tentamen i menyn.

SU-studenter som läser kursen DA3003 7,5 hp gör samma moment och utöver det ett projekt om 1,5 hp (P/F). För mer detaljer, kontakta Hedvig Kjellström (se Lärare i menyn).

Betyg

Kursbetyget beräknas enligt följande (LB = laborationsbetyg, TB = tentamensbetyg): För godkänt betyg på kursen måste båda examinationsmomenten vara godkända. Det sammanlagda kursbetyget är medelvärdet av LB och TB, enligt följande:

LB
A
B
C
D
E
TB
A
A
A
B
B
C
B
A
B
B
C
C
C
B
B
C
C
D
D
B
C
C
D
D
E
C
C
D
D
E

Betygskriterier för de olika delarna av kursinnehållet är:

Lärandemål E D C B A
Förklara ett databas- hanteringssystems funktion och uppbyggnad. Benämna de olika komponenterna i ett databas- hanteringssystem. Förklara hur information lagras i ett (relationellt) databas- hanteringssystem. Förklara hur information utvinns ur ett (relationellt) databas- hanteringssystem. Förklara vilka egenskaper relationsschemat bör ha i ett (relationellt) databas- hanteringssystem. Förklara hur ett (relationellt) databas- hanteringssystem är uppbyggt, och hur den logiska representationen är oberoende av den fysiska.
Examineras med tentamen.
Diskutera för- och nackdelar med olika databasmodeller. Beskriva hur en XML-struktur är uppbyggd, och formulera enklare frågor i XQuery. Beskriva skillnaden mellan en XML-struktur och ett relationsschema, och formulera sammansatta frågor i XQuery. Beskriva skillnaden mellan en XML-struktur och ett relationsschema, beskriva hur ett XML-schema är uppbyggt, och formulera sammansatta frågor i XQuery. Beskriva skillnaden mellan semistrukturerade och relationella datamodeller, förklara när den ena eller andra är lämplig, och formulera sammansatta frågor i XQuery. Givet en datamängd, välja mellan semistrukturerad eller relationell datamodell samt motivera valet, och formulera sammansatta frågor i XQuery.
Examineras med laboration 3 och tentamen.
Modellera och strukturera data med hänsyn till aktuella restriktioner, förklara hur olika restriktioner påverkar databasstrukturen. Designa ett enkelt relationsschema med E/R-diagram givet en textuell beskrivning av data. Definiera funktionella beroenden från en textuell beskrivning, och designa ett enkelt relationsschema med E/R-diagram som följer dessa beroenden. Definiera funktionella beroenden från en textuell beskrivning, redogöra för hur funktionella beroenden kan användas för normalisering. Definiera funktionella beroenden från en textuell beskrivning, och normalisera en datastruktur till 3NF eller BCNF enligt dessa beroenden. Definiera funktionella beroenden från en textuell beskrivning, normalisera en datastruktur till 3NF och BCNF enligt dessa beroenden, och redogöra för skillnaderna mellan 3NF och BCNF.
Examineras med laboration 2 och tentamen.
Använda frågespråk för att formulera frågor samt beskriva den matematiska bakgrunden för frågespråk. Formulera enklare frågor i SQL. Formulera sammansatta frågor i SQL. Formulera sammansatta frågor i SQL, samt beskriva grunderna för relationsalgebra. Redogöra för de matematiska grunderna för SQL och formulera komplicerade frågor i SQL, beskriva vyer, begränsningar och triggers, samt redogöra för hur index används för att göra sökningar snabbare. Formulera frågor i SQL som är optimerade med hänsyn till datastrukturen, samt redogöra för hur vyer, begränsningar och triggers används för att göra en databas mer robust.
Examineras med laboration 1 och tentamen.
Skriva inbäddade SQL-satser i ett tredjegenerationens programspråk. Skriva ett enkelt tillämpnings- program i Java eller Python. Skriva en enkel tillämpning som är skyddad mot enklare attacker, som SQL-injektioner. Skriva en enkel, skyddad tillämpning som använder sig av transaktioner.
Examineras med laboration 1.

Copyright © Sidansvarig: Hedvig Kjellström <hedvig@nada.kth.se>
Uppdaterad 2012-06-20