Webbprogrammering, grundkurs 725G54
Bootstrap jquery SEO RWD MuddyCards. Tidigare
Muddycards Många positiva kommentarer Ibland för högt tempo på föreläsning Lägg ut labbar tidigare Mer föreläsningar (2 st om PHP) Handledning kan i vissa fall bli bättre Mer utspridd handledning Studenter från andra kurser i pul Otydligt om hur man kommer igång Otydligt vem som är labbass G-huset Tung parallell kurs Labbar till 19.
Handledning Tisdagar, 13-17, 3-5 st Onsdagar, 08-10, 0 st Onsdagar, 10-12, 2 st Undantag: Onsdag 29, 8-12, 4 st Torsdagar, 13-15, 3-5 st Torsdagar 15-17, 2-4 st Fyll PUL från lägst nummer - labbass kommer flytta på dem som inte ska vara där.
Labbuppstart Iterativ metod / XP Gör något litet Kolla att det funkar Välj något nytt litet Osv Vattenfall Gör skiss/plan över vad som ska göras Välj ut liten bit att bygga Kolla att det funkar Välj ny bit Osv
Labbuppstart Poängen är att dela upp i mindre delar Känns delarna svåra att hantera så dela upp ytterligare Viktigt att lära sig för problemlösning, programmering, projektarbeten.
Databaser ERD SQL MySQL PHP + MySQL phpmyadmin. Idag
Laboration 4 Börja idag Gästbok eller klotterplank Använd det ni lärt er tidigare + MySQL Validera data från användare med PHP och jquery Föreläsning om jquery-validering som video Deadline: 5/5.
Laboration 5 Gör ERD och tabeller för mindre domän Universitet (student, kurs, lärare, osv) Lager (vara, kategori, hyllplats, order, osv) Filmer (skådespelare, regissör, bolag, osv) eller något annat som passar Mindre uppgift Gör utanför labbtid Om det behövs kan ni ta med till labb för frågor.
Databaser Databas - samling med data Databashanterare Enkelt Kraftfullt Flexibelt Samtidig åtkomst Nackdelar? Kan kräva mer resurser.
ER-modellering Entity-Relationship (Saker-Samband) Konceptuell modell Överskådligt Lätt att kommunicera.
vs 8 tabeller med ~50 kolumner
ER-modellering kardinalitetsförhållanden Person N Bor i M Hus entitetstyp sambandstyp (relationship type) En person kan bo i flera hus och i ett hus kan det bo flera personer.
ER-modellering fullständigt deltagande Person Bor N i 1 N Äger M Hus Alla personer bor i ett hus. I ett hus kan det bo flera personer. Ett hus kan ha flera ägare. En person kan (del-)äga flera hus.
ER-modellering Attribut Förnamn Efternamn Liu-id Namn Nyckel Student Sammansatt attribut En student har ett liu-id, förnamn och efternamn. Liu-id är unikt för varje student.
ER-modellering Härlett attribut Flervärt attribut Medelbetyg Telefon Betyg Film
ER-modellering Attribut på sambandstyp Inköpsår Person N Äger M Hus
ER-modellering Svag entitetstyp Titel Sidantal Bok N Innehåller M Kapitel Alla kapitel finns i någon bok.
Relationsmodellen Data lagras i relationer Samma sak som tabeller med rader och kolumner id namn telefonnr 2 Donatello 555-1234 3 Michelangelo 555-9999 5 Rafael 555-1234 1 Leonardo null null 0
ER-diagram Tabeller id namn telefon Person Person id namn telefon 6 Rocksteady 555-2222 54 Beebop 555-2222
Person id namn telefon 6 Rocksteady 555-2222 54 Beebop 555-2222 Hus gata nummer Storgatan 2 Rydsvägen 240 ägare 54 54 id namn efternamn gata nummer Person 1 N äger Hus
Person Hus id namn telefon 6 Rocksteady 555-2222 54 Beebop 555-2222 gata nummer Storgatan 2 Rydsvägen 240 ägare id 16 6 & 854 Äger person-id hus-id 6 8 54 8 54 1 Dålig lösning id id namn efternamn gata nummer Person N äger M Hus
Normalisering Databasteknik - kap 11. Hur man undviker dålig design på sin databas en typ av sak per tabell, och en sån sak per rad Undvik redundans, att samma sak lagras på flera ställen Gör man ERD först slipper man ofta problem och behöver inte normalisera.
1NF Första normalformen Tabellen ska innehålla atomära värden Det vill säga - högst ett värde per ruta
2NF Andra normalformen 1NF Varje icke-nyckelattribut ska vara fullt funktionellt beroende (ffb) av varje kandidatnyckel
Nycklar Kandidatnyckel eller nyckel - en kolumn, eller en kombination av kolumner, som alltid har ett unikt värde för varje rad i tabellen. Person id namn telefon 6 Rocksteady 555-2222 54 Beebop 555-2222
Beroenden Funktionellt beroende, fb; (functional dependency, fd) - Om B är fb av A så bestämmer A entydigt B, dvs om värdena på A på två rader i tabellen är lika, så måste värdena på B också vara lika. Fullt funktionellt beroende, ffb; (full functional dependency, ffd) - ett förhållande mellan två attribut eller attributkombinationer, A och B i en tabell. Om B är funktionellt beroende av A, och inget attribut kan tas bort ur A om det fortfarande ska vara ett funktionellt beroende, så är B ffb av A.
År Län Landshövdning Födelsedag 2009 Gotland M.Samuelsson 9/12 2004 Östergötland B.Eriksson 7/12 2005 Östergötland B.Eriksson 7/12 2NF Innehåller fortfarande redundant information 1NF Varje icke-nyckelattribut ska vara fullt funktionellt beroende (ffb) av varje kandidatnyckel
3NF 2NF, plus att inget icke-nyckelattribut får vara ffb av något annat icke-nyckelattribut År Län Landshövdning Födelsedag 2009 Gotland M.Samuelsson 9/12 2004 Östergötland B.Eriksson 7/12 Ej 3NF 2005 Östergötland B.Eriksson 7/12
3NF 2NF, plus att inget icke-nyckelattribut får vara ffb av något annat icke-nyckelattribut År Län Landshövding 2009 Gotland 1 2004 Östergötland 2 2005 Östergötland 2 id Namn Födelsedag 1 M.Samuelsson 9/12 2 B.Eriksson 7/12 3NF
SQL Structured Query Language Dominerande språket Ställer frågor - uppmaningar.
Person id namn telefon 6 Rocksteady 555-2222 54 Beebop 555-2222 Hus gata nummer ägare Storgatan 2 54 Rydsvägen 240 54 SELECT * FROM Person; SELECT gata FROM Hus WHERE ägare = 54; SELECT namn FROM Person WHERE id = 6; SELECT namn FROM Person WHERE id = (SELECT ägare FROM Hus WHERE gata = Storgatan AND nummer = 2);
Person id namn telefon 6 Rocksteady 555-4545 555-2222 54 Beebop 555-2222 55 April null INSERT INTO Person (id, namn, telefon) VALUES (55, April, null); DELETE FROM Person WHERE namn = April ; UPDATE Person SET telefon = 555-4545 WHERE id = 6;
MySQL The World s most popular open source database PHP, Perl, Python http://dev.mysql.com
PHP + MySQL Vi kommer använda mysqli MySQL improved Funktioner och dokumentation finns på php.net
Demo
Kom ihåg Använd formulär för lagring i databas <form method= post...> Gör uppkopplingen som include och återanvänd PHP hanterar data och skriver ut Kolla så att ni fått korrekt data Säkerhet - prepared statements Inte addslashes Inte mysql_real_escape_ phpmyadmin Skapa tabeller Ange id till primary key, auto_increment så sköter MySQL indexeringen.
Påminnelse: sql-injection
Laboration 4 Börja idag Gästbok eller klotterplank Använd det ni lärt er tidigare + MySQL Validera data från användare med PHP och jquery Föreläsning om jquery-validering finns som video.
Laboration 5 Gör ERD och tabeller för mindre domän Universitet (student, kurs, lärare, osv) Lager (vara, kategori, hyllplats, order, osv) Filmer (skådespelare, regissör, bolag, osv) eller något annat som passar Mindre uppgift Gör utanför labbtid Om det behövs kan ni ta med till labb för frågor.
Om validering/ återkoppling Ge tydlig, artig och hjälpsam återkoppling på vad som fylls i (eller inte fylls i) Undvik onödig teknisk jargon Förklara vad som är fel och hur det ska åtgärdas Testa och tänk efter vad det kan bli för resultat
Till nästa gång Försök göra klart lab 1-5 Fundera på projekt.
Tack! Lycka till!