Lær hva databaser er, forskjellen mellom ulike typer, og grunnleggende begreper.
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.
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.
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_id | fornavn | etternavn | fodselsdato | klasse |
|---|---|---|---|---|
| 1 | Emma | Hansen | 2008-03-15 | 10A |
| 2 | Oliver | Johansen | 2008-07-22 | 10A |
| 3 | Nora | Olsen | 2008-01-10 | 10B |
| 4 | Jakob | Larsen | 2008-11-03 | 10B |
| 5 | Sofie | Berg | 2008-05-28 | 10A |
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:
| Datatype | Skildring | Døme |
|---|---|---|
INTEGER | Heiltal | 1, 42, -7 |
TEXT / VARCHAR | Tekst | 'Emma', 'Hansen' |
REAL / FLOAT | Desimaltal | 3.14, 4.5 |
DATE | Dato | '2008-03-15' |
BOOLEAN | Sant/usant | TRUE, 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.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.
Lat oss tenkje oss ein enkel database for ein skule med tre tabellar:
Tabell: elever
| elevid | fornavn | etternavn | klasse |
|---|---|---|---|
| 1 | Emma | Hansen | 10A |
| 2 | Oliver | Johansen | 10A |
| 3 | Nora | Olsen | 10B |
Tabell: fag
| fagid | fagnavn | lærer |
|---|---|---|
| 1 | Matematikk | Kari Nordli |
| 2 | Norsk | Per Haugen |
| 3 | Naturfag | Lise Vik |
Tabell: karakterer
| karakterid | elevid | fag_id | karakter | termin |
|---|---|---|---|---|
| 1 | 1 | 1 | 5 | H2024 |
| 2 | 1 | 2 | 4 | H2024 |
| 3 | 2 | 1 | 3 | H2024 |
| 4 | 3 | 3 | 6 | H2024 |
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-operasjon | SQL-kommando | Døme |
|---|---|---|
| Create | INSERT INTO | Legg til ein ny elev |
| Read | SELECT | Hent alle elevar i klasse 10A |
| Update | UPDATE | Endre klassen til ein elev |
| Delete | DELETE | Fjern ein elev som har slutta |
Vi skal lære alle desse kommandoane i detalj i kapittel 6.3.
I dette kurset brukar vi SQLite som databasesystem. SQLite er ein lettvekts relasjonsdatabase som lagrar heile databasen i éi enkelt fil. Han krev inga separat serverinstallasjon og er perfekt for læring og mindre prosjekt. SQLite er innebygd i Python (via modulen sqlite3), i alle nettlesarar, og i dei fleste mobiltelefonar. Trass i den enkle utforminga si støttar SQLite standard SQL og blir brukt i produksjon av selskap som Apple, Google og Mozilla.
For å eksperimentere med SQL kan du bruke:
- DB Browser for SQLite – Eit gratis grafisk program for å opprette, redigere og spørje SQLite-databasar (sqlitebrowser.org)
- SQLite Online – Køyr SQL direkte i nettlesaren utan installasjon (sqliteonline.com)
- Python med sqlite3 – Bruk Python-programmering til å jobbe med databasar programmatisk
- phpMyAdmin – Webbasert verktøy for MySQL-databasar
Vi tilrår å starte med DB Browser for SQLite eller ein online-editor slik at du kan fokusere på å lære SQL utan å bekymre deg for oppsett.
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.
Kva er ein database?
Kva er ein primærnøkkel i ein databasetabell?
Kva for ein av desse er IKKJE ein fordel med å bruke ein database framfor eit vanleg rekneark?
Kva står CRUD for i databasesamanheng?
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.
Kva for ein påstand om SQLite er korrekt?
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
| Omgrep | Forklaring |
|---|---|
| Database | Organisert samling av strukturerte data |
| DBMS | Databasehandteringssystem |
| Primærnøkkel | Kolonne 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.