Tilbake
6.1
Introduksjon til databaser

6.1 Introduksjon til databaser

Lær hva databaser er, forskjellen mellom ulike typer, og grunnleggende begreper.

50 min
7 oppgaver
DatabaseDBMSTabellPrimærnøkkel
Du leser den tradisjonelle versjonen
Din fremgang i kapitlet
0 / 7 oppgaver

Introduksjon til databasar

Tenk deg at du skal halde oversikt over alle elevane på ein skule. Du treng namn, fødselsdato, klasse, adresse, telefonnummer og karakterar for hundrevis av elevar. Du kunne lagra alt i eit rekneark, men kva skjer når rektor vil vite kva for elevar i 2A som har meir enn 4 i snitt? Eller når ein elev byter klasse og du må oppdatere informasjonen overalt? Med eit enkelt rekneark blir dette fort uoversiktleg og feilutsett.

Databasar løyser akkurat dette problemet. Ein database er ei organisert samling av data som er strukturert slik at ho kan søkjast i, oppdaterast og administrerast effektivt. Databasar er ryggrada i nesten all moderne programvare. Når du loggar inn på Instagram, søkjer på Google, bestiller ei vare på Komplett.no eller sjekkar bussruter på Ruter, kommuniserer applikasjonen med ein database i bakgrunnen.

I dette kapittelet skal du lære kva databasar er, kvifor dei er så viktige, og bli kjend med dei grunnleggjande omgrepa du treng for å jobbe med dei.

Database

Ein database er ei organisert samling av strukturerte data som blir lagra elektronisk i eit datasystem. Dataa er organiserte slik at dei enkelt kan opprettast, lesast, oppdaterast og slettast – dette blir kalla CRUD-operasjonar (Create, Read, Update, Delete). Ein database blir administrert av eit databasehandteringssystem (DBMS – Database Management System), som er programvara som handterer all kommunikasjon mellom brukarar/applikasjonar og dei fysiske dataa.

Før databasar vart vanlege, lagra organisasjonar data i vanlege filer – tekstfiler, rekneark eller papirbaserte arkiv. Denne tilnærminga hadde mange problem:

Redundans og inkonsistens: Same data vart ofte lagra fleire stader. Dersom ein elev bytte adresse, måtte endringa gjerast på mange forskjellige stader, og det var lett å gløyme nokre.

Vanskeleg tilgang: For å finne spesifikk informasjon måtte ein ofte gå gjennom store mengder data manuelt eller skrive spesialtilpassa program.

Tryggleik: Det var vanskeleg å kontrollere kven som hadde tilgang til kva for data. Ein lærar burde til dømes sjå karakterane til elevane sine, men ikkje lønsopplysningar til andre tilsette.

Samtidig tilgang: Når fleire personar prøvde å oppdatere dei same dataa samtidig, kunne data bli øydelagde eller gå tapt.

Databasar løyser alle desse problema gjennom:

- Strukturert lagring – Data blir organiserte i tabellar med klare reglar for format og samanhengar
- Effektive søk – SQL gjer det enkelt å finne nøyaktig den informasjonen du treng
- Dataintegritet – Reglar (constraints) sikrar at dataa alltid er gyldige og konsistente
- Tilgangskontroll – DBMS-et styrer kven som kan lese, skrive og endre data
- Transaksjonshandtering – Fleire brukarar kan jobbe med databasen samtidig utan å øydeleggje for kvarandre
- Backup og gjenoppretting – Data kan tryggleikskopierast og gjenopprettast dersom noko går gale

Det finst mange typar databasar, men dei to viktigaste kategoriane er relasjonsdatabasar og ikkje-relasjonelle databasar (NoSQL).

Relasjonsdatabasar (SQL)

Relasjonsdatabasar organiserer data i tabellar med rader og kolonnar, der tabellane kan koplast saman gjennom relasjonar. Dette er den mest brukte databasetypen og har vore standarden sidan 1970-talet. Relasjonsdatabasar brukar SQL (Structured Query Language) for å handtere data.

Døme på relasjonsdatabasar:
- MySQL – Verdas mest brukte open kjeldekode-database, blir brukt av WordPress, Facebook og YouTube
- PostgreSQL – Avansert open kjeldekode-database kjend for pålitelegheit og standardoverhalding
- SQLite – Lettvekts-database som blir lagra i éi enkelt fil, blir brukt i mobilappar og nettlesarar
- Oracle Database – Kommersiell enterprise-database brukt av store organisasjonar
- Microsoft SQL Server – Microsoft sin relasjonsdatabase for Windows-baserte system

