Presentasjon
Følgende .h2-overskrifter representerer powerpoint-slides som skal brukes i workshoppen.
Velkomstslide (1 min)
Agenda
Intro til datamodellering (noe skal kanskje => lyntale?)
Modellering vs implementasjon
Raske iterasjoner
Visuelt paradigme som gjør det enkelt å involvere ikke-tekniske
Målet er i første omgang å lære så mye som mulig så fort som mulig
Man må forvente radikale endringer i modellene etterhvert som man lærer
Man øker først detaljnivået etterhvert som strukturene stabiliserer seg
Jo mindre stabilt, jo dyrere er det å detaljere (for ikke å snakke om programmere)
Man bruker tankeeksperiment underveis for å teste hypoteser
Kan lage fysiske prototyper dersom nødvendig (først og fremst som innspill til logisk modell)
Ta gjerne utgangspunkt i prosessene som modellen skal underbygge
Det relasjonelle paradigmet
Optimaliserer for integritet, konsistens og gjenbruk
DRY (“én ting på ett sted“)
Handler om hvordan informasjonen henger sammen, uavhengig av applikasjoner
Verdi- vs. objektsemantikk (naturlige vs. kunstige nøkler)
Relasjonsmodellen er laget for det første
Analogt med funksjonell vs. objektorientert programmering
En tabell er en funksjon fra nøkkel til ikke-nøkkel
Kraftig spørrespråk som kan transformere data på vei ut av databasen
Vanlige feiloppfatninger
Dårlig ytelse
Det er dyrt å joine
Databasen må beskyttes fra kompliserte spørringer pga skaleringsproblematikk
Kompleksitet
"Det er for vanskelig å tenke prinsipielt – må konsentrere oss om det vi trenger nå"
Object-relational mismatch gjør det unødvendig komplisert å utvikle mot
“Big design up front“
Bruker altfor mye tid i starten uten å få gjort noe fornuftig
Ytelse
https://aws.amazon.com/blogs/aws/a-decade-of-ever-increasing-provisioned-iops-for-amazon-ebs/
https://www.enterprisedb.com/blog/performance-comparison-major-PostgreSQL-versions
Case: Filmer i Sikt(e)
Starte med enkelt IMDB-case
Entiteter
Film
Kritikk (antall stjerner)
Regissør
Distributør
Metodikk – valg
Prosa?
UML?
Innhold
N:M-kobling
Kodetabell
Rolle (flere relasjoner til samme entitet)
Introdusere tillegg etterhvert
Subtyping/roller
Entiteter – Person
Produsent
Skuespiller
Metodikk
Hva er forskjellen på subtyping og roller?
Alt-i-ett (roller krever denormalisering)
Bladnoder (subtyping krever triggerlogikk)
Alle noder (subtyping krever triggerlogikk)
Konseptuelt => logisk nivå
Lage ferdige alternative case – samme modell med:
Naturlige nøkler
Kunstige nøkler
Konsekvenser
Konsistens/integritet
Spørremønstre
Forvaltning over tid
Out of scope
Kontinuerlige endringer
Notater
Flette inn fra ymse kilder
Hente fra diskusjon (2024-02-27)
Hente fra eksempeldata (2024-04-23)
Hente fra prinsipper for datamodellering
Ekstra godbiter?
Hvordan modellere matematiske strukturer
Tre
Kjede (1:1 egenrelasjon)
Matrise
Like akser
Forskjellige akser
Flere enn 2 dimensjoner
Hvordan modellere vekk NULL-verdier
Dummyverdier
1:1-normalisering