Databaser 15p Webbutvecklare

From Juneday education
Jump to: navigation, search

TODO

  • Kontrollera att datumen stämmer, antal lektioner samt att lovet verkligen är ett lov.
  • Bekräfta sista lektion
  • Bestäm om det skall vara två eller tre inlämningar samt vilka deadlines som verkligen gäller!
    • Förslag: Två obligatoriska inlämningar och en frivillig labb (t ex systembolaget plus PHP) - måste synkas med Vincent
  • Hantera att schemat bygger på att varannat datum är heldag och varannat är halvdag medan vi endast har halvdagar på yrgo!!!
    • Detta innebär att varannat datum i schemat nedan förmodligen har för mycket innehåll - hur hantera?
    • Beroende på elevernas Bash-kunskaper så kan vissa Bash-moment strykas till förmån för databasteori
  • Hantera vad göra i stället för JDBC t ex med SQL injections t ex PHP (men med gästföreläsare i så fall?)

Kurslitteratur

Huvudbok - Introduction to databases

Den bok vi kommer syssla mest med är Introduction to Databases där vi lär oss att använda SQLite3 som databashanterarare och grunderna i språket SQL. Emellertid är alla övningar, exempel och inlämningsuppgifter skrivna utifrån att vi använder bash (i t ex Cygwin eller terminalen i Mac OS), så det finns inslag i schemat som länkar till andra böcker, så som Bash introduction.

Examination

Inlämningsuppgifter

Det ingår ett antal obligatoriska inlämningsuppgifter i kursen. På dessa ges endast betyget IG eller G VG.

För att få VG på kursen måste man ha VG på alla inlämningsuppgifter.

Inlämningsuppgifterna innehåller ibland inslag som inte gåtts igenom på föreläsningarna. I förekommande fall så ges information i texten eller/och via externa länkar. Inlämningsuppgifterna är på engelska men finns att få på svenska vid förfrågan.

Uppgifterna rättar vi med skript, så det är väldigt viktigt att ni följer instruktionerna till punkt och pricka. I synnerhet är det viktigt att ni följer instruktionerna om vad filer som skall lämnas in skall heta. Skapa filer med exakt de namn som anges i inlämningsuppgifterna. Tänk på att bash gör skillnad på stora och små bokstäver, så filnamnen måste matcha instruktionerna exakt. Ni förväntas arbeta med inlämningsuppgifterna även mellan lektionstillfällena och vi rekommenderar att ni formar studiegrupper som arbetar tillsammans och samlar ihop eventuella frågor till samlingar i klassrummet då vi kan gå igenom frågorna gemensamt.

Om studietakten och studieteknik

Lektioner ges med en halvdag (torsdageftermiddagar) i veckan utsträckt över cirka 11 veckor. Utöver detta förväntas ni lägga minst lika mycket tid på studier och arbete med inlämningsuppgifter. Vi rekommenderar att ni ordnar studiegrupper där ni träffas i skolan och arbetar med övningar och inlämningsuppgifter tillsammans och samlar på er frågor kring moment som ni inte förstår eller klarar av. Det kommer finnas gott om tid för laborationer och övningsarbete på lektionstid men för att vara så effektiva som möjligt är det bra om ni samlar på er frågor som vi kan gå igenom gemensamt under laborationstillfällena. Det är således ingen bra idé att arbeta hemifrån under schemalagda arbetspass, eftersom man får handledning och genomgång av svårigheterna under laborationspassen.

Se schema för upplägget i stora drag.

Ni förväntas förbereda er inför varje schemalagd föreläsning genom att se filmerna och läsa länkar som ges för vidaresläsning. Det framgår i schemat vilka kapitel/sidor mm som gås igenom respektive teoripass.

De pass i schemat som benämns "Övningar" är lärarledda laborationspass då vi dels handleder och hjälper till men också då vi går igenom frågor som ni samlar på er under självstudier utanför schemat. Återigen, detta gör att det INTE är rekommenderat att utebli från övningspassen, eftersom det där tas upp spontan genomgång av koncept som ni upplever som svåra. Uteblir man från övningspassen så kan man räkna med att missa teorigenomgångar som drivs av önskemål från er.

Kort sagt, kursens upplägg bygger på att ni närvarar på samtliga schemalagda pass samt lägger ned lika mycket tid på studier och arbete utanför schemalagda pass. I gengäld så har ni möjlighet att förbereda er och repetera med hjälp av filmerna. Ni har också möjlighet att styra innehållet i eventuella extragenomgångar på övningspassen.

Grovplanering 2017

