Webbprogrammering - 725G54 Databaser och Datamodellering Foreläsning IV Agenda ● ● ● ● ● ● ● ● Databaser ERD SQL MySQL phpMyAdmin Labb 4 Databaser ● ● ● ● ● ● Databas - samling med data Databashanterare Enkelt Kraftfullt Flexibelt Samtidig åtkomst Google Data Center Relationalsdatabaser ● ● ● ● En tabell presenterar en entitetstyp. Varje entitetsattribut deklareras som en kolumn med ett namn eller en titel. Varje entitet lagras som en rad. En rad kallas också en relation eller tupple. Varje kolumn har en datatyp. Blueprints Men vänta vänta! Vad är precis en entitet? Behöver vi kunna om alla entiteter i systemet innan vi kommer igång med tabellerna? I så fall vad är fördelarna med det? Blueprints Men vänta vänta! Vad är precis en entitet? Behöver vi kunna om alla entiteter i systemet innan vi kommer igång med tabellerna? I så fall vad är fördelarna med det? ER-modellering ● ● ● ● ● Entity-Relationship (Saker-Samband) Konceptuell modell Överskådligt Lätt att kommunicera. ER-modellering En person kan bo i flera hus och i ett hus kan det bo flera personer. Ett hus kan ha flera ägare. En person kan (del-)äga flera hus. kardinalitetsförhå llanden entitetstyp sambandstyp (relationship type) ER-modellering Alla personer bor i ett hus. I ett hus kan det bo flera personer. ? fullständigt deltagande ER-modellering En student har ett liu-id, förnamn och efternamn. Liu-id är unikt för varje Nyckel student. Efternamn Förnamn Nyckel Sammansatt attribut ER-modellering Flervärt attribut Härlett attribut Färg Antal Boende Hus ER-modellering Attribut på sambandstyp ER-modellering Alla rum finns i någon lägenhet. Svag entitetstyp ER-modellering ER-diagram ➔ Tabeller ER-diagram ➔ Tabeller ER-diagram ➔ Tabeller Normalisering Database normalization (or normalisation) is the process of organizing the columns (attributes) and tables (relations) of a relational database to minimize data redundancy. ● ● 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. Obs, om gjort rätt! 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. 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. 3NF Tredje normalformen ● 2NF, plus att inget icke-nyckelattribut får vara ffb av något annat icke-nyckelattribut SQL ● ● ● Structured Query Language Dominerande språket Ställer frågor - uppmaningar. SQL ● ● ● ● ● ● ● SELECT SELECT SELECT SELECT = 2); INSERT DELETE UPDATE * FROM Person; gata FROM Hus WHERE ägare = 54; namn FROM Person WHERE id = 6; namn FROM Person WHERE id = (SELECT ägare FROM Hus WHERE gata = ‘Storgatan’ AND nummer INTO Person (id, namn, telefon) VALUES (55, ‘April’, null); FROM Person WHERE namn = ‘April’; Person SET telefon = 555-4545 WHERE id = 6; The World’s most popular open source database, http://dev.mysql.com Mirror mirror on the wall, who is the fairest of them all!? The MySQL, my queen! MySQL MySQL Client - text based Används för att kommunicera med MySQL servern i terminalen. MyPHPAdmin ● ● En webbapplikation som används för att jobba med MySQL servern i webbläsaren med nästan bra gränssnitt. Det har inget att göra med PHP språket! Laboration 4 ● ● ● ● ● 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 Tack och lycka till!