Gå til innholdet

Datamodellen er skjelettet

Finnes også på 28 språk

English · Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · Polski · Tiếng Việt · ไทย · Nederlands · العربية · עברית · Українська · हिन्दी · Русский · Svenska · Dansk · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

An older room opened up mid-renovation: its timber beams exposed, a new beam held on steel props, the furniture waiting under dust sheets.
Bildet er laget med KI

Modul 2 av 7 i kapitlet Tenk som en dataarkitekt, kapittel 1 i kurset Data Architect. Hver modul står på egne ben. Forrige: Tenk som en arkitekt · Neste: Reversibilitetstesten

Spørsmålet denne modulen besvarer: Hvorfor betyr datamodellen mer enn alt som bygges på den, og hvordan vurderer du en?

Når jeg underviser i dataarkitektur, er det én formulering jeg kommer tilbake til igjen og igjen: datamodellen er skjelettet.

Datamodellen er skjelettet i systemet. Alt annet bygges rundt den, og det er den som holder resten av kroppen sammen. Du ser ikke skjelettet når du ser på noen, men det avgjør hvor høy personen er, hvordan personen beveger seg, og hva den kan bære.

Tenk på alt vi bygger i en Salesforce-implementering. Vi bygger automatisering rundt datamodellen. Vi skriver Apex mot den, og Flows som leser og oppdaterer den. Vi bygger integrasjoner som sender data inn i den og henter data ut av den. Vi lager rapporter og analyser på den, og vi designer sikkerhet rundt den. Og i økende grad bygger vi KI-agenter som må forstå og handle på de dataene. Alt sammen avhenger av strukturen under.

Derfor betyr det så mye å få datamodellen riktig tidlig. Du kan endre skjelettet senere. Men det kommer sannsynligvis til å gjøre vondt.

En god datamodell starter med et enkelt spørsmål: hva trenger virksomheten egentlig å representere? Ikke «hvilke Salesforce-objekter har vi?» Og absolutt ikke «hva kan jeg bygge raskt?»

Vi prøver å forstå virksomheten først. Hva er de viktige tingene i denne virksomheten? Hvordan henger de sammen? Hvem eier dem? Hvordan endrer de seg over tid? Hva må huskes, og hva deles på tvers av forretningsprosesser? Først når vi forstår det, bør vi begynne å oversette det til objekter, felt og relasjoner.

Dette høres selvsagt ut. I praksis er det veldig lett å gjøre det baklengs. Noen kjenner igjen noe som ligner på en salgsmulighet (Opportunity), en sak (Case) eller et aktivum (Asset), og begynner straks å designe rundt det. Noen ganger er det helt riktig. Andre ganger prøver vi å presse en firkantet kloss inn i et rundt hull, og når nok er bygget rundt den beslutningen, blir det svært dyrt å få klossen ut igjen.

Her er et spørsmål jeg hører hele tiden. En kunde kan ha mange leveringssteder. Bør hvert sted være en konto (Account), eller et egendefinert objekt? Før du svarer, legg merke til hva du må vite først: hva et sted betyr for denne virksomheten, og hva som skjer med det. Det er å modellere virksomheten før objektene. (Du får svaret mitt i kapittel 3.)

Når jeg ser på en datamodell, vil jeg at den skal bestå tre tester: bære virksomheten, vokse med virksomheten og yte.

Bære. Modellen må bære det virksomheten faktisk prøver å oppnå. Det er stor forskjell på en modell som teknisk sett kan lagre dataene, og en som faktisk representerer virksomheten godt. Hvis jeg hele tiden legger til rare felt, spesielle flagg, komplisert automatisering og unntak fordi modellen ikke helt passer, begynner jeg å spørre om problemet egentlig er automatiseringen. Kanskje er modellen feil. En god modell skal gjøre virksomheten lettere å forstå, ikke vanskeligere.

Vokse. Når jeg sier vokse, mener jeg ikke bare flere poster. Volum betyr noe: ti tusen poster og hundre millioner gir helt ulike problemer. Men virksomheter vokser også i kompleksitet. De legger til produkter, går inn i nye markeder, kjøper opp selskaper, endrer prosesser, legger til kanaler og kobler på nye systemer. De oppdager at noe de trodde var én ting, egentlig er fem forskjellige ting. En modell som fungerer nydelig i dag, kan bli en felle hvis det ikke er rom for i morgen. Derfor foretrekker jeg design som vokser ved å legge til, fremfor design som stadig endrer det som allerede finnes. Å legge til noe nytt er som regel enklere enn å omdefinere noe som dusinvis av andre ting avhenger av.

