/3/3 Varje gång jag vill lägga 5ll en film så måste jag ändra i min PHP kod och ladda upp 5ll servern Mina kollegor vill också kunna lägga 5ll filmer, men jag vill inte ge de access 5ll min FTP eller PHP kod. Min lista på tusentals filmer finns nu kodad i PHP Databas Databas Föreläsning 5 Databaser ER- diagram phpmyadmin Med en databas kan vi spara informa5on separat från PHP Informa5onen kan skrivas 5ll databasen från tredjpart. Men hur får jag informa5onen 5ll min webbplats? ästa föreläsning... Databas Samling av data Databas I denna kurs använder vi en databas som heter MySQL. Det är en så kallad SQL baserad databas. Det finns andra typer av databaser, men när vi säger databas i den här kursen menar vi SQL baserade databaser. Koordineras av en databashanterare (t ex MySQL) E[ enkelt och kra\fullt sä[ a[ organisera och förvara stora datamängder. Erbjuder sam5dig åtkomst från flera källor för skrivning och läsning.
/3/3 Databas - Tabeller Från verklighet 5ll databas En databas består utav en samling tabeller. Varje tabell har olika kolumner för olika värden. Dessa tabeller kan vara sammanlänkade via kolumner. Föreställ er flera excell- ark där man har olika värden på olika kolumner, och flera olika blad som representerar olika tabeller. Vi vill spara data i vår databas. Hur mappar vi verkligheten mot våra rader/kolumner? Hur ser man 5ll a[ man får en bra struktur redan från böran? Databas Verklighet TDP02 TDDD4 2
/3/3 TDP02 TDP02 TDDD4 TDDD4 amn amn en#ty PERSO TDP02 PERSO TDDD4 amn amn 3
/3/3 amn amn PERSO PERSO?? a(ribute amn amn PERSO PERSO en en 4
/3/3 amn PERSO en primary key Vi vill på något sä[ unikt iden5fiera våra saker En5ty- Rela5onship E[ sä[ a[ få en konceptuell modell av en databas innan man kodar. Lä[are a[ kommunicera med kunder och andra stakeholders över e[ ER- diagram än en SQL databas. Överskådligt. Visar rela5onerna mellan olika en5teter i databasen. Mycket billigare a[ få en bra överblick över hur databasen bör se ut innan man kodar, än a[ i e\erhand ändra i koden. Rela5onship type PERSO en Cardinali5es En person kan vara för flera kurser, men en kurs kan bara ha en amn amn PERSO en PERSO E( enkelt men komple( ER- diagram AM KOTOR TELEFO MEJL en 5
/3/3 amn amn PERSO en PERSO en AM KOTOR TELEFO MEJL KOD AM KOTOR TELEFO MEJL KOD ASVARIG? foreign key som relaterar 5ll en primary key i en annan tabell. amn Exempel 2 Lite mer avancerad TDP02 PERSO en TDDD4 AM KOTOR TELEFO MEJL Marcus E 329:5 marcus.bendtsen@liu.se 2 Jalal E 3F:446 jalal.maleki@liu.se KOD TDP00 TDP02 ASVARIG 2 amn Kurs Exempel data 6
/3/3 amn ASTÄLLD TDP02 amn ASTÄLLD TDP02 TDDD4 TDDD4 Kurs STUDET Kurs amn amn ASTÄLLD ASTÄLLD Vi saknar länkarna: skall ha en och flera STUDET skall kunna ha flera kurser, och kurser skall kunna ha flera. STUDET 7
/3/3 AM KOTOR TELEFO MEJL AM KOTOR TELEFO MEJL KOD ASVARIG STUDET STUDET AM KOTOR TELEFO MEJL KOD ASVARIG AM KOTOR TELEFO MEJL KOD ASVARIG ASTÄLLD_ KOD MEJL MEJL 8
/3/3 AM KOTOR TELEFO MEJL KOD ASVARIG AM KOTOR TELEFO MEJL Marcus E 329:5 marcus.bendtsen@liu.se 2 Jalal E 3F:446 jalal.maleki@liu.se 3 Thorbjörn thorlo... 4 Patrick patrick... 5 Robin robin... KOD TDP00 TDP02 ASVARIG 2 ASTÄLLD_ KOD Lab mappade #ll kurser ASTÄLLD_ KOD 3 4 5 mappade #ll kurser MEJL STUDET_ KOD MEJL 0 abcde23@student.liu.se edcba32@student.liu.se 2 marbe800@student.liu.se STUDET_ KOD 2 TDP00 TDP00 0 ormalisering Riktlinjer för hur man undviker dålig design av sin databas. Om man har en bra ER- Modell behöver man oeast inte tänka på normalisering. Vik5gaste punkterna ur normaliserings synpunkt: Upprepa inte data. Lagra aldrig samma informa5on på två ställen. En typ av sak per tabell, och en sådan sak per rad. Exempel på dålig design Upprepning FIRSTAME SURAME ADDRESS Marcus Bendtsen marcus.bendtsen@liu.se 2 Jalal Maleki jalal.maleki@liu.use PERSO_ ADDRESS 3 marcus.bendtsen@liu.se 4 2 jalal.maleki@liu.se 5 marbe92@ida.liu.se Dålig uppdelning COURSE SEMESTER TEACHER EMAIL VT202 Marcus marcus.bendtsen@liu.se 2 TDP02 HT202 Marcus marcus.bendtsen@liu.se phpmyadmin Demo 9