Relationsdatabas
Wikipedia
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 Codd, men den strikta innebörden har luckrats upp av nutida databastillverkare.
Bland de mest kända relationsdatabaserna räknas idag Oracle, Microsoft SQL Server, och svenska MySQL (vilken också Wikipedia använder sig av).
Innehåll |
[redigera] Beståndsdelar
Strängt taget består en relationsdatabas endast av relationer (ofta kallade "tabeller"). Andra objekt betraktas dock ofta som del av databasen eftersom de hjälper att organisera och strukturera informationen.
[redigera] Relationer
En relation definieras som en mängd av tupler (eller poster) som har samma attribut. Detta representeras oftast i form av en tabell i vilken data är organiserad i rader och kolumner. I en relationsdatabas måste alla data i en viss kolumn vara av samma domän, det vill säga ha samma datatyp. I relationsmodellen bör tuplerna inte ha någon specifik ordning, och attributen bör inte ha någon ordning inom en tupel.
I praktiken uppnår databaser inte detta matematiska ideal. Till exempel kräver SQL-standarden att kolumnerna i en tabell måste ha en definerad 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 får inte påverka resultaten av databasfrågor.
Det är lätt att föreställa sig en relation om man föreställer sig att varje tupel ä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 tupel 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 tupler.
[redigera] Restriktioner
En restriktion är ett sätt att begränsa de data som får förekomma i relationerna. Dessa restriktioner definieras vanligtvis i formella uttryck som resulterar i ett booleansk 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 betraktast dock restriktioner som komponenter i databasen.
[redigera] Domän
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".
[redigera] Nycklar
En tupel mostvarar 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.
Dessvärre är förnamn inte unika över större mängder, som till exempel hela Sveriges befolkning. Därför tilldelas svenska medborgare ett personnummer, som är unikt för varje person i Sverige, och som 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 intressant data med logisk anknytning till tupeln (som förnamnet i familjeexemplet ovan) kallas den naturlig nyckel. Om nyckeln istället är automatiskt genererad och har ingen djupare anknytning till resten av objektets attribut (oftast i form av ett serienummer) kallas den surrogatnyckel.
[redigera] Främmande nycklar
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.
[redigera] Övergångsrestriktioner
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".
[redigera] Andra restriktioner
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".
[redigera] Normalisering
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.
[redigera] Se även
- 4D
- dBase
- Oracle
- Microsoft SQL Server
- FoxPro
- Dataflex
- Paradox