Prøv det!
Databaser og webapps kan give store forretningsfordele. Databasedesign er afgørende for at nå dine mål, uanset om du vil administrere medarbejderoplysninger, levere ugentlige rapporter med data eller spore kundeordrer. Bruger du tid på at forstå databasedesign, vil det hjælpe dig med at opbygge databaser, som virker rigtigt fra begyndelsen og giver plads til skiftende behov.
Vigtigt!: Access-webapps er forskellige fra skrivebordsdatabaser. Denne artikel omhandler ikke design af webapps.
Koncepter og begreber
Lad os starte med at lære nogle grundlæggende begreber og koncepter. Hvis du vil designe en nyttig database, skal du oprette tabeller, som fokuserer på et enkelt emne. I dine tabeller registrerer du alle de nødvendige data for det pågældende emne i felter, som indeholder den mindste dataenhed.
Relationsdatabaser |
En database, hvor data er opdelt i tabeller, som minder om regneark. Hver tabel har kun ét emne, f.eks. kunder (én tabel) eller produkter (en anden tabel). |
Poster og felter |
Lagring af de diskrete data i en tabel. Rækker (eller poster) gemmer hvert entydige datapunkt, f.eks. navnet på en kunde. Kolonner (eller felter) isolerer de oplysninger, der registreres om hvert datapunkt, til den mindst mulige enhed – fornavn kan være én kolonne, og efternavn kan være en anden. |
Primær nøgle |
En værdi, der sikrer, at hver post er entydig. Der kan f.eks. være to kunder med samme navn, Elizabeth Andersen. Men en af Elizabeth Andersens optegnelser har tallet 12 som sin primære nøgle, og den anden har en primær nøgle på 58. |
Relation mellem overordnet-underordnet |
Almindelige relationer mellem tabeller. En enkelt kunde kan f.eks. have flere ordrer. Overordnede tabeller har primære nøgler. Underordnede tabeller har fremmede nøgler, som er værdier fra den primære nøgle, der viser, hvordan de underordnede tabelposter er sammenkædet med den overordnede tabel. Disse nøgler er sammenkædet af en relation. |
Hvad er et godt databasedesign?
To principper er grundlæggende for et godt databasedesign:
-
Undgå dublerede oplysninger (også kaldet overflødige data). Det er spild af plads og øger risikoen for fejl.
-
Sørg for, at dataene er korrekte og fuldstændige. Ufuldstændige eller forkerte oplysninger flyder gennem forespørgsler og rapporter og kan i sidste ende føre til fejlinformerede beslutninger.
Som hjælp til disse problemer:
-
Inddel databaseoplysninger i emnebaserede tabeller med et smalt fokus. Undgå at duplikere oplysninger i flere tabeller. (Kundenavne bør f.eks. kun være i én tabel).
-
Sammenkæd tabellerne ved hjælp af nøgler i stedet for at dublere data.
-
Inkluder processer, der understøtter og sikrer databaseoplysningers nøjagtighed og integritet.
-
Design din database med dit behov for databehandling og -rapportering i tankerne.
Følg disse fem designtrin for at forbedre den langsigtede anvendelighed af dine databaser:
Trin 1: Fastlæg formålet med din database
Før du går i gang, skal du have et mål for din database.
Hvis du vil holde dit design fokuseret, skal du opsummere formålet med databasen og ofte referere til oversigten. Hvis du f.eks. vil have en lille database til en hjemmebaseret virksomhed, kan du skrive noget simpelt, f.eks. "Kundedatabasen holder en liste over kundeoplysninger med henblik på at producere forsendelser og rapporter.". For en virksomhedsdatabase skal du muligvis bruge flere afsnit til at beskrive, hvornår og hvordan personer i forskellige roller skal bruge databasen og dens data. Create en specifik og detaljeret missionserklæring, som du kan referere til under hele designprocessen.
Trin 2: Søg efter og organiser nødvendige oplysninger
Indhent alle de typer oplysninger, du vil registrere, f.eks. dine produktnavne og ordrenumre.
Start med dine eksisterende oplysninger og sporingsmetoder. Det kan f.eks. være, at du aktuelt registrerer indkøbsordrer i en hovedbog, eller at du opbevarer kundeoplysninger på papirformularer. Brug disse kilder til at få vist de oplysninger, du aktuelt registrerer (f.eks. alle felterne i formularerne). Hvis du i øjeblikket ikke registrerer vigtige oplysninger, skal du tænke over, hvilke diskrete oplysninger du har brug for. Hver enkelt datatype bliver til et felt i databasen.
Du skal ikke være bange for, at din første liste ikke bliver perfekt – du kan finjustere den med tiden. Men tænk på alle de personer, der bruger disse oplysninger, og spørg dem om deres idéer.
Dernæst skal du tænke over, hvad du vil have ud af databasen, og hvilke typer rapporter eller forsendelser du vil producere. Sørg derefter for, at du registrerer de oplysninger, der kræves for at opfylde disse mål. Hvis du f.eks. vil have en rapport, der viser salg efter område, skal du registrere salgsdata på regionalt niveau. Prøv at skitsere rapporten med de faktiske oplysninger, som du gerne vil se den. Angiv derefter de data, du skal bruge til at oprette rapporten. Gør det samme for forsendelser eller andre output, du vil have fra databasen.
Eksempel
Antag, at du giver kunder mulighed for at tilmelde sig (eller framelde sig) periodiske mailopdateringer, og du vil udskrive en liste over dem, der har tilmeldt sig. Du har brug for en Send mail-kolonne i Kundetabellen med de tilladte værdier Ja og Nej.
For dem, der er villige til at modtage mails, skal du bruge en mailadresse, som også kræver et felt. Hvis du vil medtage en korrekt starthilsen (f.eks. Hr., Fru eller Ms.), skal du medtage et felt med starthilsen. Hvis du vil adressere kunder efter deres fornavn i mails, skal du tilføje feltet Fornavn.
Tip!: Husk at opdele hver oplysning i dens mindste nyttige del, f.eks. fornavn og efternavn for en kundetabel. Hvis du vil sortere, søge, beregne eller rapportere baseret på et oplysningselement (f.eks. kundens efternavn), skal du placere elementet i sit eget felt.
Trin 3: Inddel oplysninger i tabeller
Inddel dine oplysningselementer i overordnede enheder eller emner såsom produkter, kunder og ordrer. Hvert emne bliver en tabel.
Når du har din liste over påkrævede oplysninger, skal du fastlægge de overordnede enheder (eller emner), du skal bruge til at organisere dine data. Undgå at dublere data på tværs af enheder. Den foreløbige liste for en produktsalgsdatabase kan eksempelvis se således ud:
De overordnede enheder er: kunder, leverandører, produkter og ordrer. Start med disse fire tabeller: én til fakta om kunder, én til fakta om leverandører osv. Dette er muligvis ikke dit endelige design, men det er et godt udgangspunkt.
Bemærk!: De bedste databaser indeholder flere tabeller. Undgå fristelsen til at placere alle dine oplysninger i et enkelt bord. Dette medfører dublerede oplysninger, større databasestørrelse og øgede fejl. Design til kun at optage hvert enkelt faktum én gang. Hvis du oplever, at du gentager oplysninger, f.eks. en leverandøradresse, skal du omstrukturere databasen for at placere disse oplysninger i en separat tabel.
Hvis du vil forstå, hvorfor flere tabeller er bedre end færre, kan du tage et kig på den tabel, der vises her:
Hver række indeholder oplysninger om både produktet og dets leverandør. Da du kan have mange produkter fra den samme leverandør, skal oplysninger om leverandørens navn og adresse gentages mange gange. Det er spild af diskplads. Registrer i stedet kun leverandøroplysningerne én gang i en separat tabel Leverandører, og knyt derefter den pågældende tabel til tabellen Produkter.
Et andet problem med dette design fremgår tydeligt, når du vil redigere oplysninger om leverandøren. Antag, at du vil ændre en leverandørs adresse. Da den vises mange forskellige steder, ændrer du måske adressen ved et uheld ét sted, men glemmer at ændre den de andre steder. Du løser dette problem ved kun at registrere leverandørens adresse ét sted.
Et sidste scenarie kan være, at Coho Winery kun leverer ét produkt, som du gerne vil slette, men du vil gerne bevare oplysningerne om leverandørens navn og adresse. Hvordan vil du med dette design slette produktposten uden at miste leverandøroplysningerne? Det kan du ikke. Da hver post indeholder oplysninger om et produkt ud over oplysninger om en leverandør, er det umuligt at slette det ene uden også at slette det andet. Du kan derfor inddele denne tabel i to dele for at holde disse fakta adskilt: den første til produktoplysninger og den anden til leverandøroplysninger. Når du derefter sletter en produktpost, sletter du kun oplysningerne om produktet – ikke oplysninger om leverandøren.
Trin 4: Omdan oplysningselementer til kolonner
Beslut, hvilke oplysninger du skal gemme i hver tabel. Disse diskrete datastykker bliver til felter i tabellen. Tabellen Medarbejdere kan f.eks. indeholde felter som Efternavn, Fornavn og Ansættelsesdato.
Når du har valgt emnet for en databasetabel, bør kolonnerne i den pågældende tabel kun gemme oplysninger om det enkelte emne. En produkttabel bør f.eks. kun indeholde oplysninger om produkter – ikke om deres leverandører.
Hvis du vil beslutte, hvilke oplysninger der skal registreres i tabellen, skal du bruge den liste, du oprettede tidligere. Tabellen Kunder kan f.eks. indeholde: Fornavn, Efternavn, Adresse, Send mail, Starthilsen og Mailadresse. Hver post (kunde) i tabellen indeholder det samme sæt kolonner, så du gemmer nøjagtigt de samme oplysninger for hver kunde.
Create din første liste, og gennemse den derefter, og tilpas den. Husk at opdele oplysningerne i de mindst mulige felter. Hvis din første liste f.eks. har Adresse som et felt, skal du opdele det i Adresse, By, Stat og Postnummer – eller, hvis dine kunder er globale, i endnu flere felter. På den måde kan du f.eks. udføre forsendelser i det korrekte format eller rapportere om ordrer efter stat.
Når du har justeret datakolonnerne i hver tabel, er du klar til at vælge en primær nøgle for hver tabel.
Trin 5: Angiv primære nøgler
Vælg en primær nøgle for hver tabel. Den primære nøgle, f.eks. produkt-id eller ordre-id, identificerer entydigt hver post. Hvis du ikke har et indlysende, entydigt id, kan du bruge Access til at oprette et for dig.
Du har brug for en metode til at identificere hver række i hver tabel entydigt. Kan du huske eksemplet fra tidligere, hvor to kunder har det samme navn? Eftersom de deler et navn, skal du bruge en metode til at identificere hver enkelt.
Således bør hver tabel indeholde en kolonne (eller sæt af kolonner), som entydigt identificerer hver række. Dette kaldes den primære nøgle og er ofte et entydigt nummer, såsom et medarbejder-id eller et serienummer. Access bruger primære nøgler til hurtigt at tilknytte data fra flere tabeller og samle data for dig.
Nogle gange består den primære nøgle af to eller flere felter. En tabel med ordredetaljer, der gemmer linjeelementer til ordrer, kan f.eks. bruge to kolonner i den primære nøgle: Ordre-id og produkt-id. Når en primær nøgle anvender mere end én kolonne, kaldes den også en sammensat nøgle.
Hvis du allerede har et entydigt id for oplysningerne i en tabel, f.eks. produktnumre, som entydigt identificerer hvert produkt i dit katalog, kan du bruge dette, men kun hvis de opfylder disse regler for primære nøgler:
-
Id’et vil altid være forskelligt for hver post. Dublerede værdier er ikke tilladt i en primær nøgle.
-
Der er altid en værdi for elementet. Hver post i tabellen skal have en primær nøgle. Hvis du bruger flere kolonner til at oprette nøglen (f.eks. Delfamilie og Delnummer), skal begge værdier altid være til stede.
-
Den primære nøgle er en værdi, der ikke ændres. Da nøglerne henviser til andre tabeller, betyder enhver ændring af en primær nøgle i en tabel en ændring af alt, hvad der henvises til. Hyppige ændringer øger risikoen for fejl.
Hvis du ikke har et tydeligt id, kan du bruge et vilkårligt, entydigt tal som primær nøgle. Du kan f.eks. tildele hver ordre et entydigt ordrenummer med det ene formål at identificere ordren.
Tip!: Hvis du vil oprette et entydigt tal som primær nøgle, skal du tilføje en kolonne ved hjælp af datatypen Autonummerering. Datatypen Autonummerering tildeler automatisk hver post en entydig numerisk værdi. Denne type id indeholder ingen faktuelle oplysninger, der beskriver den række, den repræsenterer. Den er ideel til brug som primær nøgle, fordi tallene ikke ændres – i modsætning til en primær nøgle, der indeholder oplysninger om en række, f.eks. et telefonnummer eller et kundenavn.
Vil du have mere?
Retningslinjer for navngivning af felter, kontrolelementer og objekter