Gå til hovedinnhold

Kodetabeller i FS

FS inneholder et stort antall kodetabeller som primært brukes som verdilister for forskjellige kolonner i andre FS-tabeller. I mange tilfeller vil vi eksponere disse kodetabellene som egne ressurser, som vi lenker til etter mønster fra fremmednøkler i databasen. Dersom en kodetabell ikke inneholder metadata som er nødvendig for implementasjon av den ressursen som viser til den, kan man vurdere å ikke eksponere kodetabellen som egen ressurs. Det gjelder i hvert fall i følgende tilfeller:

  1. Ekstern standard: Dersom FS-kodetabellen er en kopi av et kodesett som finnes i en ekstern standard (f.eks. ISO-språkkoder). I slike tilfeller foretrekker vi å bruke den eksterne standarden, heller enn å eksponere kodetabellen som en egen ressurs. Her bør vi i beskrivelsen vise eksplisitt til den eksterne standarden, og gjerne også lenke til det stedet der brukeren kan se hvilke verdier som er gyldige etter standarden.

  2. enum: Dersom kodetabellen utgjør et stabilt sett med koder med få kodeverdier (f.eks. færre enn 10), kan man vurdere å implementere referansen til den som enum, heller enn å eksponere kodetabellen som egen ressurs. Dette kan være fornuftig for kodetabeller som endres sjelden, og da normalt bare ved større endringer av prosesser, etc. Dersom man kan endre på kodeverdiene uten at andre systemer rundt påvirkes i nevneverdig grad, er kodetabellen trolig ikke en god kandidat for å implementeres som enum.

  3. Verditype: Enkelte av kodetabellene i FS representerer verdityper (f.eks. "tidsenhet", "vekting" eller andre ting som ligner på "måleenheter"), i motsetning til enhetstyper (f.eks. "emne", eller "studieprogram", som er ting det er naturlig å gi en ID). Verdityper kan representeres i form av standarder, slik at klienten kan motta og sende inn en verdi i stedet for et objekt. Dette forenkler implementasjonen for klientene. Arkitektteamet har blitt bedt om å se på hvordan slike standarder kan representeres (ikke landet pr. 28.02.2023). Merk at det kan finnes kandidater for slik implementasjon også under punkt 1 og 2 over.

Merk at dersom vi velger å ikke eksponere kodetabellene som egne ressurser, vil vi ha ansvaret for å ivareta referanseintegriteten. Det vil si at dersom vi velger å implementere referanser til kodetabeller på en av måtene som er angitt i lista ovenfor, og det skjer en endring i dataene i den underliggende kodetabellen som gjør at f.eks. en av enum-verdiene som er angitt i spesifikasjonen, ikke blir godtatt av databasen, er det å anse som en feil, som vi må rette.

Merk også at disse vurderingene er kontekstavhengige, det vil si at vi kan ha flere implementasjoner av referanser til samme kodetabell, der f.eks. én er implementert som en enum, mens en annen er implementert som et objekt som refererer til en egen ressurs for kodetabellen (fordi den siste er avhengig av metadata som finnes i kodetabellen). Hvis det aldri er behov for å eksponere kodetabellen som en egen ressurs, kan det bety at det ikke er bruk for kodetabellen, og at den etterhvert kan fjernes.