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

4 Relationelle dataobjekter: Domæner og relationer

4.1 Et introducerende eksempel

En relation svarer til det, man indtil nu i bogen har kaldt en tabel.

En tupel svarer til en række i en sådan tabel. Antallet af tupler kaldes kardinaliteten, og antallet af rækker kaldes graden.

Primærnøglen er en unik identifikation for tabellens rækker - en kolonne eller en kombination af kolonner med den egenskab, at der på et givet tidspunkt aldrig er to rækker i tabellen med samme værdi i de pågældende kolonner.

Et domæne er en pulje af værdier, hvorfra en given attribut i en given relation henter sin aktuelle værdi. [79]

4.2 Domæner

Udgangspunktet er den mindste semantiske dataenhed, som antages at være den enkelte dataværdi. Sådanne værdier kaldes skalarer. [81]

Et domæne defineres som en navngiven mængde skalare værdier, som alle er af samme type. Hver attribut skal være "defineret på" nøjagtig et underliggende domæne. [81]

Domæne-begrænsede sammenligninger

Hvis to attributter henter deres værdier fra samme domæne, så vil sammenligninger (og dermed også joins, unions og mange andre operationer) sandsynligvis give mening. [82]

Datadefinition

Domæner er primært begrebsmæssige af natur. De bør som et minimum være defineret som en del af database definitionen. [82]

Hver attributdefinition bør inkludere en reference til det relevante domæne, så systemet ved, hvilke attributter, der er sammenlignelige med hinanden og hvilke, der ikke er. [83]

Det er en god ide at lade attributterne have samme navne som de underliggende domæner, hvis det er muligt - eller i det mindste at lade navnet på domænet indgå som det sidste led i navnet på attributten. [83]

Det skal være muligt at nedlægge et eksisterende domæne, når man ikke længere har brug for det. [84]

Domæner og datatyper

Et domæne er i virkeligheden hverken mere eller mindre end en datatype. [85]

4.3 Relations

Historisk set har der været en del forvirring omkring dette tilsyneladende enkle begreb. En relationsvariabel er en variabel i samme forstand som i forbindelse med programmeringssprog.. Den værdi, som en sådan variabel på et givet tidspunkt indeholder, kaldes en relationsværdi. [86]

Relationsværdier

En relation består af to dele, en overskrift (heading) og en krop. [86]

Overskriften består af et afgrænset sæt attributter. Kroppen består af et sæt tupler. [87]

Mere terminologi

Antallet af attributter i en given relation - eller i det ækvivalente antal underliggende domæner - kaldes relationens grad. [89]

Domæner er statiske, relationer er dynamiske. [89]

Egenskaber ved relationer

Relationer ejer visse egenskaber, som alle er direkte afledt af den tidligere angivne definition på begrebet relation. Alle egenskaber er vigtige: [91]

Der må ikke være duplikate tupler

Denne egenskab er en følge af at relationens krop er et matematisk sæt (af tupler), og matematiske sæt må pr. definition ikke indeholde duplikate elementer. [92]

En vigtig logisk konsekvens af denne kendsgerning er, at der altid er en primærnøgle. Eftersom alle tupler er unikke, følger det heraf, at i det mindste kombinationen af alle relationens attributter kan fungere som primærnøgle, hvis ikke en mindre del af relationens attributter i kombination kan fungere som primærnøgle. [92]

Tupler er uordnede - oppefra og ned.

Denne egenskab er også en følge af, at relationens krop er et matematisk sæt. Matematiske sæt er ikke ordnede. [92]

Attributter er uordnede - fra venstre mod højre

Denne egenskab følger af den kendsgerning, at relationens overskrift også er defineret som et sæt (af attributter). [93]

Alle attributters værdier er atomare

Denne egenskab er en konsekvens af den kendsgerning, at alle underliggende domæner udelukkende indeholder atomare værdier. [93]

Relationer må ikke indeholde gentagne grupper. En relation, som opfylder denne betingelse, siges at være normaliseret, eller at være i første normalform. [93]

4.4 Typer af relationer

I dette afsnit identificeres nogle af de forskellige typer af relationer, som kan forekomme i et relationelt system:

  1. En navngivet relation er en relationsvariabel, som er definereret overfor DBMS (med f.eks. CREATE TABLE). [95]
  2. En basisrelation er en navngivet relation, som ikke er en afledt relation. [95]
  3. En afledt relation er en relation, som er defineret (ved hjælp af relationelle udtryk) på basis af andre, navngivne relationer - og i sidste ende på basis af basisrelationer. [95]
  4. En relation, som kan udtrykkes, er en relation, som kan dannes på basis af et sæt navngivne relationer ved hjælp af et relationelt udtryk. [95]
  5. Et view er en afledt, navngivet relation. Views er samtidig virtuelle - de er udelukkende repræsenteret i systemet ved deres definition på basis af andre navngivne relationer. [96]
  6. Et snapshot er også en afledt, navngivet relation. I modsætning til et view, er et snapshot reelt - ikke virtuelt. [96]
  7. Et forespørgselsresultat er en ikke-navngivet afledt relation, som er resultatet af udførelsen af en forespørgsel. [96]
  8. Et mellemresultat er en ikke-navngivet afledt relation, som er resultatet af en evaluering af et relationelt udtryk, som er indlejret i et større relationelt udtryk. [96]
  9. En lagret relation er en relation, som kan udtrykkes, og som understøttes i det fysiske lager på en "direkte, effektiv" måde. [96]

4.5 Relationer og prædikater

Det bør være intuitivt klart for alle, at enhver relation, basis eller afledt, har en tilsigtet fortolkning eller betydning. [97]

Prædikatet for en given relation udgør kriteriet for at en opdatering er acceptabel for den pågældende relation. [97]

4.6 Relationelle databaser

En relationel database er en database som af brugeren opfattes som en samling af normaliserede relationer af forskellige grader. [98]

Indlagt 25. april 1997