Torsdag den 28/9

Mål för dagen

Alla ska

  • ha installerat SQLite på sina datorer
  • ha grundläggande förståelse för begreppen SQL, databas och databashanterare
  • ha introducerats till bash-skalet
  • ha grundläggande förståelse för SELECT-satsen i SQL
  • ha förstått upplägget på wikin

Förberedelser (helst innan dagen - men det är första dagen så...)

Se filmena:

För er som är osäkra på bash (kommandotolken):

  • Using bash: (eng) Längd: 01:52
  • File system and bash: (eng) Längd: 07:36
  • Introduktion till Bash (Swe) Längd: 14:06

Pass 1

Pass 2

Här säkerställer vi att ni har nödvändig programvara i er datormiljö samt smygstartar med en titt på databaser.

Övningarna på första databaskapitlet är egentligen en självtest på lite terminologi och inte övnignar per se.

Pass 3

Torsdag den 5/10

Mål för dagen

Alla ska:

  • Vara bekväma med att arbeta med textfiler i bash
  • Vara bekanta med omdirigering av standardströmmar i bash
  • Kunna starta SQLite interaktivt och via omdirigering av strömmar
    • Starta med argument av en databas sqlite3 my_database
    • Starta med omdirigering av stdin från fil sqlite3 my_database < my_sql_commands.sql
    • Starta med en pipe från tidigare kommando cat my_sql_commands | sqlite3 my_database

Förberedelser innan denna dag

Tänk på att ju fler som ser filmerna, desto snabbare kan vi köra föreläsningen och desto bättre frågor har ni att ställa.

Se följande filmer om bash (kanaler på vimeo):

Lista på enstaka filmer att se:

  • Grep: (eng) Längd: 2:46
  • Sort: (eng) Längd: 1:57
  • Zip and unzip: (eng) Längd: 4:26
  • Zcat and zgrep: (eng) Längd: 2:24
  • Bash - arbeta med textfiler 1/3 (Swe) Längd: 10:09
  • Bash - arbeta med textfiler 2/3 (Swe) Längd: 8:37
  • Bash - arbeta med textfiler 3/3 (Swe) Längd: 3:53
  • Redirects: (eng) Längd: 6:37
  • Redirecting stdin - read from file instead of keyboard: (eng) Längd: 6:29
  • Bash omdirigering 1/2 (Swe) Längd: 6:06
  • Bash omdirigering 2/2 (Swe) Längd: 1:36

Läs igenom följande presentationer (bekanta er med orden)

Se följande filmer om SQLite:

Pass 4

Föreläsning:

Övningar:

Föreläsning

Pass 5

Resten av dagen vigs åt övnignar i bash och SQLite3

Bonus för de som vill ha mer om bash:

Extra

Om vi hinner:

För referens:

Typer i MariaDB

När ni går över till att använda MariaDB så kan ni kolla på länken ovan för att läsa på vad för typer som finns för kolumner och uttryck i den databasen. Det är betydligt fler än vad som finns i SQLite3 som används i denna kurs. Spar länken som referens för framtiden.

Tips till er som kör Atom/Sublime:

Se till att ni kan starta Atom eller Sublime från terminalen. Det underlättar enormt när ni ska skapa filer i någon katalog. Ni kan då stå i t ex hemkatalogen och skapa en fil i databaskurs/ som heter test.sql på följande vis:

$ atom databaskurs/test.sql

I exemplet ovan, så startar atom och skapar filen på rätt ställe när ni sparar. Om filen redan finns (t ex nästa dag när ni vill fortsätta med filen), så öppnas atom med den filen uppe för redigering. Samma gäller Sublime.

För att detta ska vara möjligt, så måste ni ha sökvägen till atom eller sublime i er PATH. Det är lite olika hur man sätter PATH i Windows med Cygwin, Windows med Ubuntu for windows och i Mac OS. Konsultera en klasskamrat, en lärare eller en sökmotor för att ta reda på hur man gör. Vi har en del information på sidan Editor.

Torsdag den 12/10

Mål för dagen

Alla ska:

  • Ha grundläggande kunskaper i att förändra data med SQL:
    • UPDATE - uppdatera kolumner i rader
    • DELETE - radera rader
    • INSERT - lägga till nya rader
  • Vara medvetna om inlämning 01

Förberedelser

