Citater fra C.J.Date "An Introduction to Database Systems" kapitel 24:

24. Flere objekt-orienterede begreber

24.2 Emnerne

Database programmeringssprog

I mange OO systemer er der tale om et integreret sprog, hvor værtssproget og database sproget er knyttet tæt sammen. [670]

Begrebet impedans mismatch refererer til den niveauforskel, der er mellem et typisk programmeringssprog, som opererer med en record ad gangen, og relationelle sprog som SQL, der opererer med en mængde (tabel) ad gangen. [670]

Versionsstyring

I mange applikationer er der behov for at vedligeholde flere forskellige versioner af et givet objekt. Dette indebærer typisk:

Transaktionsstyring

Det grundlæggende problem er, at komplekse transaktioner kan vare flere timer eller dage, i stedet for få millisekunder som i traditionelle systemer. Som en konsekvens heraf:

Lange transaktioner og indlejrede transaktioner er mulige løsninger på disse problemer. I forbindelse med lange transaktioner anvendes en serie savepoints, som opdeler transaktionen i en sekvens af aktioner, som hver for sig kan fortrydes med rollback. I forbindelse med indlejrede transaktioner organiseres transaktionen som et rekursivt hierarki af aktioner. [672]

Skemaudvikling

Visse applikationer kræver en mere avanceret form for support af skemaændringer. [Dette er typisk tilfældet, hvor der forekommer mange og hyppige skemaændringer.] [673]

Performanceovervejelser

Rå performance er et af de højeste mål i alle OO systemer. Flere faktorer er relevante:

24..3 Nogle spørgsmål

Hvordan behandles en række traditionelle aspekter ved databaser i OO sammenhæng?

Relationer

I OO sammenhæng hentyder begrebet relation til de sammenhænge, som repræsenteres med fremmednøgler i en relationel database. Der skelnes mellem super-subklasse relationer, en-til-mange relationer og mange-til-mange relationer. [675]

Super-subklasse relationen repræsenteres af klassehierarkiet via arvemekanismen. [675]

En-til-mange relationen repræsenteres af containment hierarkiet (et objekt indeholder attributter, hvor andre objektklasser optræder som type), eller med en mekanisme kaldet inverse variabler. [675]

Mange-til-mange relationer repræsenteres via objektdeling (flere objekter indeholder henvisning til det samme objekt) eller med inverse variabler. [676]

Inverse variabler

I stedet for at anvende containment hierarki kan man definere to uafhængige objektklasser, hvor begge klasser indeholder referencer til den anden klasse. De to sæt referencer bliver herved hinandens inverse. Det er indlysende, at disse referencer skal holdes gensidigt konsistente. [676]

Referencemæssig integritet

Reference validering. I forbindelse med etablering kontrolleres, at alle referencer er af den korrekte type. Sletninger er muligvis ikke tilladte - i stedet kan man lade systemet foretage garbage collection, når der ikke længere refereres til et givet objekt.

Systemvedligeholdt. Systemet sørger for, at alle referencer automatisk bliver ajourført. [677]

Integritet

I OO systemer vil integritetsreglerne som oftest skulle implementeres via procedural kode. [677]

I OO systemer kan man ikke definere funktionelle afhængigheder. Det anses af nogle ligefrem for at være en dyd: "Komplekse data kan repræsenteres direkte i det objekt-orienterede system uden noget behov for normalisering". [678]

Metoder der opererer på flere klasser

Princippet om at en funktion eller metode følger en objektklasse fungerer fint sålænge metoden kun opererer på en klasse. Der opstår derimod problemer, hvis operationen skal omfatte flere klasser. Dette er en følge af indkapslingsprincippet, som Date synes er en dårlig ide. [679]

Ad hoc forespørgsler

Hvis det i OO systemer skal være muligt at foretage ad hoc forespørgsler, må man definere klasser, der indeholder samlinger af de objekter, man ønsker at lave forespørgsler på, og man må forsyne denne klasse med et passende sæt operationer, som kan tillade de generelle forespørgsler, man er interesseret i. [680]

Indlagt 25. april 1997