Introduktion till databaser
Vad är en databas?
En databas är en välorganiserad, det vill säga uppbyggd enligt nedskrivna regler, centraliserad, samling av data.
Note
|
Vi skiljer på data och information.
Information är behandlad data - det vill säga data, som någon kan använda för att tillföra något slags värde i någon slags process eller sammanhang. Man kan säga att data blir information när någon tittar på eller behandlar den. |
Databashanterare / Database Management System
En Databashanterare/Databashanteringssystem, eller DBMS (Database Management System), är mjukvara som gör det möjligt att på ett effektivt sätt definera och modifiera innehåll i en databas.
Man kan inte kommunicera direkt med databasen; all kommunikation sker via databashanteraren.
Det finns i dag två huvudsakliga typer av databaser: relationsdatabaser (som den här guiden handlar om) och dokument/nod-baserade (berörs inte i den här guiden).
Relationsdatabaser bygger på relationsalgebra (fixa länk). Som tur är behöver man inte förstå all bakomliggande teori för att använda kommunicera med en databashanterare.
Andra ord som används för att skilja på dessa två typer av databaser är SQL (relationella) och NoSQL (dokument/nod-baserade).
Det finns flera olika databashanterare för relationsdatabaser, t.ex SQLite, MySQL, MariaDB, PostGres, Oracle, MSSQL.
Varför använda en relationsdatabas
Det finns flera anledningar till att använda en (relations)databas:
Normalisering av data
Normalisering, eller normaliserad data innebär att man minskar förekomsten av redundant data.
Redundant data innebär att samma data kan finnas på flera ställen samtidigt. Detta tar mer plats än om datan finns på enbart ett ställe.
Konsistent data
Om samma data finns på flera ställen är det stor risk att datan blir inkonsistent, det vill säga, beroende på vilket ställe man kollar kan man få olika svar.
Genom normalisering kan man förhindra eller minska risken för inkonsistent data.
Enkel delning av data
Flera applikationer kan använda samma databas, och därmed använda samma data.
En väldokumenterad standard för informationsutbyte
SQL är ett väldokumenterat språk som väldigt många utvecklare behärskar. Det är därför lätt för nya utvecklare att sätta sig in i ett nytt system.
Säkerhet och integritet
De flesta databashanterare innehåller avancerade kontroller av vem som har rättighet att utföra olika operationer i databasen.
Validering av data
I de flesta databashanterare kan man skriva regler för hur rader och kolumner i tabeller ska se ut.
T.ex kan man bestämma att alla rader i användartabellen måste innhålla ett användarnamn, och att varje användarnamn måste vara unikt. Databashanteraren gör det i så fall omöjligt att skriva rader i användatabellen som saknar användarnamn, eller där användarnamnet redan finns på någon annan rad i tabellen.
Transaktionssäkerhet
Ofta behöver man utföra operationer i flera, av varandra beroende steg.
Säg till exempel att du skriver mjukvara för att hålla koll på bankkonton, och du vill föra över pengar från ett konto till ett annat konto. Då måste du:
-
Ta bort pengarna från konto 1.
-
Föra in pengerna på konto 2.
Alternativt
-
Föra in pengarna på konto 2.
-
Ta bort pengarna från konto 1.
Säg att något går fel i steg 2 - kanske har någon angett ett felaktigt kontonummer, eller under tiden som instruktionerna utförs har konto 2 tagits bort. I ett system utan transaktionssäkerhet skulle pengarna bara ha försvunnit i tomma intet (eller i alternativ 2, skapats från tomma intet)
I de flesta databashanterare finns därför transaktioner
- om man lägger sina instruktioner i en transaktion kollar databasen att samtliga instruktioner i transaktionen går att utföra innan de faktiskt utförs.
Skulle felet i steg 2 hända i en transaktion skulle steg 1 aldrig utföras - och pengarna skulle finnas kvar.
Tabeller
En relationsdatabas består av en eller flera tabeller
. Varje tabell har ett namn, och består av rader
och kolumner
.
books |
||
id |
title |
page_count |
1 |
'Catch 22' |
464 |
2 |
'To Kill a Mockingbird' |
336 |
3 |
'1984' |
328 |
4 |
'The Stranger' |
123 |
Tabellen ovan har namnet books
, och har 4 rader och 3 kolumner.
Varje rad i tabellen beskriver en post
i tabellen, och varje kolumn beskriver en egenskap, eller attribut
för posten.
Tabeller har följande egenskaper:
Detta löses genom att varje tabell har en kolumn som kallas för primärnyckel
eller primary key
. I tabellen ovan är det kolumnen med namnet id
som är primärnyckel
När man skapar tabellen talar man om vilken av kolumnerna som kommer vara primärnyckeln.
Detta innebär att om någon annan skulle skriva en bok som heter the stranger, och som råkar ha 123 sidor även den kommer raden fortfarande vara unik, eftersom den kommer få en unikt värde på primärnyckeln
books |
||
id |
title |
page_count |
1 |
'Catch 22' |
464 |
2 |
'To Kill a Mockingbird' |
336 |
3 |
'1984' |
328 |
4 |
'The Stranger' |
123 |
5 |
'The Stranger' |
123 |
Note
|
|