Dagens tema Individer i interesseområdet Den redundansfri datamodellen Redundansfrihet ingen dobbeltlagringer eller avledninger Gruppering, normalisering eller intuisjon? jfr. Systemutvikling fra kjernen og ut, fra skallet og inn kapittel 6 Begrepsdannelse Høyere ordens assosiasjoner Litt om tid Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri- Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-2 Modellenes to formål Figur 5-2. Ogdens trekant Interesseområdet Thoughts of Reference Begreper Beskrivelse Bil Døgn Oppfatningen av interesseområdet Foreskrivelse 8076543873 DF 2345 7. febr. 2007 2007-02-7 Informasjonssystem Brukere Symbol Lingvistiske elementer representasjoner Referent Fenomener i interesseområdet Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-3 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-4
Fra naturlig språk til datamodell Drammen ligger i Buskerud Den grunnleggende konstruksjonen det elementære utsagnet By med bynavn Drammen ligger i fylke med fylkenavn Buskerud Begrep identifikatordel {id} min..max rolle min..max rolle2 Begrep2 identifikatordel2 {id} By by ligger-i ligger_i fylke Drammen Buskerud Fylke fylke Greitt, men hvordan bygger vi modeller med den? Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-5 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-6 Datamodellererens tre bud Identifiserbare begrepsforekomster. Du skal kunne identifisere begrepsforekomstene! 2. Du skal ikke ha dobbeltlagringer! 3. Du skal ikke ha avledninger! Begrep? {id} rolle?? Hvilke individer (begrepsforekomster) skal vi vite noe om? Hvis du allikevel (av effektivitetsgrunner) har dobbeltlagringer og avledninger i databasen, må de være under kontroll! Hvordan representerer vi disse individene? Eksempel: Hvordan ser vi på en haug med binders? Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-7 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-8
Eksempel på dobbeltlagring av opplysning poststed navn Dal Li Fjell Storgata 7 Lilleveien 3 Nyveien 20 400 400 500 innebygd elementært utsagn poststed Ski Ski Moss Dobbeltlagrede opplysninger åpner for inkonsistens i forekomstene! orgnr {id} omfatter avdnr {id} Eksempel på avledet opplysning Firma tilhører Avdeling OBS! jobber-i Ansatt jobber-i Avdeling Avdeling tilhører Firma Ansatt jobber-i Firma /jobber-i Ansatt Avledet assosiasjon Avledede opplysninger åpner for inkonsistens i forekomstene! Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-9 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-0 Eksempel på ikke avledet opplysning En unormalisert modell orgnr {id} omfatter Firma tilhører har-oppdrag-for poststed Funksjonell avhengighet avdnr {id} Avdeling jobber-i Ansatt jobber-i Avdeling Avdeling tilhører Firma Ansatt har-oppdrag-for Firma Ansatt Det er altså ikke nok å se på bare hvordan modellen ser ut! navn Dal Li Fjell Storgata 7 Lilleveien 3 Nyveien 20 400 400 500 poststed Ski Ski Moss En datamodell (og en database) som ikke er normalisert, vil åpne for dobbeltlagring av opplysninger Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri- Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-2
En funksjonell avhengighet skjuler en assosiasjon som skilles ut {fk} poststedsnavn {id} poststedsnavn Normaliseringsteori Slike oppdelinger som vi har sett et eksempel på her er sentrale i forbindelse med såkalt normalisering i relasjonsdatabaseteorien. Hovedbudskapet er at verdien i et attributt skal være entydig bestemt av verdien på en av kandidatnøklene (i praksis primærnøkkelen) Funksjonell avhengighet Å finne funksjonelle assosiasjoner og å finne funksjonelle avhengigheter det er samme sak The key, the whole key and nothing but the key, so help me Codd! Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-3 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-4 Alternativet: Gruppering av ugruppert modell Ugruppert og gruppert modell - eksempel {id} Gateadresse {id} snavn poststeds {fk} {id} poststedsnavn 0.. antall_ emnekode {fk}{id} antall_{fk}{null} 0.. antall_ Trinn Trinn 2 emnekode {fk}{id} antall_ {null}. Generere fremmednøkler 2. Sløyfe overflødige klasser og fjerne {fk} Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-5 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-6
Ugruppert modell Ugrupperte og grupperte modeller fremmednøkler generering fjerning generering fjerning referanser Gruppert modell (tabellorientert) Gruppert modell (???-orientert) unyttige klasser med assosiasjoner fjerning generering fjerning generering Gruppert modell (tabellorientert) med vanlige attributter Gruppert modell (???-orientert) med vanlige attributter Fra normalisert modell til relasjonsdatabase {id} Li navn Dal Fjell Storgata 7 Lilleveien 3 Nyveien 20 Gateadresse {id} snavn poststeds 400 400 500 400 500 poststed Ski Moss {fk} {id} poststedsnavn Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-7 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-8 {id} Gruppering eller normalisering? Gateadresse {id} snavn poststeds Normalisering poststedsnavn Ulike veier til den redundansfri modellen Modellering med elementære utsagn Interesseområdet Intuisjon Alt i én tabell Gruppering {fk} {id} poststedsnavn Elementære utsagn Gruppering Redundansfri (normalisert) modell Normalisering Universalrelasjonen Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-9 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-20
Kontroll av grupperte modeller Hvis du går direkte på en gruppert modell, sjekk for hvert attributt: Er det høyst én verdi for attributtet? Er verdien bestemt av primærnøkkelen, hele primærnøkkelen og intet annet enn primærnøkkelen? telefon e-post poststed Institutt for informatikk Gerhard Skagestein 4. februar 2007 Hvordan faller denne kontrollen ut for klassen? dmredundansfri-2 Universitet universitetskode {id} Fakultet fakultetskode {id} Institutt instituttkode {id} Ansatt ansattnr {id} Assosiasjoner i et hierarki Med hva skal vi assosiere o Universitetets sentralbordnummer o ansatts jobbadresse o ansatts telefonnummer o antall? Institutt for informatikk Gerhard Skagestein 4. februar 2007 Legg assosiasjonene så høyt opp i hierarkiet som mulig! dmredundansfri-22 Begrepsdannelse Mange-til-mange-assosiasjon med assosiasjonsklasse En mange-til-mange-assosiasjon kan tolkes som et begrep OBS! Materialgjenvinning _i 0.. gjenvunnet mengde Mengde # tonn {id} gjenvunnet_materiale material gjenvunnet_materiale material jfr. lærebokas figur 5-7 og 5-8 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-23 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-24
Figur 5-9. Assosiasjonsklassen erstattes med en vanlig klasse Materialgjenvinning _i 0.. gjenvunnet mengde Mengde # tonn {id} Høyere ordens assosiasjoner Noen ganger er det behov for assosiasjoner mellom mer enn to klasser/begreper gjenvunnet_materiale material Typisk dreier det seg da om begreper av typen Hvem, Hva, Hvor, Når Eksempel: Meget viktig konvertering! Materialgjenvinning _i gjenvunnet_ materiale 0.. gjenvunnet mengde material Mengde # tonn {id} o AS Gjenvinning gjenvinner papir i Oslo kan vanligvis ikke brytes ned til o AS Gjenvinning gjenvinner papir o AS Gjenvinning gjenvinner i Oslo o papir gjenvinnes i Oslo Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-25 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-26 En ternær assosiasjon En ternær assosiasjon sett som tabell/relasjon material material gjenvunnet_ materiale Avfallsselskap selskaps avfalls_ innsamler område Avfallsselskap selskaps Materialgjenvinning avfallsinnsamler gjenvunnet_ materiale område Materialgjenvinning Unngå UML-assosiasjoner mellom mer enn to klasser! Alle avfallsinnsamlere kan gjenvinne alle materialer i alle områder Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-27 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-28
Fjern høyere ordens assosiasjoner vha. nye begreper material Overlappende entydighetsskranker Time ukedag,timenr {id} Avfallsselskap selskaps gjenvunnet_ materiale Material- fying» «identi- avfallsinnsamlegjenvinning område Lærer ansattnr {id} Forelesning fying» «identi- Rom romnr {id} Lang entydighetsskranke konverteres til identifiserende assosiasjoner avfallsinnsamler gjenvunnet_ materiale område Hvordan viser vi dette i UML? lærer time rom Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-29 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-30 Den eksterne entydighetsskranken systemet (forts.) Lærer ansattnr {id} {unique} Time ukedag,timenr {id} {unique} Forelesning Rom romnr {id} Student anbefalte-forkunnskaper tar tas-av Hovedlærer Warmer & Kleppe foreslår lignende grafiske notasjoner for lignende skranker Warmer & Kleppe: The Object Constraint Language. Addison-Wesley 999 OBS! /antall_ 0.. Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-3 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-32
systemet begrepsdannelse tar tas-av Påmelding hovedlærer /antall_ 0.. systemet konvertere assosiasjonsklasser hoved lærer Påmelding /antall_ 0.. Dermed er modellen ferdig Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-33 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-34 systemet gruppering etterfølger {fk}{id} forgjenger {fk}{id} hoved lærer Påmelding emnekode {fk}{id} semesterkode {fk}{id} student {fk}{id} emnekode {fk}{id} semesterkode {fk}{id} hovedlærer {fk}{id} anbefalteforkunnskaper anbefalteforkunnskaper anbefalteforkunnskaper emnekode {fk}{id} /antall_stud{fk}{null} Institutt for informatikk Gerhard Skagestein 4. februar 2007 /antall_ 0.. Unyttig klasse dmredundansfri-35 For å finne fram til tabellene i en tabelldatabase må vi først generere fremmednøklene Påmelding systemet tabelldatabasen emnekode emnekode emnekode emnekode semesterkode semesterkode semesterkode antall-stud student hovedlærer Institutt for informatikk Gerhard Skagestein 4. februar 2007 etterfølger forgjenger navn En tabell for hver klasse dmredundansfri-36
systemet tabelldatabasen emnekode INF00 INF040 INF050 emnekode INF00 INF050 semesterkode vår2006 vår2006 antall-stud 457 277 etterfølger INF050 INF050 INF00 Eksempler på forekomster forgjenger INF000 INF040 INF000 Litt om tid Tiden er kontinuerlig derfor må den deles opp i små stykker den mådiskretiseres (jf. læreboka figur 2-3) Mulig verdi Diskretisert verdi x Virkelig verdi Størrelsen på stykkene bestemmer oppløsningsevnen (jf. læreboka figur 2-4) Hendelse x Hendelse2 x Hendelse3 x t x Som regel velger vi inndelinger som er kjent fra kalender og klokke Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-37 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-38 Datamodell med tidsdimensjon Relasjonsdatabase med tidsdimensjon År jf. lærebokas figur 5-0 navn årstall {id} Materialgjenvinning _iår gjenvunnet_ materiale 0.. gjenvunnet mengde material Mengde # tonn {id} Materialgjenvinning _iår NOT NULL kommunenr kommunenavn kommunenr materialnavn år gjenvunnet_mengde kommune Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-39 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-40
hoved lærer systemet (forts.) Påmelding semesterkode{id} 0.. /antall_ Tidsbegrepet kan være skjult hoved lærer systemet med tidsbegrep Påmelding semesterkode{id} semesterkode{id} 0.. /antall_ Semester som tidsbegrep Semester anbefalteforkunnskaper anbefalteforkunnskaper Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-4 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-42 Homogenitetsregelen Underbegreper Alle tenkelige forekomster av et begrep skal kunne spille alle roller som er tilknyttet begrepet. Jfr. Fra kjernen og ut, fra skallet og inn avsnitt 5.3 og 5.4.4 Vi krever ikke alltid at datamodellen tilfredsstiller homogenitetsregelen, men den blir mer presis hvis den gjør det. Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-43 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-44
Figur 5-. Spesialisering og generalisering Underbegreper Mann a) Generalisering Kvinne Spesialisering ektemann hustru ektemann b) hustru Kjønn kjønnskode {id} Bruk av homogenitetsregelen kjønn 0.. antall fødsler Fornavn c) Mann ektemann hustru {disjoint, complete} Kvinne Institutt for informatikk Gerhard Skagestein 4. februar 2007 Underbegrepet arver representasjonen til superbegrepet. Ingen representasjon i underbegrepene! dmredundansfri-45 Kjønn kjønnskode {id} /kjønn Hvorfor minimumsmultiplisitet = 0? Mann {disjoint, complete} Kvinne Institutt for informatikk Gerhard Skagestein 4. februar 2007 antall fødsler Fornavn dmredundansfri-46 Figur 7-25. Underbegrep med diskriminerende assosiasjon Kjønn kjønnskode {id} diskriminerende assosiasjon 0.. {disjoint, complete} Fornavn a) Separasjon Figur 5-9. Håndtering av underbegreper NOT NULL fødselsnr kjønn fornavn NOT NULL Mann fødselsnr Kvinne fødselsnr antall_fødsler Mann {kjønn='m'} ektemann Mann.kjønn = M Kvinne.kjønn = K {kjønn='k'} hustru Kvinne antall fødsler b) Absorpsjon NOT NULL fødselsnr kjønn fornavn antall_fødsler nil hvis kjønn = m c) Partisjonering fødselsnr Mann NOT NULL Kan sløyfes, ingen forekomster Kan sløyfes, overflødig NOT NULL fødselsnr kjønn fornavn Kvinne fødselsnr kjønn fornavn antall_fødsler Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-47 Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-48
systemet innføring av underbegreper Lærer hoved lærer Student Er homogenitetsregelen oppfylt overalt? alle tenkelige i øyeblikket? i all tid? Institutt for informatikk Gerhard Skagestein 4. februar 2007 Påmelding semesterkode{id} anbefalteforkunnskaper dmredundansfri-49 Oppsummering Vær bevisst på hvilke individer vi skal vite noe om I en redundansfri datamodell skal det ikke finnes o dobbeltlagrede opplysninger o avledede opplysninger Redundansfrihet kan oppnås ved o gruppering av elementære utsagn o normalisering o intuisjon ( gå rett på ) Begrepsdannelse: Mange-til-mange-assosiasjoner kan oppfattes som et begrep Tid krever diskretisering Underbegreper kan avdekkes ved å bruke homogenitetsregelen Institutt for informatikk Gerhard Skagestein 4. februar 2007 dmredundansfri-50