Hopp til innhold
Personlig Roadmap
Læringsspor

Databaser og API-er

Fra grunnleggende SQL til API-kontrakter, paginering og cache.

Kjernetemaer

SQLite

Pågår

Hva: Filbasert databasemotor uten egen serverprosess.

Hvorfor: Rask å komme i gang med for lokale verktøy og mindre applikasjoner.

Bør kunne: Vite når SQLite er tilstrekkelig og når man trenger en full databaseserver.

PostgreSQL

Senere

Hva: Robust relasjonsdatabase med rik funksjonalitet.

Hvorfor: Industristandard for produksjonsapplikasjoner som trenger samtidighet og skala.

Bør kunne: Designe skjema og skrive effektive spørringer i Postgres.

Relasjonsdatabaser

Pågår

Hva: Databaser bygget på tabeller og relasjoner mellom dem.

Hvorfor: Fortsatt den mest brukte databasetypen for strukturert data.

Bør kunne: Modellere data i tabeller fremfor nøstede dokumenter der det passer.

Normalisering

Senere

Hva: Prosessen med å redusere dataduplisering i skjemadesign.

Hvorfor: Forhindrer inkonsistent data når samme informasjon endres flere steder.

Bør kunne: Normalisere til tredje normalform, og vite når å bevisst denormalisere.

Relasjoner

Senere

Hva: Én-til-mange og mange-til-mange mellom tabeller.

Hvorfor: De fleste virkelige datamodeller henger sammen på tvers av tabeller.

Bør kunne: Modellere relasjoner med riktige fremmednøkler.

Joins

Senere

Hva: Kombinering av rader fra flere tabeller i én spørring.

Hvorfor: Nødvendig for å hente sammenhengende data effektivt.

Bør kunne: Skrive inner, left og aggregerte joins uten å google syntaksen hver gang.

Transaksjoner

Senere

Hva: Grupper av operasjoner som lykkes eller feiler samlet.

Hvorfor: Forhindrer at data havner i en inkonsistent tilstand ved feil.

Bør kunne: Bruke transaksjoner ved operasjoner som må være atomiske.

Indekser

Senere

Hva: Datastrukturer som gjør oppslag raskere på bekostning av skrivehastighet.

Hvorfor: Uten riktige indekser blir spørringer trege ved vekst i datamengde.

Bør kunne: Identifisere og legge til indekser basert på faktiske spørringsmønstre.

Migrasjoner

Senere

Hva: Versjonskontrollerte, inkrementelle endringer i databaseskjema.

Hvorfor: Lar team og deg selv endre skjema trygt og sporbart over tid.

Bør kunne: Skrive migrasjoner som kan kjøres frem og reverseres.

Backup

Pågår

Hva: Regelmessig, testet sikkerhetskopiering av databaser.

Hvorfor: Data uten testet backup er data du før eller siden mister.

Bør kunne: Automatisere backup og faktisk teste gjenoppretting.

Datavalidering

Senere

Hva: Kontroll av data både i applikasjonen og på databasenivå.

Hvorfor: Constraints i databasen er siste forsvarslinje mot ugyldig data.

Bør kunne: Bruke NOT NULL, UNIQUE og CHECK-constraints bevisst.

API-kontrakter

Senere

Hva: Eksplisitt avtalte formater for forespørsler og responser.

Hvorfor: Gjør det trygt for frontend og backend å utvikle uavhengig av hverandre.

Bør kunne: Definere kontrakter før implementasjon starter.

OpenAPI

Senere

Hva: Spesifikasjonsformat for å beskrive REST-API-er maskinlesbart.

Hvorfor: Muliggjør autogenerert dokumentasjon og klientkode.

Bør kunne: Holde en OpenAPI-spesifikasjon synkronisert med API-et.

Pagination

Senere

Hva: Oppdeling av store resultatsett i sider.

Hvorfor: Forhindrer at store spørringer overbelaster klient og server.

Bør kunne: Implementere offset- eller cursor-basert paginering der det passer.

Filtrering

Senere

Hva: Innsnevring av resultater basert på query-parametere.

Hvorfor: Lar klienter hente akkurat den dataen de trenger.

Bør kunne: Designe filterparametere som er forutsigbare og dokumenterte.

Sortering

Senere

Hva: Kontroll over rekkefølgen på returnerte data.

Hvorfor: Ofte nødvendig for å presentere data meningsfullt i UI.

Bør kunne: Støtte sortering på flere felter uten SQL-injeksjon-risiko.

Cache

Senere

Hva: Mellomlagring av data for å unngå unødvendige databasekall.

Hvorfor: Reduserer last og forbedrer responstid for ofte forespurte data.

Bør kunne: Vite hva som er trygt å cache, og hvor lenge.

Enkelt visuelt databaseeksempel

Fire tabeller som viser typiske relasjoner: en bruker eier prosjekter, prosjekter har oppgaver, og brukere har transaksjoner.

users

  • id (PK)
  • email
  • password_hash
  • created_at

projects

  • id (PK)
  • user_id (FK → users.id)
  • name
  • status

tasks

  • id (PK)
  • project_id (FK → projects.id)
  • title
  • done
  • due_date

transactions

  • id (PK)
  • user_id (FK → users.id)
  • amount
  • category
  • occurred_at