Se följande filmer:

  • SQL UPDATE - Ändra data (Swe) Längd: 10:24 Motsvarande föreläsnings-PDF Changing Data - SQL UPDATE (Eng)
  • SQL UPDATE - Ändra data livekodning (Swe) Längd: 14:21
  • SQL DELETE - Radera rader av data (Swe) Längd: 07:02 Motsvarande föreläsnings-PDF Deleting data - SQL DELETE (Eng)
  • SQL DELETE - Radera rader av data livekodning (Swe) Längd: 17:02
  • Databaser 06 - SQL - INSERT - Lägga till rader med data (Swe) Längd: 06:49 Motsvarande föreläsnings-PDF (Eng)
  • Databaser 06 - SQL - INSERT - Lägga till rader med data livekodning (Swe) Längd: 12:29

Pass 6

Pass 7

Pass 8

Övrigt

  • Handledning Assignment 1

Torsdag den 19/10

Pass 9

Genomgång inför inlämning 1 och snabb repetition för dem som vill, arbete med inlämning 1 för övriga.

Avklarade kapitel och ämnen som ingår i inlämning 1:

  • SELECT
  • UPDATE
  • DELETE
  • INSERT
  • Create table from file using redirect

OBS! Deadline är nästa pass! Ni kommer behöva arbeta även under dagarna inför nästa pass. Sätt igång med inlämning 1 så fort ni kan.

Onsdag den 25/11 kl 23.55

Deadline inlämning 1. Inga lektioner (det är ju onsdag!).

Torsdag den 26/10

Mål för dagen

Alla ska

  • Vara medvetna om inlämning 2
  • Känna till grunderna för SQL JOIN

Förberedelser

Se:

Pass 10

Pass 11

Torsdag den 2/11

Filmer att se innan denna dag

  • Constraints - Begränsningsvillkor 1/2 (Swedish) längd: 12:25
  • Constraints - Begränsningsvillkor 2/2 (Swedish) längd: 12:23

Läs igenom:

Frivillig läsning: Ni kommer använda MariaDB i kommande kurser. Vissa saker skiljer sig lite från SQLite. Här är lite extra läsning som ni kan gå tillbaka till i kommande kurser!

Pass 12

Resten av dagen - handledning Inlämning 2

Om tid finns över och intresse hos eleverna finns

För referens: Ni kommer använda MariaDB i kommande kurser. Här är lite referensmaterial för sådant som skiljer sig lite mellan SQLite och MariaDB vad gäller constraints:

Torsdag den 9/11

Mål för dagen

Alla ska

  • Vara bekanta med hur man kan skrapa data från en webbsida
  • Hur man kan lagra sådan data i en databas
  • Ha kommit igång med inlämning 2 (scraping data ingår inte i den)

Föreberedelser

Pass 13

Föreläsning Scraping data - an example with municipalities Föreläsnings-PDF (26 sidor)

  • Vi visar hur man kan hämta data från en webbsida och med lite bash-kunskaper skapa en databas med data från webbsidan.

Pass 14

Kapitel i databasboken

Presentation assignment 2

Handledning och frågor om uppgiften.

Torsdag den 16/11

Lov

Ingen lektion denna vecka.

Ni bör dock arbeta på inlämning 2!

Torsdag den 23/11

Mål för dagen

  • Vi är i princip klara med "all" teori kring databaser, så denna dag är mer fördjupning - så ett mål är att ni ska känna er fördjupade
  • Att ni har reflekterat lite om problemlösning
  • Att ni har en överblick över extramaterialet vi skrivit för er, som visar på vissa skillnader mellan MariaDB/MySQL och SQLite
  • Att ni har koll på grunderna i HTTP
  • Att ni har sett kod som via PHP läser in data från en databas och presenterar dessa data som HTML
  • Att alla har koll på inlämning 2 och vad den kräver och innebär (säg till annars!!!)

Pass 15

  • Get a random value from an array in PHP
  • Introduktion till MariaDB infor kommande kurser
    • Getting started with MariaDB (18 sidor) - Extra material for students/readers who wish to learn also a little about MariaDB/MySQL (examineras inte, Bonus!)
    • Overview of extra pages with comparisons between SQLite3 and MariaDB
  • Introduktion till HTTP, Kopplingen Databas och webb osv (ingår inte i inlämningsuppgiften, examineras inte - Bonus!)
    • HTTP - Slides - introduction to HTTP
    • Vi visar kod igen för koppa upp sig mot en databas från SQLite3
    • Övning: Skriv en databas med några tabeller och värden. Skriv en PHP-sida som visar tabellernas innehåll som HTML
    • Övning (överkurs): Skriv ett formulär som låter användaren ge några kriterier för databasfrågan
    • Övning (överkurs): Gör så att php-sidan inte är känslig för SQL-injections

