Prova själv!
Databaser och webbappar kan ge stora affärsfördelar. En god databasdesign är viktigt för att uppnå dina mål, oavsett om det gäller att hantera personalinformation, tillhandahålla veckorapporter eller spåra kundorder. Om du lägger lite tid på att förstå databasdesign kan du sedan bygga databaser som fungerar på rätt sätt direkt och kan hantera skiftande behov.
Viktigt!: Access-webbappar skiljer sig från skrivbordsdatabaser. Denna artikel tar inte upp design av webbappar.
Begrepp och termer
Vi börjar med några grundläggande termer och koncept. För att skapa en användbar databas skapar du tabeller som fokuserar på ett ämne. I tabellerna samlar du alla data som krävs för det ämnet i fälten, som utgör den minsta dataenheten.
Relationsdatabaser |
En databas där data är uppdelade i tabeller, som är ungefär som kalkylblad. Varje tabell har ett specifikt ämne, som kunder (en tabell) eller produkter (en annan tabell). |
Poster och fält |
Lagring för de olika dataelementen i en tabell. Rader (eller poster) lagrar varje unik datapunkt, som namnet på en kund. Kolumner (eller fält) isolerar den information som förs in i minsta möjliga enhet – förnamn kan vara en kolumn och efternamn kan vara en annan. |
Primärnyckel |
Ett värde som säkerställer att varje post är unik. Det kan till exempel finnas två kunder med samma namn, Elizabeth Andersen. Men en av posterna för Elizabeth Andersen har numret 12 som primärnyckel och den andra har primärnyckeln 58. |
Överordnade och underordnade relationer |
Vanliga relationer mellan tabeller. En enskild kund kan till exempel ha flera order. Överordnade tabeller har primärnycklar. Underordnade tabeller har externa nycklar, som är värden från primärnyckeln som visar hur posterna i den underordnade tabellen är kopplade till den överordnade tabellen. Dessa nycklar kopplas samman av en relation. |
Vad är god databasdesign?
Två principer är grundläggande för god databasdesign:
-
Undvik duplicerad information (kallas även redundanta data). Det tar upp utrymme och ökar risken för fel.
-
Se till att data är korrekta och fullständiga. Ofullständig eller felaktig information kommer in via frågor och rapporter och kan i slutänden leda till beslut på felaktiga grunder.
För att undvika dessa problem:
-
Dela upp databasinformation i ämnesbaserade tabeller med mycket specifikt fokus. Undvik att upprepa information i flera tabeller. (Till exempel ska kundnamn bara finnas i en tabell.)
-
Koppla samman tabellerna med nycklar istället för att duplicera data.
-
Använd processer som stödjer och säkerställer att informationen i databasen är korrekt.
-
Designa databasen med dina behov för databearbetning och rapportering i åtanke.
Följ dessa fem designsteg för att förbättra databasernas användbarhet även på lång sikt:
Steg 1: Bestäm syftet med databasen
Ställ upp ett mål för databasen innan du börjar.
Du kan fokusera din design genom att sammanfatta syftet med databasen och hänvisa till sammanfattningen ofta. Om du vill ha en liten databas för en verksamhet du driver hemifrån, kan du till exempel skriva något enkelt, som ”Kunddatabasen innehåller en lista med kundinformation för att skapa utskick och ta fram rapporter”. För en företagsdatabas kan du behöva flera avsnitt för att beskriva när och hur personer i olika roller kommer att använda databasen och dess data. Skapa en specifik och detaljerad uppdragsbeskrivning du kan referera till under designprocessen.
Steg 2: Hitta och organisera den information som behövs
Samla in all den information du vill spara, som produktnamn och ordernummer.
Börja med din befintliga information och dina aktuella spårningsmetoder. Du kanske för närvarande registrerar inköpsorder i en huvudbok eller har din kundinformation på pappersformulär. Använd dessa källor för att lista den information du samlar in just nu (till exempel alla kryssrutor på dina formulär). Om du för närvarande inte samlar in viktig information, fundera på vilka enskilda informationskomponenter du behöver. Varje enskild datatyp blir ett fält i din databas.
Din första lista behöver inte vara perfekt – du kan justera den med tiden. Men ta hänsyn till alla personer som använder denna information och be dem om idéer.
Fundera sedan på vad du vill ha ut från databasen och vilka typer av rapporter eller utskick som du vill skapa. Se till att du samlar in den information som krävs för att uppfylla dessa mål. Om du till exempel vill ha en rapport som visar försäljning per område, måste du samla in försäljningsdata på områdesnivå. Försök skissa rapporten med verklig information så att den ser ut som du vill ha den. Lista sedan de data du behöver för att skapa rapporten. Gör samma sak för utskick eller andra utdata du vill ha från databasen.
Exempel
Anta att du ger kunder möjlighet att välja om de vill få regelbundna uppdateringar via e-post, och att du vill skriva ut en lista med de som angett att de vill ha dessa meddelanden. Du behöver en kolumn kallad Skicka e-post i tabellen Kunder, med de tillåtna värdena Ja och Nej.
För de som vill ta emot e-post behöver du en e-postadress, vilket också kräver ett fält. Om du vill ha med en korrekt hälsningsfras (som Herr eller Fru), lägger du till fältet Hälsning. Om du vill tilltala kunder med förnamnet i e-post, lägger du till fältet Förnamn.
Tips: Kom ihåg att dela upp varje informationskomponent i sina minsta användbara delar, som förnamn och efternamn för en kundtabell. Rent allmänt gäller att om du vill sortera, söka, beräkna eller rapportera baserat på en viss informationskomponent (som kundens efternamn), ska den informationen finnas i ett eget fält.
Steg 3: Dela upp information i tabeller
Dela upp informationen i olika grupper eller ämnen, som produkter, kunder och order. Varje ämne blir en egen tabell.
När du har listan med den information du behöver, bestämmer du de huvudenheter (eller ämnen) du behöver ha för att organisera dina data. Undvik att duplicera data mellan enheter. Den preliminära listan för en databas för produktförsäljning kan till exempel se ut så här:
Huvudenheterna är: kunder, leverantörer, produkter och order. Börja därför med dessa fyra tabeller: en för information om kunder, en för information om leverantörer och så vidare. Detta kanske inte blir din slutliga design, men det är en bra utgångspunkt.
Obs!: De bästa databaserna innehåller flera tabeller. Motstå frestelsen att placera all information i en enda tabell. Det leder till duplicerad information, en större databas och fler fel. Skapa en design som gör att data bara behöver registreras en gång. Om du upptäcker att du upprepar information, som en leverantörsadress, strukturerar du om databasen så den informationen hamnar i en separat tabell.
För att förstå varför fler tabeller är bättre än färre kan vi ta denna tabell som exempel:
Varje rad innehåller information om både produkten och dess leverantör. Eftersom du har många produkter från samma leverantör, måste leverantörens namn och adress upprepas många gånger. Det slösar lagringsutrymme. Istället bör du spara leverantörsinformationen en gång i en separat leverantörstabell och sedan länka den tabellen till tabellen Produkter.
Ett andra problem med denna design blir tydligt när du vill ändra information om leverantören. Anta att du behöver ändra en leverantörs adress. Eftersom den förekommer på många platser kan du råka ändra den på en plats men glömma att ändra den på de andra. Genom att bara ha leverantörens adress på en plats undviker du det problemet.
Anta slutligen att Coho Winery bara levererar en produkt och att du vill ta bort produkten men behålla leverantörens namn och adressinformation. Hur tar du bort produktposten utan att även förlora leverantörsinformationen med den här designen? Det går inte. Eftersom varje post innehåller information om en produkt samt information om en leverantör, är det omöjligt att ta bort den ena utan att ta bort den andra. För att hålla dessa data separerade delar du upp tabellen i två tabeller: den första för produktinformation och den andra för leverantörsinformation. När du då tar bort en produktpost, tar du bara bort information om produkten – inte information om leverantören.
Steg 4: Omvandla informationsobjekt till kolumner
Bestäm vilken information du behöver lagra i varje tabell. Dessa separata dataenheter blir fält i tabellen. Tabellen Personal kan till exempel innehålla fält som Efternamn, Förnamn och Anställningsdatum.
När du valt ämnet för en databastabell, ska kolumnerna i den tabellen bara lagra fakta om det specifika ämnet. En produkttabell ska till exempel bara lagra information om produkter – inte om deras leverantörer.
För att bestämma vilken information som ska tas med i tabellen använder du listan du skapade tidigare. Tabellen Kunder kan till exempel inkludera: Förnamn, Efternamn, Adress, Skicka e-post, Hälsning och E-postadress. Varje post (kund) i tabellen innehåller samma kolumnuppsättning, så du sparar exakt samma information för varje kund.
Skapa din första lista och granska och förbättra den sedan. Kom ihåg att dela upp information i minsta möjliga fält. Om din ursprungliga lista till exempel hade fältet Adress, delar du upp det i Gatuadress, Ort, Delstat och Postnummer – eller om dina kunder är globala, i ännu fler fält. På så sätt kan du göra utskick i rätt format eller rapportera order enligt delstat.
När du justerat datakolumnerna i tabellerna väljer du en primärnyckel för varje tabell.
Steg 5: Ange primärnycklar
Välj primärnyckel för varje tabell. Primärnyckeln, som Produkt-ID eller Order-ID, identifierar varje post unikt. Om du inte har ett uppenbart unikt ID kan Access skapa ett åt dig.
Du måste ha ett sätt att unikt identifiera varje rad i varje tabell. Kommer du ihåg exemplet tidigare där två kunder har samma namn? Eftersom de har samma namn, behöver du ett sätt att skilja dem åt.
Varje tabell ska därför ha en kolumn (eller uppsättning kolumner) som unikt identifierar varje rad. Detta kallas primärnyckeln och är ofta ett unikt nummer, som ett anställningsnummer eller ett serienummer. Access använder primärnycklar för att snabbt koppla samman data från olika tabeller och sammanställa dessa data för dig.
Ibland består primärnyckeln av två eller flera fält. Till exempel kan tabellen Orderinformation, som innehåller radspecifikationer för order, använda två kolumner i sin primärnyckel: Order-ID och Produkt-ID. När en primärnyckel använder mer än en kolumn, kallas det för en sammansatt nyckel.
Om du redan har ett unikt ID för informationen i en tabell, som produktnummer som unikt identifierar varje produkt i din katalog, använder du det, men bara om värdena uppfyller dessa krav på primärnycklar:
-
Identifieraren kommer alltid att vara olika för varje post. Duplicerade värden tillåts inte i en primärnyckel.
-
Det finns alltid ett värde för objektet. Varje post i din tabell måste ha en primärnyckel. Om du använder flera kolumner för att skapa nyckeln (som Artikelfamilj och Artikelnummer), måste båda värdena alltid finnas.
-
Primärnyckeln är ett värde som inte ändras. Eftersom nycklarna används som referens av andra tabeller, skulle en förändring av en primärnyckel i en tabell innebära att den måste bytas överallt där den används som referens. Upprepade ändringar ökar risken för fel.
Om du inte har ett värde du kan använda som identifierare använder du ett unikt slumpmässigt nummer som primärnyckel. Du kan till exempel tilldela varje order ett unikt ordernummer bara för att kunna identifiera ordern.
Tips: För att skapa ett unikt nummer som primärnyckel lägger du till en kolumn med datatypen Räknare. Datatypen Räknare tilldelar automatiskt ett Unikt, numeriskt värde till varje post. Denna typ av identifierare innehåller ingen information som beskriver raden den representerar. Den är perfekt att använda som primärnyckel eftersom siffrorna inte ändras – till skillnad från en primärnyckel som innehåller fakta om en rad, som ett telefonnummer eller ett kundnamn.