I denne introduktion skal du lære noget om databaser og om hvordan man opretter, ændrer i og anvender dem. Du vil arbejde med at:
Vi vil anvende MySQL database ved hjælp af webinterfacet phpMyAdmin. MySQL er en meget anvendt database på internettet og er den database der ligger bag mange webapplikationer.
Vi vil anvende XAMPP til at installere en webserver med alle relevante programmer
Når man arbejder med data anvender man forskellige typer af data. Det kan være værdier (tal man skal kunne regne med), tekststrenge (tekst eller tal der skal arbejdes med) eller datoer (tidsværdier)
Du vil lære at designe databaser ved hjælp af ER-diagrammer. Diagrammerne støtter en når man skal oprette databasen og giver et overblik over hvor det kan være fornuftig at sætte forbindelser mellem data.
Du vil lære at anvende phpMyAdmin til at oprette, indsætte og redigere i databaser. PhpMyAdmin er et meget anvendt brugerinterface til netværksbaserede databaser.
Du vil lære at oprette forbindelser mellem tabeller i en database, for at sikre dig mod datatab og for at kunne undgå redundans (gentagelser).
Du vil lære at ændre på data i tabeller
Databaser er grundlæggende en samling af struktueret data. Disse databaser deler vi op i det vi kalder flade databaser og relationsdatabaser.
Al data er i én tabel. Det er en fordel hvis det kun er få data vi snakker om. Det kan f.eks. være en almindelig tabel i et tekstbehandlingsprogram eller et regneark. F.eks. en telefonliste, eller tabel hvor man kan se sammenhængen mellem postnummer og by. Disse tabeller kan stå helt for sig selv.
Du kan se et eksempel på en flad database her:
Tabel 1 - Klasser, mentorer og elever | |||
---|---|---|---|
Klasse (Nøgle) | Mentor | Navn | Antal elever |
1a | tj | Thomas Jensen | 17 |
2a | tj | Thomas Jensen | 22 |
3a | tj | Thomas Jensen | 21 |
1b | ba | Bent Andersen | 16 |
2b | ba | Bent Andersen | 24 |
3b | ba | Bent Andersen | 22 |
1x | cc | Christina Carlsen | 28 |
2x | cc | Christina Carlsen | 31 |
Data er fordelt i flere tabeller, hvor man har lavet relationer (forbindelser) mellem dem
Forestil dig en database, hvor man skal have et overblik over de data der er på elever, lærere, klasser, personale, lokaler osv. Her vil det være en fordel at have en tabel med by og postnumre. Det vil betyde at databasen selv kan finde det bynavn, der er hører til de enkelte postnumre, sådan at selve bynavnet kun står en gang. Det sparer både indtastninger, men også plads i databasen (redundans).
Det betyder også, at man kan bruge nogle rækker som kontrolinstanser. F.eks. vil et forkert postnummer kunne udløse en advarsel, fordi det ikke eksisterer. Eller man vil kunne sikre sig mod at der bliver slettet data som andre tabeller er afhængige af.
Man kan ikke blot forbinde tabeller i den enkelte database med hinanden, men også forbinde forskellige databaser med hinanden, sådan at man kan udnytte data fra flere kilder.
Herunder er et eksempel som det ser ud med phpMyAdmins designervindue:
Redundans er et fint ord for data der er tilstede mere end en gang.
I det ovenstående tilfælde nævner jeg en tabel med bynavn og postnummer. Hvis man ikke havde den tabel ville alle tabeller med adresser skulle indeholde både bynavn og postnummer. Et af disse felter ville altså være redundant. Det vil betyde at man skal bruge mere tid på at indtaste data, databasen fylder mere og databasen skal sortere i flere data for at finde sine resultater. Alt sammen noget der ikke er effektivt og koster både tid og penge.
En god database er designet så man undgår redundans, og den proces hedder normalisering (http://www.vidas.dk/IT/MySQL_database_normalisering.html). Det er et område der hører til på IT B.
En database er en struktureret samling af data, som er sat op i tabeller, med rækker og kolonner. Ved hjælp af kommandoer kan man manipulere med, søge i og sortere data.
En relationel database indeholder flere tabeller, som kan sammenkædes og kombineres.
En tabel er en samling af data der er struktureret indefor et afgrænset område f.eks: medarbejdere og deres kontaktoplysninger
En post er de enkelte data rækker f.eks. den enkelte medarbejder og dennes kontaktoplysninger
Et felt er de enkelte data i en post f.eks. medarbejderens mail
For at gemme og strukturere data skal der for hvert felt angives hvilken type data det indeholder. Det kan f.eks. være et tal, tekst eller tidsformat.
For at felter i tabellerne kan indgå relationer mellem hinanden skal de være synlige for databasen. Det gøres ved at indeksere felterne. Det svarer til at der er et katalog, der angiver hvor de enkelte felter er. Alle felter kan indekseres, men man bør kun indeksere de felter der skal anvendes til at lave relationer med.
Her vil vi anvende 3 typer
Alle tabeller skal indehold en post der kun har unikt indhold, altså indhold der kun forekommer en gang. Det er denne post MySQL bruger til at administrere tabellen.
Det kan være en fordel at lade dette felt være noget som identificere den enkelte post, og det kan f.eks. være et brugernavn, kunde ID, telefonnummer, mail osv.
Når en tabel er oprettet kender databasen kun til den post der er primærnøgle. Vil man skabe relationer mellem andre poster i tabellerne, skal de indekseres.
Unikke felter er som indeks, men kræver at hver post er unik. Ved at indeksere et felt med værdien unik, kan to poster ikke have samme værdi. På den måde kan man sikre sig, at to poster ikke har samme telefonnummer, mailadresse, firmanavn osv. Databasen vil sørge for at posten er unik.
Fremmednøgler er felter som har forbindelse til primærfelter, og hvor der er sat en binding op imellem dem. I praksis gøres det ved at indeksere et felt, så det gøres tilgængeligt for databasen.
Fremmednøgler er afhængige af deres primærnøgler. Dette kan bruges til at opdatere felter, sådan at hvis primær nøglen ændres, så vil fremmednøglen også blive ændre. Det kan også anvendes til at sikre, at man ikke sletter en primærnøgle der er i anvendelse et andet sted i databasen.