Kapitel 1. Introduktion

Innehållsförteckning
Enkelt
Kraftfullt
Flexibelt
Andra fördelar
Nackdelar med databaser
Användningsområden

Data är uppgifter av olika slag. Ibland skiljer man data från information, som är data som man gett en tolkning. Alltså är 23 ett exempel på data, medan det är information om vi vet att det är 23 grader varmt ute.

Med ordet databas brukar man mena: en samling data som hör ihop, som modellerar en del av världen och är persistent. Det vill säga data försvinner inte när man avslutar programmet eller stänger av datorn.

Om man skall förstå fördelarna med att använda databasteknik måste man jämföra med alternativet. Alternativet är för det mesta att ha en eller flera vanliga filer med data. Genom att skriva ett program som klarar av att hantera dessa filer kan vi lätt skapa en egen databas. Nackdelen är att en databas med över 100 poster blir lätt ohanterlig och därför använder vi en databashanterare (som i och för sig också är ett program).

Om vi till exempel skulle vilja skapa ett kundregister i programmeringsspråket C skulle det kunna se ut så här:


struct kund {
  int nummer;
  char namn[50];
  char adress[50];
  struct kund* nextp;
};

Sedan fortsätter vi med ungefär 2000 rader programkod, som sköter dialogen med användaren och som läser och skriver datafilen med kunder.

Det finns många fördelar med att i stället använda en databashanterare. De viktigaste fördelarna är: enkelt, kraftfullt och flexibelt.

Enkelt

Många databashanterare erbjuder ett textbaserat gränssnitt. Starta databashanteraren och skriv:


CREATE TABLE kund (nummer INT, namn CHAR(50), adress CHAR(50));

Sedan fyller vi tabellen med några poster:


INSERT INTO kund(nummer,namn,adress) VALUES ('1','jonas','helsingborg');
INSERT INTO kund(nummer,namn,adress) VALUES ('2','stefan','klippan');
INSERT INTO kund(nummer,namn,adress) VALUES ('3','lennart','bjuv');

Nu har vi en tabell som ser ut så här:


+--------+---------+-------------+
| nummer | namn    | adress      |
+--------+---------+-------------+
|      1 | jonas   | helsingborg |
|      2 | stefan  | klippan     |
|      3 | lennart | bjuv        |
+--------+---------+-------------+

Den får du fram genom att skriva:


SELECT * FROM kund;

Uppgifterna i tabellen kallar vi för data. Tabellens utseende, det vill säga vilka kolumner som finns kallas för schema. Schemat bestämmer vilka data som kan lagras i databasen.

Kraftfullt

Att ett system är kraftfullt betyder att komplicerade saker kan göras på ett enkelt sätt.

Antag att vi vill ha reda på alla kunder som har namn som börjar med j och få dem utskrivna i bokstavsordning efter adressen. Då skriver vi så här:


SELECT * FROM kund WHERE namn LIKE 'j%' ORDER BY address;

Vill du veta hur många kunder du har i Helsingborg? Enkelt:


SELECT address, COUNT(*) FROM kund WHERE adress='helsingborg' GROUP BY address;

Flexibelt

Att ett system är flexibelt betyder att det är lätt att ändra.

Kommer du på att du vill ha med dina kunders telefonnummer i databasen också? Det är enkelt att ordna:


ALTER TABLE kund ADD telefon char(10);

Nu har du lagt till en kolumn för telefonnummer i tabellen kund.

Att det går att ändra den logiska strukturen på datat så här, utan att man måste skriva om en massa program kallas logiskt dataoberoende.

När du använt kundregistret ett tag och det innehåller många kunder kommer det att ta lång att söka i databasen.


create index foo on kund(namn);

Nu har vi ändrat den fysiska lagringsstrukturen så att det går snabbare att söka efter ett visst namn. Tabellen ser fortfarande likadan ut, men sökningarna på namn går snabbare. Databashanteraren utnyttjar automatiskt den nya lagringsstrukturen.

Att man kan ändra på den fysiska lagringsstrukturen på datat, utan att man måste skriva om en massa program kallas fysiskt dataoberoende.

Andra fördelar

Det finns flera saker som är mycket besvärliga att få att fungera om man skriver ett program själv, men som finns inbyggda i de flesta databashanterare.

Om flera användare samtidigt håller på och ändrar i kundregistret är det lätt hänt att en användare skriver över en ändring en annan användare precis gjort. En databashanterare ser till att det inte blir några skadliga krockar.

Vad händer om strömmen går? Om ditt program läser in datafilen i primärminnet och skriver tillbaka filen när man jobbet klart så kommer du förlora de ändringar du gjort i filen. Ännu värre är att om du precis höll på att spara när strömmen gick, kanske en del av de data som finns på disken är de nya och en del är de gamla. Man vet aldrig vilka som är vilka.

Med en databas hanterare slipper man sådana problem. Den ser till att inga data någonsin försvinner, hur olyckligt ett strömavbrott än skulle komma.

I de flesta databashanterare kan man ge olika användare olika rättigheter i databasen för att skydda data mot obehörig åtkomst. Till exempel kan vi ge en användare rätt att ändra i vissa delar av databasen och söka i andra delar, medan hon inte alls får se andra delar av databasen.

Nackdelar med databaser

Databasteknik passar inte för alla tillämpningar. Exempelvis brukar all den där enkelheten och flexibiliteten som vi nämnt tidigare göra att en databashanterare kräver mycket mer resurser än ett specialskrivet program. Det går åt mer minne och diskutrymme, kanske går det också långsammare att köra.

Användningsområden

Allt. Tro inte att det bara är kundregister, videoregister och cdregister man kan använda databaser till. Databaser används också i CAD-system, telefonväxlar och mycket annat.