relationsdatabase

Artikelstart

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.

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:

Navn Gade Postnr.
Arne Nielsen Oldenvej 19 2830
Børge Olsen Duevej 4 2860
Niels Hansen Bredgade 2 2800
Anna Skovlund Blåbærvej 5 2800

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

Postnr. By
2800 Lyngby
2820 Gentofte
2830 Virum
2860 Sø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.

Kommentarer

Din kommentar publiceres her. Redaktionen svarer, når den kan.

Du skal være logget ind for at kommentere.

eller registrer dig