Datamodel for databaser

Databaser er komplekse samlinger af data, struktureret i tabeller med relationer på kryds og tværs. En datamodel for en database beskriver strukturen af databasen, dens indhold og relationer på et konceptuelt niveau og danner udgangspunkt for implementeringen af databasen.

Database_DigitalPreservation

I denne artikel anvendes begrebet ”datamodel for en database” til at betegne en model for strukturering af den information, der indgår i en konkret database, dvs. den logiske beskrivelse af databasens indhold og relationer.

En datamodel for en database kan også betegne det overordnede princip for opbygning og strukturering af databaser, hvilket eksempelvis kan være den relationelle model, der er en meget udbredt og anvendt model for opbygning af databaser. Du kan finde mere information om forskellige modeller for opbygning af databaser i artiklen Hvad er en database, og hvordan bevarer man den?.

I den logiske beskrivelse af databasens indhold og relationer indgår der begreber som entiteter, attributter, relationer og nøgler. Endvidere beskrives vigtige overvejelser om normalisering og den konkrete implementering.

Entiteter

Når man ønsker at oprette en database til strukturering og lagring af information, skal man først afklare, hvad formålet med databasen er, og hvilke fænomener/ting/begreber, man ønsker at registrere oplysninger om. Det kan være personer, bygninger, sager, billeder, dokumenter, virksomheder, steder, hændelser osv. Sådanne kaldes for ”entiteter”.

Et eksempel kan være et museum, der ønsker at oprette en database med oplysninger om museets billeder. Den væsentligste entitet her vil naturligvis være ”Billede”. Derudover kan der være andre entiteter, afhængig af, hvilke typer af information, museet har behov for at registrere, f.eks. ”Lokale” til angivelse af billedets fysiske placering, eller ”Giver” til angivelse af oplysninger om, hvem der har doneret billedet til museet.

Attributter

Når man har indkredset de relevante entiteter, skal man tilsvarende afklare hvilke egenskaber, man ønsker at registrere om de pågældende entiteter. I databasemodellering kalder man sådanne egenskaber for attributter. Attributter til ”Billede” kunne f.eks. være ”årstal”, ”genre”, ”kunstner”; en attribut til ”Lokale” kunne være ”lokalenummer” og en attribut til ”Giver” kunne være ”navn”.

Det er ikke sikkert, at man på forhånd har det fulde overblik over, hvilke entiteter, man har behov for i sin database. Man kan imidlertid sagtens begynde med de oplysninger, man ved, man ønsker at registrere, for derefter at inddele/klassificere oplysningerne i relevante entiteter.

Relationer og nøgler

Man skal også gøre sig overvejelser om, hvordan databasens entiteter hænger logisk sammen.

Sammenhænge mellem entiteter kaldes relationer. Eksempelvis vil der i museets billeddatabase være en relation mellem ”billede” og ”lokale”, så det kan registreres, hvor et billede fysisk befinder sig samt mellem ”billede” og ”giver”, så det kan registreres, hvem der har doneret billedet til museet. Derimod vil der måske ikke være behov for nogen relation mellem ”giver” og ”lokale”.

Når man strukturerer sin information om entiteter i tabeller, skal man for hver entitet finde en attribut, der unikt identificerer den pågældende entitet. Har man eksempelvis en navnetabel, vil hverken fornavn (f.eks. ”Søren”), efternavn (f.eks. ”Jensen”) eller en kombination heraf (”Søren Jensen”) nødvendigvis være nok til at identificere den enkelte person, og man må i stedet finde noget andet, som unikt identificerer en person. Den unikke identifikation bruges til at danne tabellens primærnøgle.

Normalisering

For at sikre, at databasen bliver konsistent og at der ikke opstår fejl i data, når man indsætter, opdaterer eller sletter data, bør databasen være normaliseret. Normalisering skal ikke gennemgås i denne artikel, blot skal det nævnes, at et vigtigt element i normaliseringen er at sikre, at man undgår redundans. Ved redundans forstås, at samme oplysning registreres flere forskellige steder i databasen.

Fra konceptuel til logisk datamodel

En overordnet oversigt over en databases entiteter og relationer kan kaldes for en konceptuel datamodel. En konceptuel datamodel er imidlertid ikke nok til rent faktisk at kunne oprette databasen i et databaseprogram som f.eks. Access, DB2 eller Microsoft SQL-server.

Hvis en konceptuel datamodel skal kunne implementeres i praksis i et databaseprogram, skal den først omsættes til en logisk datamodel. På det logiske niveau definerer man tabeller (eller entitetsklasser), der udgør det, som i den konceptuelle datamodel repræsenteres af entiteter. Disse tabeller indeholder alle relevante attributter for en given entitet.

Når datamodellen skal implementeres i praksis i et bestemt databaseprogram, skal man afklare, hvilke datatyper, der skal bruges til de forskellige attributter, afhængigt af om der er tale om tekst, tal, datoer osv. (f.eks. CHAR, INTEGER, DECIMAL, BLOB eller DATE).

Jan Dalsten Sørensen, Rigsarkivet, Januar 2014/ Revideret Januar 2015

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *