Redaktion og opdatering af indholdet på denstoredanske.dk er indstillet pr. 24. august 2017. Artikler og andet indhold er tilgængeligt i den form, der var gældende ved redaktionens afslutning.

  • Artiklens indhold er godkendt af redaktionen

relationsdatabase

Oprindelig forfatter HBHa Seneste forfatter HaAn

relationsdatabase, database, der bygger på den relationelle datamodel, foreslået af den amerikanske forsker ved IBM Edgar F. Codd (1923-2003) i 1970.

Modellen angiver en metode, hvormed man kan definere en database, lagre og vedligeholde data og stille forespørgsler; den bygger på de matematiske discipliner prædikatslogik og mængdelære og udgør et konsistent grundlag for håndtering af data. Man kan repræsentere et vilkårligt logisk prædikat ved at angive en relation (også kaldet tabel) med data, der gør prædikatet sandt.

Den relationelle datamodel vandt i løbet af 1980'erne almindelig accept og er stadig den mest anvendte model. Eksempler på relationsdatabaser er IBM's DB2, Microsofts SQL Server og Oracle.

Annonce

Se også database og SQL.

Eksempel på relationsdatabase

Et simpelt adressekartotek kan tjene som eksempel på informationer, der er organiseret i en relationsdatabase.

En relation kan betragtes som en tabel, og den beskrives ved et såkaldt skema. Fx kan en relation med skema adresse (navn, gade, postnr.) opskrives som en tabel således:

NavnGadePostnr.
Arne NielsenOldenvej 192830
Børge OlsenDuevej 42860
Niels HansenBredgade 22800
Anna SkovlundBlåbærvej 52800

og en relation med skemaet postdistrikt (postnummer, by) kunne se således ud

Postnr.By
2800Lyngby
2820Gentofte
2830Virum
2860Søborg

Rækkerne benævnes tupler, og kolonnerne attributter. Der kan være et vilkårligt antal tupler og attributter i en relation. Attributterne antager værdier inden for et bestemt værdiområde, kaldet et domæne. Domænet for attributten postnr. kunne være mængden af registrerede danske postnumre; en sådan begrænsning er bl.a. med til at sikre mod indførsel af fejl – indtastes fx "280" som postnummer, giver systemet en fejlmeddelelse til brugeren.

En relationsdatabase er en samling af relationer. Til behandling af data benyttes programmeringssprog, der bl.a. indeholder faciliteter for indsættelse og sletning af tupler, ændring af attributter samt forespørgsler til databasen. Man tilstræber, at alle operationer i en relationsdatabase giver en ny relation som resultat. Fx kunne en forespørgsel til eksemplets base i databasesproget SQL se således ud:

select navn, gade, adresse.postnr, by

from adresse, postdistrikt

where adresse.postnr. = postdistrikt.postnr. and adresse.postnr. 2800

hvor svaret ville være en relation indeholdende tupler fra første og anden tupel i adresse, kombineret med attributten by fra tredje og fjerde tupel i postdistrikt, altså Arne Nielsen, Oldenvej 19, 2830, Virum, og Børge Olsen, Duevej 4, 2860, Søborg.

Relationerne er knyttet til hinanden vha. den fælles attribut postnr, og de samles i eksemplet ved en såkaldt naturlig join (where adresse.postnr. = postdistrikt.postnr).

Bemærk nødvendigheden af at skrive "adresse.postnr", fordi "postnr" optræder i begge skemaer. Forståelig navngivning af både skemaer og attributter er meget vigtig, når man som bruger introduceres til en ny database. Derfor indeholder de fleste databaseprodukter mulighed for at tilknytte kommentarer, ledetekster og oversigtsdiagrammer for at støtte brugernes forståelse af data.

Principielt kunne alle informationerne samles i én tabel, men opsplitningen giver nogle fordele, fx at redundans, dvs. at den samme information findes flere steder, kan undgås. I én tabel ville den information, at postnummer 2800 er Lyngby, være indeholdt to gange (ved både Anna og Niels). Problemet med denne gentagelse er, at den fysisk gør databasen unødig stor, og væsentligere, at der opstår fare for inkonsistenser; 2800 kunne fx i et fejlagtigt udfyldt byfelt betyde Virum.

Referér til denne tekst ved at skrive:
Henning Bernhard Hansen: relationsdatabase i Den Store Danske, Gyldendal. Hentet 10. december 2019 fra http://denstoredanske.dk/index.php?sideId=150039