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!