- Richard Feynman -
Databaser 15p Webbutvecklare
Contents
- 1 TODO
- 2 Kurslitteratur
- 3 Examination
- 4 Om studietakten och studieteknik
- 5 Grovplanering 2018
- 5.1 Tisdag den 25/9
- 5.2 Tisdag den 02/10
- 5.3 Tisdag den 09/10
- 5.4 Tisdag den 16/10
- 5.5 Måndag den 22/10 kl 23.55
- 5.6 Tisdag den 23/10
- 5.7 Tisdag den 30/10
- 5.8 Tisdag den 6/11
- 5.9 Tisdag den 13/11
- 5.10 Tisdag den 20/11
- 5.11 Måndag 26/11 Deadline Assignment 2
- 5.12 Tisdag den 27/11
- 5.13 Översikt, material
TODO
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. (Kontrollera med Vincent.)
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 (tisdageftermiddagar) i veckan utsträckt över cirka 10 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 2018
Tisdag den 25/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:
- Introduktion till databaser Längd: 16:02 Motsvarande PDF: Presentation (PDF)
- SQL SELECT Videoföreläsning om att hämta data Längd: 27.05 Motsvarande PDF: Föreläsnings-PDF
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
- Föreläsning: Introduktion och presentation av kursen
- Introduktion till databaser: (Föreläsningsbilder: Presentation (PDF)) (8 sidor)
- Övningar: Installation av Cygwin (för windowsanvändare) och SQLite3 (gemensam aktivitet)
- Följ instruktionerna här: Introduction_to_Databases#Your_environment (särskilt instruktionerna om "additional software")
- Verifiera att ni kan köra följande i terminalen:
- wget
- curl
- unzip
- Om du inte kan köra wget, curl, unzip, läs sidan igen och följ instruktionerna här Using_bash#Install_additional_software för att installera de programmen (de behövs för skriptet nedan)
- Kör skriptet som länkas på sidan ovan (här: Introduction_to_Databases#Download_script_and_execute)
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.
- Introduktion till Cygwin och bash
- Övningar Bash Bash introduction(om ni känner er hemma på Bash, gå direkt till databasövnignen!)
- Övningar Databas-intro: Ex01 Introduction Exercise Introduction to databases
Övningarna på första databaskapitlet är egentligen en självtest på lite terminologi och inte övnignar per se.
Pass 3
- Föreläsning SQL SELECT (retreiving data) Slide: Föreläsnings-PDF (23 sidor)
- Kapitel i databasboken: Retrieving data - SQL SELECT
- Övningar SELECT (endast teori) Exercise SQL SELECT
- Gå igenom SQLite-manualens syntaxdiagram t ex SELECT core
Tisdag den 02/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
- Starta med argument av en databas
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.
'Bonus: Här finns ett kompendium om att arbeta i terminalen med skalet Bash med mera: Datorkunskap för IT-studenter.pdf . Det kommer att gå att köpa men studenter på Yrgo Webbutvecklare 2018 kan få PDF-versionen (betaversion) kostnadsfritt att använda som bredvidläsning.
Se följande filmer om bash (kanaler på vimeo):
- Bash text files: (eng) (Swe)
- Redirection (eng) Omdirigering (Swe)
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)
- Presentation Text files
- Presentation Bash - redirecting streams
Se följande filmer om SQLite:
- Kom igång med SQLite3 (Swe) Längd: 22:56 - Motsvarande presentation (PDF) Getting started with SQLite3 (Eng)
- Kom igång med SQLite3 Live-kodning (Swe) Längd: 16:12
Pass 4
Föreläsning:
- Text files (9 sidor) och
- Bash - redirecting streams (12 sidor)
Övningar:
Föreläsning
- Getting started with SQLite3 PDF (13 sidor)
Pass 5
Resten av dagen vigs åt övnignar i bash och SQLite3
- Övningar Exercise - Getting started with SQLite
- När ni är klara, se övning nr 9 som ber er att göra om SELECT övningarna fast med en riktig databas denna gång.
- Fortsätt med bashövningarna från förmiddagen om ni blir klara med SQLite3-övningen
Bonus för de som vill ha mer om bash:
- Vill ni ha mer bash, se filmerna och gör övningarna här Bash standard streams
Extra
Om vi hinner:
För referens:
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.
Tisdag den 09/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
- Föreläsning - PDF: Changing Data - SQL UPDATE (10 sidor)
- Kapitel i databasboken: Changing rows of data - SQL UPDATE
- Övningar SQL UPDATE: Exercise - Changing rows of data - SQL UPDATE
Pass 7
- Föreläsning - PDF: SQL DELETE (6 sidor)
- Kapitel i databasboken Deleting rows of data -SQL DELETE
- Övningar SQL DELETE: Exercise - Deleting rows of data -SQL DELETE
Pass 8
- Föreläsning - PDF: SQL INSERT (5 sidor)
- Kapitel i databasboken Adding rows with new data - SQL INSERT
- Övningar INSERT: Exercise - Adding rows with new data - SQL INSERT
- Presentera/påminn om Assignment 1 - The basics - Deadline 22/10. Eleverna uppmuntras sätta fart med den.
Övrigt
- Handledning Assignment 1
Tisdag den 16/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.
Måndag den 22/10 kl 23.55
Deadline inlämning 1. Inga lektioner (det är ju måndag!).
Tisdag den 23/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:
- Databaser 07 - Koppla ihop data från tabeller som hör ihop (Swe) Längd: 24:08 - Motsvarande föreläsnings-PDF: Related data in related tables (Eng)
Pass 10
- Föreläsning om JOIN Related data in related tables (Eng) (15 sidor)
- Kapitel i databasboken: Combining rows of data from related tables - SQL JOIN
- Övningar SQL JOIN
Pass 11
- Fortsätt med Övningar JOIN
Tisdag den 30/10
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:
- Slides for the Constraints lecture and films: (English PDF)
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!
- MariaDB constraints triggers (ni behöver inte förstå allt, men läs igenom det)
- Enum in MariaDB (ni behöver inte förstå allt, men läs igenom det)
Pass 12
- Föreläsning Constraints (23 sidor)
- Kapitel i databasboken: Adding constraints to prevent garbage data
- Övningar begränsningsvillkor (constraints): Exercise - Adding constraints to prevent garbage data
- Föreläsning Short presentation on CREATE TABLE syntax (PDF) (5 sidor) Hur skapar man egentligen egna tabeller? - en kort introduktion med vidareläsningslänkar
- Bonusföreläsning (om vi hinner) Simulating enum types in SQLite as a form of constraint (PDF/extra lecture) (6 sidor)
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:
- Läsning för referens: MariaDB constraints triggers hur man använder constraints i MariaDB
- Läsning för referens: Enum in MariaDB hur man använder Enum i MariaDB
Tisdag den 6/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
- Databaser - utvinna data från webben "Scraping data"
- Fyra filmer i kanalen ovan. Längd på filmerna: 7:22 + 5:49 + 6:23 + 7:51
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
- Övningar Scraping data from the web Hämta TV-tablå från tv.nu
Kapitel i databasboken
Presentation assignment 2
- Länk till inlämningsuppgiften: Assignment 2 - JOINs and Constraints (Deadline 26/11)
Handledning och frågor om uppgiften.
Tisdag den 13/11
- Here's the file kommuner-raw which we used to extract the municipality URLs. (eftersom det blev lite fel)
Pass 15
Genomgång inför inlämning 2 och snabb repetition för dem som vill, arbete med inlämning 2 för övriga.
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
Tisdag den 20/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 16
- 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
- Vimeo channel (5 videos)
- examples and exercises
- Elever: Ni ska installera libwww-perl och köra HEAD GET POST osv. Även telnet och curl kan vara användbart.
- Vi visar kod igen för koppa upp sig mot en databas från SQLite3
- Källkod finns här: Github
- Ö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
- HTTP - Slides - introduction to HTTP
- 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 (PDF)
- Ö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 Github.com
Måndag 26/11 Deadline Assignment 2
Inga lektioner (det är ju måndag) men glöm inte bort att deadline för assignment 2 är idag kl 23.55!
Tisdag den 27/11
Några exempel på php mm
Här är några korta exempel (kan komma att ändras, förbättras eller läggas till fler):
- Upload image (litet exempel med många brister men ett exempel ändå) samt litet skript som gör POST av fil med curl till php-skriptet
- Litet login-exempel med många brister (bara för att visa er hur man kan använda script) - databasen har lösenord i klartext ;-)
- create-user-login på vår github Kollar om användaren redan finns, login kollar om användarnamn och lösenord stämmer, några skript också
- Litet image processing-exempel (imagemagick) för att skapa thumbnails av stora bilder, skapa HTML från bash
- image-processing på vår github
- Se även PHP-versionen av imagemagick: PHP.net
Ö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 |