logo   Opbyg database + tabeller




Der er to grundprincipper, der skal overholdes ved opbygningen af en database, samt dens tabeller og felter:
Der skal være felter til alle data.
Ingen data må registreres mere end en gang.


Der må ikke indgå æ, ø eller å eller blanke tegn i navne på databaser, tabeller og felter. Blanktegn kan erstattes med "_" eller "-".


Database navn

Navnet på en database bør svare til den opgave den skal løse. Det bør være mnemoteknisk "kort, men beskrivende".


Tabeller

De tabeller, der skal anvendes i en database kan - alt efter deres karakteristika - opdeles i et antal grupper (mindst 3).


Navngivning

  • Tabeller
    Tabeller bør navngives som et ord uden blanktegn. Navnet bør være mnemoteknisk baseret på det tabellen anvendes til.
  • Tabelfelter
    Tabelfelter bør navngives med to dele adskilt af blanktegn "_". Første del bør være en mnemoteknisk forkortelse af tabelnavnet. Anden del skal være en god (kort) beskrivelse af feltets indhold. (Navne på fk-felter består af 3 dele - se nedenfor).


Standardtabeller

De allerfleste tabeller hører til i denne gruppe. Trods glidende overgange kan den enkelte tabel som hovedregel relateres til af følgende tre undergrupper:
Stamdata tabeller
Mellem tabeller
Tekst tabeller

Det indebærer, at der skal anvendes to tabeller.


Stamdata tabeller

TransaktionerI de fleste databaser vil der være tabeller, der efterhånden vil komme til at indeholde mange records. Det kan være hensigtsmæssigt, at refere til dem som stamdata tabeller og lade "stam" indgå i deres navn.
Dataene vil typisk have et præg af at være "register data".
Stamdata tabeller indeholder typisk et eller flere fk-felter.






Mellem tabeller

MellemtabellerMellem tabeller er den blandede skare af Standard tabeller der hverken indeholder stamdata eller tekstdata. Der er ingen klar afgrænsning til nogen af siderne. Mellemtabeller kan - men behøver ikke - være stand alone.








Tekst tabeller

TeksttabellerDen rene teksttabel indeholder kun to felter til hhv. en ident og en tekst. Et enkelt felt eller to mere ødelægger dog ikke definitionen. Ved uddata erstatter teksten den ident der er angivet i stam- eller mellem tabeller for det pågældende emne. Identen i en tekst tabel er altid via fk knyttet til et felt i en anden tabel.



Transaktionstabeller

TransaktionerTransaktionstabeller anvendes (mest i E-handel) til håndtering af data til ordrer og fakturaer.

En ordre og en faktura består dokument- og datamæssigt af to dele:
En transaktionstop med navn, adresse, sum etc.
En posteringsdel med en eller flere varelinier el. lign.

Det er derfor også nødvendigt at anvende to tabeller til at håndtere hhv. en toprecord og flere posteringsrecords på dokument.

Transaktionstabellerne er reelt to forbundne mellem tabeller. Forbindelsen etableres ved at toprecordens ID-ident som foreign key knyttes til hver enkelt posteringsrecord.


mange-til-mange tabeller

Mange mangeMange-til-mange tabeller udgør en klart afgrænset gruppe. De behøver ikke nødvendigvis noget ID-felt, men skal altid have to fk-felter.

MM-tabeller anvendes til identificere tilladte kombinationer mellem to tabeller der indbyrdes kan have mange-til-mange relationer;bl.a:
Knytte tags til artikler
Kombinere roller og rettigheder ved adgangsstyring
Kombinere stamdatatabel og mellem-/tekst-tabel, når den enkelte stamdatarecord kan være knyttet til flere records i mellem-/tekst-tabel.
Det kan være hensigtsmæssigt at identificere MM-tabeller ved en navnestandard sammensat af 3 dele:
MM - fast ident.
Mnemoteknisk ident for tabel med data i første felt.
Mnemoteknisk ident for tabel med data i andet felt.

Selvom det ikke er nødvendigt tilrådes det at indsætte et ID-felt i MM-tabeller. Uden dette kan tabellerne ikke rettes / slettes via phpMyAdmin. ID-feltet kan navngives "tabelnavn_ID".
ID-identen bør aldrig anvendes i kodning.


Felter m.m.

Tabel med brugerstamdata

BrugerstamUdover diverse felter med navn etc. for brugerne indeholder tabellen med brugerstamdata også felterne til login navn og log in password. Det har vist sig pratisk altid at anvende samme selvstændige navnestandard for disse to felter.







Felt typer

