Database

En mængde data, der er organiseret således, at data opdateres og tilgås på en veldefineret og kontrolleret måde. Organiseringen af og tilgangen til data i databasen styres af et databasesystem. Typisk vil en database omfatte en større mængde data og databasesystemets rolle er bl.a. at sikre at tilgang til data foregår effektivt - også når der er tale om meget store datamængder.

Princippet, som databasen er organiseret efter og som databasesystemet så at sige er en implementation af, betegnes normalt en datamodel. Den historiske udvikling inden for databaseteknologien har resulteret i fem centrale datamodeller, der har givet anledning til fem hovedtyper af databaser: hierarkiske databaser, netværksdatabaser, relationsdatabaser, deduktive databaser og objektorienterede databaser.

Relationsdatabaser er idag dominerende. Hierarkiske og netværks-databaser er efterhånden historie og deduktive databaser har aldrig rigtigt slået igennem. Objektorienterede databaser har idag en betydning, som de fleste forventer fortsat vil øges. Imidlertid er det endnu uklart hvad udviklingen vil føre til, bl.a. fordi der er opstået to retninger indenfor objektorientering og databaser: den objektorienterede og den objektrelationelle.

Den hierarkiske database har sin oprindelse i 1960'erne, hvor de primære lagringsmedier var hulkort og magnetbånd, der i praksis kun kunne læses eller skrives sekventielt. Derfor var de første hierarkiske databasesystemer baseret på denne egenskab og organiserede deres data i forældre/børn strukturer. Er en forælder indlæst, kan databasen få fat i alle børn i rækkefølge, derefter den næste forælder, de tilhørende børn osv.

Da diskteknologi med direkte tilgang blev almindelig, blev også de hierarkiske databaser udvidet til i en vis grad at kunne håndtere direkte opslag, men det førte samtidigt til, at netværksdatabasen blev udviklet. Disse databasesystemer løser begrænsningerne i den hierarkiske model ved at muliggøre, at poster hænger sammen på alle mulige måder og ikke bare som forældre/børn, dvs. relationerne kan afbildes som en graf snarere end som en træstruktur. Der er derfor en meget høj grad af direkte tilgang til de registrerede data i netværksdatabaser med en mængde valgbare funktioner til definition af f.eks. sammenhænge, indeksering og fremfinding af data. Netværksdatabaser kan derfor blive meget komplekse og vanskelige at overskue i vedligeholdelse og brug.

Relationsdatabasen hviler derimod på et veldefineret matematisk-teoretisk grundlag inden for mængdelære og relationel algebra, hvor hensigten er, at brugere ved hjælp af mængdeorienteret tankegang skal kunne fortælle databasesystemet, hvilket resultat der ønskes, og ikke hvordan data skal fremfindes, med andre ord ikke beskæftige sig med lagringsstrukturen (såsom referencerne i hierarkiet eller netværket) for data. De relationelle databasesystem er så udstyret med en meget central komponent - en query optimizer, der kan beregne en effektiv plan for udførelse af en forespørgsel. Relationsdatabaser havde i 70'erne og starten af 80'erne et berettiget ry for ikke at være tilstrækkeligt effektive. Det var først i sidste halvdel af 80'erne at relationsdatabaser slog igennem, netop i kraft af at det lykkedes for databaseleverandørerne at udvikle tilstrækkeligt effektive query optimizere.

Fundamentet for den deduktive database er formel logik og deduktive databaser har da også primært spillet en rolle i forbindelse med formaliseringer og teoretiske overvejelser i forbindelse med forskning relateret til databaser. Deduktive databaser er dermed næppe at betragte som et selvstændigt databaseprincip, men nok snarere som et emne, der iøvrigt er tæt knyttet til bl.a. logikprogrammering og vidensrepræsentation.

Objektorienterede databaser er oprindeligt opstået med ideen om at indføre persistens i forbindelse med objektorienteret programmering, dvs. ved det fænomen at objekter kan overleve fra en kørsel af det objektorienterede program til den næste. Den ene af de to skoler, der efterhånden har dannet sig omkring objektorientering og databaser (objektorienteret database) har da også rødder i objektorienteret programmeringskredse. Den anden skole (objektrelationel database), hvis rødder er i databaseområdet, bygger på ideen om at udvide den relationelle model for data til også at omfatte objektorientering.