Ikkje-relasjonelle databasar (NoSQL)

NoSQL-databasar brukar andre strukturar enn tabellar for å lagre data. Dei er ofte betre eigna for ustrukturerte eller semi-strukturerte data, og for system som treng svært høg yting eller skalerbarheit.

Dei vanlegaste typane NoSQL-databasar er:
- Dokumentdatabasar (t.d. MongoDB) – Lagrar data som JSON-liknande dokument
- Nøkkel-verdi-databasar (t.d. Redis) – Lagrar data som enkle nøkkel-verdi-par, ekstremt raske
- Grafdatabasar (t.d. Neo4j) – Optimalisert for data med mange relasjonar, som sosiale nettverk
- Kolonnebaserte databasar (t.d. Cassandra) – Lagrar data i kolonnar i staden for rader

I dette kurset fokuserer vi på relasjonsdatabasar og SQL, fordi dette er den mest grunnleggjande og utbreidde teknologien.

Databasehandteringssystem (DBMS)

Eit databasehandteringssystem (DBMS – Database Management System) er programvare som fungerer som eit mellomledd mellom brukarar, applikasjonar og den fysiske databasen. DBMS-et handterer oppretting av databasar, lagring og henting av data, tryggleikskontroll, backup, samtidig tilgang frå fleire brukarar, og optimalisering av spørjingar. Brukarar og program kommuniserer med DBMS-et via SQL, og DBMS-et tek seg av dei tekniske detaljane for korleis dataa faktisk blir lagra på disken.

I ein relasjonsdatabase er tabellen den grunnleggjande byggjesteinen. Ein tabell representerer éin type informasjon – til dømes elevar, lærarar, fag eller karakterar.

Kvar tabell har:
- Kolonnar (felt/fields) som definerer kva for eigenskapar som blir lagra
- Rader (postar/records) som inneheld dei faktiske dataa

Lat oss sjå på eit konkret døme. Tenk deg ein database for ein skule. Vi lagar ein tabell som heiter elever:

elev_idfornavnetternavnfodselsdatoklasse
1EmmaHansen2008-03-1510A
2OliverJohansen2008-07-2210A
3NoraOlsen2008-01-1010B
4JakobLarsen2008-11-0310B
5SofieBerg2008-05-2810A

Her har tabellen fem kolonnar (elev_id, fornavn, etternavn, fodselsdato, klasse) og fem rader (éi for kvar elev). Kolonnen elev_id er primærnøkkelen – han unikt identifiserer kvar elev.

Datatypar


Kvar kolonne har ein definert datatype som avgjer kva slags verdiar han kan innehalde:
DatatypeSkildringDøme
INTEGERHeiltal1, 42, -7
TEXT / VARCHARTekst'Emma', 'Hansen'
REAL / FLOATDesimaltal3.14, 4.5
DATEDato'2008-03-15'
BOOLEANSant/usantTRUE, FALSE

Val av rett datatype er viktig fordi det sikrar at berre gyldige data blir lagra i databasen. Du kan til dømes ikkje lagre teksten «hei» i ein INTEGER-kolonne.

Primærnøkkel (Primary Key)

Ein primærnøkkel er ein kolonne (eller kombinasjon av kolonnar) som unikt identifiserer kvar rad i ein tabell. Primærnøkkelen har to ufråvikelege krav: han kan ikkje innehalde duplikat (to rader kan ikkje ha same verdi), og han kan ikkje innehalde NULL-verdiar (kvar rad må ha ein verdi). Den vanlegaste løysinga er å bruke eit automatisk aukande heiltal (auto-increment) som primærnøkkel, ofte kalla id. Primærnøkkelen er fundamental for å kople tabellar saman gjennom framandnøklar.

✏️Døme: Ein enkel skuledatabase

Lat oss tenkje oss ein enkel database for ein skule med tre tabellar:

Tabell: elever

elevidfornavnetternavnklasse
1EmmaHansen10A
2OliverJohansen10A
3NoraOlsen10B