De felter, der indgår i en tabel kan inddeles i to typer:
Ident-felter: Felt til automatisk nummerering af de enkelte records i tabellen. Navngives normalt "xx_id" og placeres som første felt i tabellen. Skal indsættes i alle taberller bortset fra mange-mange. Der kan også i særlige tilfælde forekomme andre former for etablering / anvendelse af ID-felter.
Data-felter: Alle øvrige felter


Foreign key - "en til mange"

Foreign KeyI mange situationer kan det være hensigtsmæssigt kodemæssigt, at kunne knytte data i to tabeller til hinanden på en sådan måde, at en ident i en tabel relaterer til flere identer i en anden tabel. Selvom det reelt ikke er nødvendigt at gøre noget vedr. feltnavne i databasen, er det kutyme at tydeliggøre samhørigheden mellem de to tabeller ved "foreign key"- konceptet. Det kan være, at der via billeder-tabellen kan knyttes mange billeder til en vare i varestamdata, eller at et vatetype-navn i varetype-tabellen kan knyttes til mange varer i varestamdata.


Foreign key-konceptet gennemføres ved at "mange"-feltet tildeles samme navn som "en"-feltet med foranstillet "fk_".
"en"-feltet vil være et "xx_id"-felt, mens "mange"-feltet ikke vil være et "xx_id"-felt.


I phpMyAdmin

Nedenfor vises simpelt forløb fra oprettelse af database til indsættelse af data:


Overalt fra "Databaser" og derefter, hvor der er et felt til valg af kar.sæt skal der vælges "utf8_danish_ci".


Ved oprettelse af navne på databaser, tabeller og tabelfelter må der ikke anvendes æ, ø og å. Der må heller ikke være blanke tegn - i stedet anvendes "_" eller "-"


Opret database

Ved oprettelse af en ny database indsættes det valgte navn i feltet "Databasenavn" og der trykkes på "Opret". Databasens navn vises nu i kolonnen til venstre.

Opret database


Opret tabel og tabelfelter


Tabel navn

For at oprette en ny tabel trykkes på "Ny" under det udfoldede databasenavn i venstre kolonne.

Opret tabel


I den øverste linie indsættes navnet på tabellen. (Der kan endvidere åbnes for plads til flere felter ved at angive antal og trykke "Udfør". Det gør ike noget, at der er plads til flere felter end der sksl bruges.).


Når alle felter i tabellen er definerede afsluttes med at trykke på "Gem" nederst til højre.


ID-felt

Det første felt i enhver tabel bør være dens ID-felt:

opret ID-felt

Navn
ID-feltets navn skal / bør indeholde "ID".
Datatype
Datatypen skal være INT.
Længdeværdi
Det antal cifre, der skal være plads til i ID nummeret for de enkelte records i tabellen. Hellere et ciffer eller to for meget end et for lidt.
Tegnsæt
Vælg "utf8_danish_ci"
A_I
Sæt flueben i A_I-feltet. Derved åbnes dette vindue:

Opret indeks


Tryk på "Udfør".


Øvrige tabelfelter

Opret navn og parametre for de enkelte felter i tabellen i den ønskede rækkefølge.

Opret tabelfelt

Som parametre skal anføres "Datatype" og (ved de fleste datatyper) "Længde".

Vælg "utf8_danish_ci" som tegnsæt.


Når alle felter er oprettede afsluttes oprettelsen af tabellen med "Gem" nederst til højre.


Indsæt data

Data kan indsættes direkte i databasens tabeller med phpMyAdmin ved at:
Åbn tabellens undermenu i skærmens venstre side.
Tryk på "Indsæt" i skærmbilledets topmenu.
Nedenstående vindue til indtastning af data vises:

Indsæt data

Default vises plads til 2 records. Der kan via "Fortsæt ..." nederst udvides til indtil 40 records pr gemning.


ID-feltet lades blankt.

For de øvrige felter (eller dem af dem man p.t. har data til) indsættes deres relevante værdi i højre kolonne.

Efter indtastning af indtil 40 records trykkes "Udfør" nederst på skærmbilledet.


Vis data

Dataene i en tabel kan vises (samt rettes, slettes eller kopieres):
Åbn tabellens undermenu i skærmens venstre side.
Tryk på "Vis" i skærmbilledets topmenu.
Nedenstående vindue viser de første op til 25 records fra tabellen:

Vis data

Der kan vises flere records ved enten at trykke på "Vis alle" eller op til 500 records via "Antal rækker".


Ved at trykke på "Ret", "Kopi" eller "Slet" for en record åbnes for funktionalitet til udførelse af den pågældende aktivitet.





















x
x