Yte. Data ligger ikke bare der. Vi skriver dem, finner dem, spør etter dem, deler dem, rapporterer på dem og integrerer dem, og i økende grad henter KI-systemer dem som kontekst før de handler. En modell kan se vakker ut i et diagram og likevel være forferdelig å drifte. Så vi designer for både hvordan dataene lagres og hvordan dataene skal brukes.

Og den må fortsette å yte. Den må yte i stor skala: når antall brukere øker, når datavolumet øker, under virkelige forhold og i toppene, på årets travleste dag og ikke en gjennomsnittlig dag. Og den må fortsette å yte når noe uventet skjer.

Bære. Vokse. Yte. Vi kommer tilbake til disse tre testene gjennom hele kurset.

Bære, vokse, yte Datamodellen, systemets fundament, med tre tester under seg. Bære: passer den virksomheten? Vokse: kan den vokse ved å legge til, ikke endre? Yte: holder den i stor skala og ved toppene? Datamodellen systemets fundament Bære Passer den virksomheten? Vokse Kan den vokse ved å legge til, ikke endre? Yte Holder den i stor skala og ved toppene? Bære. Vokse. Yte. Vi kommer tilbake til disse tre testene igjen og igjen. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

For flat, for komplisert eller rett og slett feil

Section titled “For flat, for komplisert eller rett og slett feil ”

Jeg har sett datamodeller gå galt på tre måter.

Den første er å velge feil ting fra starten. Vi bruker et standardobjekt fordi det ser nært nok ut, og bruker så år på å legge til unntak fordi det aldri passet. Det er den firkantede klossen.

Den andre er å gjøre modellen for flat. Alt havner i ett objekt, og i starten virker det fantastisk enkelt. Så vokser virksomheten, og vi oppdager at noen av tingene har sin egen livssyklus, kan forekomme flere ganger, trenger egen sikkerhet eller har egne relasjoner. Plutselig representerer vi en én-til-mange-relasjon med Felt 1, Felt 2 og Felt 3, eller med stadig mer kompliserte flagg og automatisering. Modellen ga oss ikke noe sted å vokse.

Den tredje er den motsatte feilen: vi overnormaliserer. Vi lager et elegant diagram med objekt etter objekt, der hvert begrep er perfekt adskilt. Teknisk vakkert, praktisk elendig. Brukerne sliter med å forstå det, og sideoppsettene og Lightning-sidene, med relatert liste etter relatert liste, kan begynne å føles endeløst dype. Spørringene blir mer kompliserte, automatiseringen krysser flere relasjoner, rapporteringen blir vanskeligere, og plattformen må jobbe mer for å svare på helt vanlige forretningsspørsmål.

Så hva er riktig, flatt eller normalisert? Det finnes ingen formel. Du har et bilde av den optimale modellen i hodet og forstår avveiningene etter hvert som du beveger deg bort fra den. Det er arkitekturens kunst, og vi kommer tilbake til den i modul 4 og i neste kapittel, der vi lærer å modellere. Foreløpig er det nok å se at selve strukturen er en arkitektonisk beslutning.

For flat, omtrent riktig, overnormalisert Tre måter å modellere de samme godkjenningene på. For flat: én tabell for salgsmuligheter med godkjenner 1, 2 og 3 og datoene deres som felter. Omtrent riktig: en konto har salgsmuligheter, og en salgsmulighet har godkjenninger, hver med en godkjenner og en dato. Overnormalisert: salgsmuligheten fordelt på seks koblede tabeller, fra godkjenningsforespørsel og godkjenningstrinn til trinnets godkjenner, godkjennerrolle og godkjenningsbeslutning. FOR FLAT: ÉN ROTETE TABELL OMTRENT RIKTIG OVERNORMALISERT har har Salgsmulighet Beløp Fase Godkjenner 1 Godkjenningsdato 1 Godkjenner 2 Godkjenningsdato 2 Godkjenner 3 Godkjenningsdato 3 Konto Salgsmulighet Godkjenning Godkjenner Godkjenningsdato Salgsmulighet Godkjenningsforespørsel Godkjenningstrinn Trinnets godkjenner Godkjennerrolle Godkjenningsbeslutning Det finnes ingen formel. Ha et bilde av den optimale modellen, og forstå avveiningene når du beveger deg bort fra den. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Når et system først er i drift, blir jeg veldig forsiktig med grunnleggende endringer i datamodellen.