Angående inlämning 2

  • Chans att jobba med inlämning 2 samt ställa frågor
  • Moduler avklarade: RELATIONER, CONSTRAINTS,MUNICIPAL EXAMPLE DATABASE (Scraping)
  • Inlämning 2 heter: Assignment 2 - JOINs and Constraints
  • Inlämningsuppgiften innehåller delar från alla SQL-kapitel men inte PHP-DB

Torsdag den 30/11

  • To be decided - Kom gärna med önskemål!

Filmer att se innan denna dag

  • Inga ännu

Eventuellt

  • Förslag: Upphovsrätt och licenser (t ex för fri programvara/open source)
  • Förslag: Ni får en databas med systembolagets alla produkter från lärarna. Ni skriver en PHP-sida som presenterar produkterna i en tabel.
    • Överkurs: Man ska kunna filtrera produkterna på t ex max pris
  • Föreläsning SQL-Injections TODO: Skriv SQL-injection som inte är Java-specifik (PHP? Bash? XYZ???)
  • Övningar SQL-Injections - Länk till övningskapitlet: TODO: skriv övningar i SQL injections som inte är Java-specifika!
    • Finns ett proof-of-concept för PHP med SQL-injection vulnerability (på Rikards laptop)

Onsdag 6/12 Deadline Assignment 2

Inga lektioner (det är ju onsdag) men glöm inte bort att deadline för assignment 2 är idag kl 23.55!

Torsdag den 7/12

Sista lektionen. To be decided. Kom gärna med önskemål!

Filmer att se innan denna dag

  • Inga ännu

Eventuellt

Förslag: Gästföreläsnign - Databaser från PHP? Kolla med Vincent!

  • Eventuellt: gästföreläsning PHP och databas samt övning
  • Föreläsning SQL-Injections TODO: Skriv SQL-injection som inte är Java-specifik (PHP? Bash? XYZ???)
  • Övningar SQL-Injections - Länk till övningskapitlet: TODO: skriv övningar i SQL injections som inte är Java-specifika!

Översikt, material

Kapitel Antal sidor
(vid utskr)
Artefakter
Database:Introduction to Databases 3 pages (Text: 3 pages, Slides: 8 pages, Swedish Video: 16 minutes)
Database:Exercise - Introduction to Databases 3 pages 5 Exercises
Database:Retrieving rows of data - SQL SELECT 2 pages (Text TODO, Slides: 23 pages, Video: 27 minutes)
Database:Exercise - Retrieving rows of data - SQL SELECT 3 pages 7 Exercises
Database:Getting started with SQLite 2 pages (Text TODO, Slides: 13 pages, 2 Swedish Videos: 23 + 16 minutes)
Database:Exercise - Getting started with SQLite 7 pages 10 Exercises
Database:Changing rows of data - SQL UPDATE 2 pages (Text TODO, Slides: 10 pages, Swedish Video: 24 minutes)
Database:Exercise - Changing rows of data - SQL UPDATE 4 pages 6 Exercises
Database:Deleting rows of data -SQL DELETE 2 pages (Text TODO, Slides: 6 pages, Swedish Video: 7 minutes)
Database:Exercise - Deleting rows of data -SQL DELETE 4 pages 5 Exercises
Database:Adding rows with new data - SQL INSERT 2 pages (Text TODO, Slides: 5 pages, 2 Swedish Videos: 7 + 12 minutes)
Database:Exercise - Adding rows with new data - SQL INSERT 7 pages 7 Exercises
Database:Assignment 1 - The basics 8 pages (Text Done! Files uploaded to Github.com Done!)
Database:Combining rows of data from related tables - SQL JOIN 2 pages (Text TODO, Slides: 15 pages, Video: 24 minutes)
Database:Exercise - Combining rows of data from related tables - SQL JOIN 11 pages 12 exercises
Database:Adding constraints to prevent garbage data 2 pages (Text TODO, Slides: 23 pages (English), 2 Videos: 12 + 12 minutes)
Database:Exercise - Adding constraints to prevent garbage data 10 pages 6 exercises
Database:Scraping data from the web 2 pages (Text TODO, Slides: 26 pages, 4 Videos: 7 +6 + 6 + 8 minutes)
Database:Exercise - Scraping data from the web 12 pages 5 exercises
Database:Assignment 2 - JOINs and Constraints 9 pages (Text Done! Files uploaded to github)
Totalt antal 97 text pages 9 slides of totally 129 pages, 15 videos of totally 207 minutes,
9 exercise chapters with a total of 63 exercises