Tabell: fag
fagidfagnavnlærer
1MatematikkKari Nordli
2NorskPer Haugen
3NaturfagLise Vik

Tabell: karakterer
karakteridelevidfag_idkaraktertermin
1115H2024
2124H2024
3213H2024
4336H2024

Legg merke til korleis tabellen karakterer brukar elev_id og fag_id for å kople karakterar til rett elev og fag. Desse kolonnane blir kalla framandnøklar fordi dei refererer til primærnøklar i andre tabellar. Denne strukturen unngår at vi må gjenta elevnamn og fagnamn for kvar karakter – vi lagrar informasjonen berre éin gong og peikar til han.

Alt arbeid med databasar kan kokast ned til fire grunnleggjande operasjonar, kjende som CRUD:

- Create (opprette) – Leggje til nye data i databasen
- Read (lese) – Hente ut og vise data frå databasen
- Update (oppdatere) – Endre eksisterande data i databasen
- Delete (slette) – Fjerne data frå databasen

I SQL blir desse operasjonane utførte med følgjande kommandoar:

CRUD-operasjonSQL-kommandoDøme
CreateINSERT INTOLegg til ein ny elev
ReadSELECTHent alle elevar i klasse 10A
UpdateUPDATEEndre klassen til ein elev
DeleteDELETEFjern ein elev som har slutta

Vi skal lære alle desse kommandoane i detalj i kapittel 6.3.

Databasar har ei fascinerande historie som heng tett saman med utviklinga av datamaskiner:

1960-talet: Dei første databasesystema vart utvikla. IBM laga IMS (Information Management System) for Apollo-programmet til NASA. Desse tidlege systema brukte hierarkiske eller nettverksbaserte modellar som var kompliserte å jobbe med.

1970: Edgar F. Codd, ein forskar ved IBM, publiserte artikkelen «A Relational Model of Data for Large Shared Data Banks». Denne artikkelen la grunnlaget for relasjonsdatabasar ved å føreslå at data burde organiserast i tabellar med relasjonar mellom dei. Codd sine idear var revolusjonerande, men IBM var treg med å implementere dei.

1974: IBM byrja å utvikle System R, den første implementasjonen av ein relasjonsdatabase, og skapte spørjespråket SEQUEL (seinare omdøypt til SQL).

1979: Oracle lanserte den første kommersielle relasjonsdatabasen.

1995: MySQL vart lansert som open kjeldekode og vart raskt den mest populære databasen for webapplikasjonar.

2000-talet: NoSQL-databasar som MongoDB og Redis vart utvikla for å handtere dei enorme datamengdene som oppstod med sosiale medium og stordata.

I dag er relasjonsdatabasar framleis den mest brukte typen, og SQL er eitt av dei viktigaste verktøya kvar utviklar bør meistre.

📝Oppgave 6.1.1

Kva er ein database?

📝Oppgave 6.1.2

Kva er ein primærnøkkel i ein databasetabell?

📝Oppgave 6.1.3

Kva for ein av desse er IKKJE ein fordel med å bruke ein database framfor eit vanleg rekneark?

📝Oppgave 6.1.4

Kva står CRUD for i databasesamanheng?

📝Oppgave 6.1.5

Du skal lage ein database for eit skulebibliotek. Skildra kva for tabellar du ville oppretta, kva for kolonnar kvar tabell ville hatt, og kva du ville valt som primærnøkkel for kvar tabell. Tenk òg på korleis tabellane heng saman.

📝Oppgave 6.1.6

Kva for ein påstand om SQLite er korrekt?

📝Oppgave 6.1.7

Forklar skilnaden mellom relasjonsdatabasar og NoSQL-databasar. Gje døme på situasjonar der kvar type er best eigna, og nemn konkrete databasesystem for begge kategoriane.

Oppsummering

I dette kapittelet har du lært:

- Database: organisert samling av strukturerte data.
- SQL vs. NoSQL: relasjons- mot ikkje-relasjonelle databasar.
- DBMS: programvare som handterer databasen.
- Tabell, rad og kolonne: grunnstrukturen i relasjonsdatabasar.
- Primærnøkkel: unik identifikator for kvar rad.

Nøkkelomgrep


OmgrepForklaring
DatabaseOrganisert samling av strukturerte data
DBMSDatabasehandteringssystem
PrimærnøkkelKolonne som unikt identifiserer kvar rad

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.