Objektorienteret database

(eller: OODB).

Betegnelsen for en type databaser, der organiserer data i objekter og som er tæt knyttet til objektorienteret programmering, idet der som udgangspunkt blot er indført persistens. Et objekt indeholder både datastruktur og funktioner (metoder), der kan udføres på datastrukturen. Dermed kan funktionalitet, der ellers ville blive programmeret i anvendelsesprogrammer (opgaveprogrammel), i en vis udstrækning kunne indbygges i metoder på databaseobjekter. Et anvendelsesprogram kan så nøjes med at udføre kald af objekters metoder.

Dette giver en høj grad af genbrug af programkode, hvilket er en af de væsentligste fordele ved objektorienteret teknologi. Et af de største problemer omkring udvikling af opgaveprogrammel er netop, at samme funktionalitet ofte programmeres et utal af gange. Dette giver mulighed for fejl, og det gør vedligeholdelse vanskelig.

Objektorienterede databaser ses som en type databaser, der i højere grad end traditionelle kan understøtte meget komplekse datastrukturer og meget komplekse sammenhænge, f.eks. databaser til lyd og billede, til multimedie og til geografisk information (GIS).

Der har udviklet sig to retninger inden for objektorientering og databaser; den objektorienterede og den objektrelationelle, der normalt skelnes ved betegnelserne "objektorienteret database" og objektrelationel database. Disse har rødder i hhv. objektorienteret programmering og i databaserområdet (relationsdatabase). Begge retninger bygger på objektorienteret repræsentation, men de adskiller sig ved den betydning der tillægges relationsbegrebet. Det er næsten uden betydning i den første og meget centralt i den sidste retning. Derfor er det blevet almindelig sprogbrug at kalde den sidste retning for objektrelationel i stedet for objektorienteret. De centrale begreber, som karakteriserer en objektorienteret database er klasser (class), indkapsling (encapsulation) og nedarvning (inheritance, se klassehierarki).

En klasse er betegnelsen for en objekttype, f.eks. kreditorer, bilag, abonnenter. Som i andre typer databaser er der forekomster af disse, f.eks. en specifik kreditor, et bestemt bilag og en bestemt abonnent.

Indkapsling har to betydninger. Den ene er, at den eneste måde, hvorpå man kan få fat i data i et objekt, er at sende en besked til en klasse. Den anden er, at det kun er nødvendigt for en opgave (eller en bruger) at kende beskedformat og resultatformat. Implementeringen af datastruktur og metoder inden i objektet er fri, så længe beskeder og resultatformat ikke ændrer sig. Dette støtter datauafhængighed, så det ikke er nødvendigt at ændre i anvenderprogrammer, selv om der ændres i objekternes interne struktur.

Nedarvning betyder, at klasser kan arve datastruktur og metoder fra andre mere generelle klasser. De kaldes for subtyper af de generelle klasser. F.eks. vil klassen sælger kunne være en subtype af den mere generelle klasse medarbejder. Klassen sælger arver de metoder og datastrukturer, der er generelle for medarbejder, f.eks. metoden til at oprette en medarbejder og datastrukturen for navn og adresse. I klassen sælger kan særlige metoder og datastrukturer relevante for sælgere placeres, f.eks. metoden til ændring af fast løn, samt datastruktur for løn og sælgertype.

Forfattere: 
Troels Andreasen
Casper Thomsen