Si at et tekstfelt har eksistert i årevis, og noen sier: «Vi bruker det egentlig ikke sånn lenger. La oss gjøre det om til et tall.» Det høres ut som en feltendring. Men hva avhenger av det feltet? Flows, Apex, rapporter, integrasjoner, datapipelines, eksterne applikasjoner, KI-agenter. Og hva skjer med de historiske dataene? Plattformen lar deg ikke engang endre typen på et felt mens kode eller flows fortsatt refererer til det, og det sier noe om hvor langt endringen rekker.

Noen ganger er det riktige svaret å ikke endre det som allerede finnes. Avhengig av hvor alvorlig endringen er, vil jeg heller lage noe nytt, migrere bevisst og fase ut den gamle strukturen:

Legg til i stedet for å endre. Fas ut i stedet for å overraske.

Salesforce gir deg til og med en måte å si det på i metadataene: et felts Field Usage (feltbruk) kan settes til DeprecateCandidate, «planlagt utfaset og ikke lenger i bruk». Det merker feltet for alle som leser objektet; det skjuler ikke feltet, så å pensjonere det er fortsatt en beslutning du må gjennomføre.

For når andre deler av arkitekturen først avhenger av noe, kan det være mye farligere å endre betydningen enn å endre navnet. Den verste varianten er feltet som beholder navnet mens innholdet endres: alt nedstrøms stoler fortsatt på navnet.

Fase ut, ikke endre: å bytte ut et felt Den samme leveringen vist tre ganger. Før: et felt Kolli lagret som tekst. Under: Kolli (tekst) er gjennomstreket og merket som utfaset, og et nytt felt Antall kolli (tall) står ved siden av, merket som nytt, mens hver flyt, hver rapport og hver integrasjon flytter over. Etter: bare Antall kolli (tall) er igjen. Legg til i stedet for å endre; fase ut i stedet for å overraske. FØR UNDER ETTER legg til det nye feltet flytt alle som bruker det Levering Leveringsdato Status Kolli (tekst) Levering Leveringsdato Status Kolli (tekst) UTFASET Antall kolli (tall) NY Levering Leveringsdato Status Antall kolli (tall) Legg til i stedet for å endre. Fase ut i stedet for å overraske. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Selv noe så enkelt som å krysse av for Required (obligatorisk) på et felt kan bli en tidsinnstilt bombe. Hvis du allerede har samlet inn data, vil noen poster mangle verdi i det feltet. Så, dager, uker eller måneder senere, oppdaterer noen en av de postene, og lagringen feiler på grunn av det obligatoriske feltet, og ingen har den verdien. En enkel endring som å gjøre et felt obligatorisk kan få utilsiktede og forsinkede konsekvenser. Vi kommer tilbake til Required, og til når en verdi faktisk er kjent, i kapittel 3.

Utover eksamen: KI bygger også på skjelettet. Be et KI-verktøy bygge en applikasjon, og det genererer objektene, feltene, Flows, Apex, komponentene og testene på minutter. Hvis den opprinnelige datamodellen var feil, har vi ikke unngått konsekvensene av en dårlig beslutning; vi har fremskyndet dem, fordi hvert genererte lag er én ting til som avhenger av den strukturen. Derfor vil jeg at en menneskelig arkitekt skal gjennomgå en KI-generert datamodell, forstå den og stå ansvarlig for den. Modul 7 går videre med dette.

Gjennom kurset kommer vi til å snakke om mye teknologi: objekter og relasjoner, store datavolumer, spørringer, integrasjon, migrering, transaksjoner, sikkerhet, Data 360 og KI. Under alt sammen ligger datamodellen.

Hvis modellen bærer virksomheten, kan vokse med virksomheten og yter for måtene vi skal bruke dataene på, har vi bygget et solid fundament. Hvis vi får fundamentet feil, blir alt etterpå vanskeligere.

Datamodellen er skjelettet. Arkitekter bør være svært nøye når de designer skjelettet. Endringer i eksisterende strukturer kan få ringvirkninger.

  • Om modellen bærer virksomheten, kan vokse med den og yter for måtene dataene skal brukes på.
  • Om et begrep passer i et standardobjekt eller er en firkantet kloss.
  • Hvor flat eller hvor normalisert modellen skal være, og hvorfor.
  • Om en endring i skjelettet bør være et tillegg, en migrering eller en utfasing, i stedet for en endring på stedet.