Relationsdatabas

Från Wikipedia
Hoppa till: navigering, sök

En relationsdatabas är en databas där information ("data") är organiserad i relationer (även kallade tabeller), eventuellt med restriktioner inom en och samma relation eller mellan relationer. Termen "relationsdatabas" definierades ursprungligen 1969 av Edgar CoddIBM, men den strikta innebörden har luckrats upp av nutida databastillverkare.

Bland de mer kända större relationsdatabaserna räknas idag Oracle, Microsoft SQL Server, IBM DB2 och ursprungligen svensk/finska MySQL (vilken också Wikipedia använder sig av). Bland mindre databaser är Microsoft Access vanligt förekommande eftersom det ingår i större versioner av sviten Microsoft Office. (I gratisprogrammet OpenOffice finns en databas som delvis liknar Access.) En användarvänlig databas, som finns i både mindre och större versioner är Filemaker Pro, som ursprungligen tagits fram för Macintosh men också finns för Microsoft Windows.


Beståndsdelar[redigera | redigera wikitext]

Strängt taget består en relationsdatabas av tabeller. För att göra dessa meningsfulla, få dem att bli något mer än bara tabeller binds de samman av relationer och restriktioner. Sammantaget ger detta en strukturerad mängd information, en databas - en relationsdatabas.

Relationer[redigera | redigera wikitext]

En relation definieras som en mängd av poster (tupler) som har samma attribut. Detta representeras i form av en tabell i vilken data är organiserad i rader och kolumner.

I en relationsdatabas måste all data i en specifik kolumn vara av samma typ, datatyp, (domän). I relationsmodellen behöver posterna inte ha någon specifik ordning, attributen behöver inte heller vara i någon specifik ordning inom en post.

I praktiken uppnår databaser inte detta matematiska ideal. Till exempel kräver SQL-standarden att kolumnerna i en tabell måste ha en definierad ordning. Alla data som lagras i ett datorminne måste också ha någon form av ordning eftersom datorminnen är linjära. Ordningen i vilken relationen lagras kan vara av avgörande betydelse för databasens prestanda. Poängen är dock att ordningen i vilken relationen är lagrad inte får påverka resultaten av databasfrågor.

Det är lätt att föreställa sig en relation om man tänker sig att varje post är en rad och varje attribut en kolumn. Så brukar det också presenteras på skärmen. En alternativ "vy" är att välja se varje post för sig med (samtliga eller några av) attributen inpassade i någon form av rapportblankett, och sedan "bläddra" mellan sidor och respektive poster.

Domän[redigera | redigera wikitext]

En domän är den mängd värden som är tillåtna för ett visst attribut. Typiska domäner i relationsdatabaser är heltal, text, och flaggor. Utöver dessa fördefinierade domäner kan man begränsa domänen ytterligare; till exempel kan ett textattribut vara begränsat till värdena "Man", "Kvinna", eller "Okänt".

Nycklar[redigera | redigera wikitext]

Detta avsnitt är en sammanfattning av Nyckel (databas)

En post motsvarar ofta något objekt och information förknippad med det, oavsett om objektet är ett fysiskt objekt eller ett abstrakt koncept. En nyckel är en slags restriktion som ser till att objektet eller kritisk information om ett objekt inte dupliceras. Till exempel kan man inom en familj ha restriktionen att inga två familjemedlemmar har samma förnamn. Om information om denna familj lagrades i en relationsdatabas skulle förnamnen kunna användas som nyckel.

Förnamn är sällan unika över grupper större än den innersta familjekretsen, som till exempel hela landets befolkning. Detta är ett skäl till Sveriges medborgare tilldelas ett nummer, ett personnummer, unikt för var och en i landet. Personnummer används som nyckel i både privata och offentliga relationsdatabaser.

De flesta relationer har åtminstone en nyckel, den så kallade primärnyckeln. Om nyckeln är faktiskt data med logisk anknytning till posten (som förnamnet i familjeexemplet ovan) kallas den naturlig nyckel. Om nyckeln istället är automatiskt genererad och inte har djupare anknytning till resten av objektets attribut (till exempel ett serienummer) kallas den surrogatnyckel.

Främmande nycklar[redigera | redigera wikitext]

En främmande nyckel är inte en nyckel enligt definitionen ovan. Snarare är en främmande nyckel en hänvisning till en nyckel i en annan relation. Detta betyder att den hänvisande tupeln har, som del av sina attribut, värden som tillsammans bildar en nyckel i den hänvisade relationen.

Exempel: ett företag har flera avdelningar, och varje anställd är medlem i exakt en avdelning. Denna restriktion kan uttryckas med den främmande nyckel. Föreställ dig en relation för avdelningarna, "Avdelningar". Varje avdelning har ett avdelningsnamn och en surrogatnyckel för avdelningen som kallas "avdelningsID". Relationen över de anställda skulle då kunna ha ett attribut "avdelningsID" markerat som en främmande nyckel från relationen "Avdelningar". Relationsdatabassystemet kan nu styrka denna restriktion genom att se till att en nyanställd måste vara förknippad med ett avdelningsID, och att en avdelning inte kan tas bort från relationen "Avdelningar" om det fortfarande finns anställda kvar som hänvisar till den avdelningen.

Sekundärnycklar[redigera | redigera wikitext]

En sekundärnyckel är inte per se en nyckel, snarare är den en hänvisning till en primärnyckel i en annan tabell.

Exempel: en skolklass. Tabell innehåller i sig inga fristående data. All information i denna tabell hämtas från två andra, fristående tabeller och därmed två fristående set av primärnycklar. Primärnycklar från elevtabellen och från skolans egna primärnyckel. I detta sammanhang skapar de ett samband, en relation. Skolklassens utgörs alltså att dessa två värden, primärnycklar från två tabeller som i denna tabell fungerar som sekundärnycklar.

Restriktioner[redigera | redigera wikitext]

En restriktion är ett sätt att begränsa de data som får förekomma i databasen. Dessa restriktioner definieras vanligtvis i formella uttryck som resulterar i ett booleskt värde som anger huruvida restriktionen gäller eller inte. I den strikta definitionen av relationsdatabas är restriktioner inte del av själva databasen. Eftersom de ingår i databasmotorer och spelar en integrerad roll i informationens organisation betraktas dock restriktioner som komponenter i databasen.

Övergångsrestriktioner[redigera | redigera wikitext]

En övergångsrestriktion är ett sätt att se till att data inte kan gå in i ett omöjligt tillstånd från ett tidigare tillstånd. Till exempel borde det inte vara möjligt för en person att byta civilstånd direkt från "ogift" till "frånskild". De enda tillåtna civilstånden efter "ogift" skulle kunna begränsas till "gift" eller "sambo".

Andra restriktioner[redigera | redigera wikitext]

Andra restriktioner kan tillämpas för att uttrycka olika sorters affärsregler. Ett exempel är restriktionen "antalet bilar en individ äger måste vara icke-negativt".

Normalisering[redigera | redigera wikitext]

För att få en lättadministrerbar databas bör sammanhörande uppgifter föras till samma relation. Förhållandena mellan relationer skapas sedan mellan en för två eller flera tabeller gemensamt nyckelattribut genom normalisering. Förhållandet kan vara ett till ett, en till många, många till en och många till många.

Att framställa de bästa relationerna och de korrekta förhållandena dem emellan är en utmaning vid skapandet av databasen, framför allt eftersom det är kostsamt att ändra på förhållandena när databasen tagits i drift.

Exempel på Relationsdatabashanterare[redigera | redigera wikitext]