INF2120 Dataorientert modellering Ragnar Normann 9. mars 2005 INF2120 Prosjekt i modellering 1
Dataorientering og UML UML har som utgangspunkt et objektorientert syn på tilværelsen hvor oppførsel og samspill mellom objekter er det sentrale I UML beskrives datastrukturen i klassediagrammer som gir en oversikt over klassene i systemet og de statiske relasjonene mellom dem Metoder for å analysere statisk datastruktur eksisterte lenge før UML ble til Den mest utbredte av disse dataorienterte metodene er ER (Entity- Relationship) som ble introdusert av Chen i 1976 ER finnes i et utall dialekter, og bortsett fra at de inneholder navnet på metoder i klassene, er UML klassediagrammer ikke noe annet enn nok en ER-dialekt I dag skal vi konsentrere oss om ORM (Object-Role Modelling) som er en annen dataorientert analysemetode 9. mars 2005 INF2120 Prosjekt i modellering 2
ORM og 100%-prinsippet ORM er en metode for å beskrive informasjonsstruktur ORM baserer seg på 100%-prinsippet: Det er alltid mulig å gi en endelig og fullstendig tekstlig beskrivelse av UoD, dvs. den delen av virkeligheten som interesserer oss (UoD = Universe of Discourse) En slik beskrivelse kalles en informasjonsmodell Informasjonsmodellen kan brukes som forskrift for et datasystem og kalles da datasystemets begrepsmessige skjema Siden utgangspunkt og mål er tekstlige beskrivelser, er ORM faglig forankret i (formell) lingvistikk Resultatet av en ORM-analyse er en grafisk fremstilling av en tekstlig beskrivelse av informasjonsstrukturen 9. mars 2005 INF2120 Prosjekt i modellering 3
NIAM en ORM-dialekt NIAM er den eldste ORM-dialekten NIAM ble utviklet i Nederland 1964 1977 av en gruppe ledet av G.M.Nijssen Nijssen hevder at NIAM er et akronym for «Natural language Information Analysis Methodology» Alle andre sier at NIAM står for «Nijssen's Information Analysis Methodology» Jeg skal bruke en revidert versjon (standard) fra 1982 Merk: I INF2120 skal dere bruke UML og ikke NIAM! 9. mars 2005 INF2120 Prosjekt i modellering 4
Elementære setninger En setning kalles elementær hvis den ikke kan deles opp uten å miste meningsinnhold Eksempel: Setningen «Mons spiser grøt og drikker melk» kan deles opp i to elementære setninger «Mons spiser grøt» «Mons drikker melk» 9. mars 2005 INF2120 Prosjekt i modellering 5
Entiteter En entitet er en gjenstand, egenskap eller hendelse i interesseområdet vårt Eksempler: Sigrid Undset Bilen min Studielånet ditt INF2120 Dagen i dag Rød Entiteter beskrives vanligvis med substantiver, men pronomener og adjektiver forekommer også 9. mars 2005 INF2120 Prosjekt i modellering 6
Begreper Det første, og vanskeligste, trinnet i modelleringsprosessen er å putte entitetene i interesseområdet inn i båser eller grupper En slik gruppe entiteter kalles en entitetstype Navnet på en entitetstype kalles et begrep Eksempler på begreper Person Ansatt Lån Farge 9. mars 2005 INF2120 Prosjekt i modellering 7
Eksempel på et «vanskelig» begrep Hvilke entiteter i interesseområdet omfattes av begrepet «bok»? Har du lest Peer Gynt? Når ble boken med ISBN 82-00-22476-6 utgitt? Hvem har lånt eksemplar 5 av denne boken? Merk: Begrepers innhold er avhengig av hva som er vårt interesseområde 9. mars 2005 INF2120 Prosjekt i modellering 8
Representasjonstyper Vanligvis kan ikke entiteter lagres i databasen De data vi lagrer, er representasjoner av entitetene, og disse representasjonene må tilhøre en representasjonstype for det begrepet som entiteten tilhører Et begrep kan tilordnes flere representasjonstyper Eksempler: Personer kan representeres med navn og/eller fødselsnummer Biler kan representeres med bilnummer eller chassisnummer 9. mars 2005 INF2120 Prosjekt i modellering 9
Ogdens trekant 9. mars 2005 INF2120 Prosjekt i modellering 10
Roller Når vi beskriver sammenhenger mellom begreper, sier vi at begrepene spiller roller overfor hverandre Eksempel: Anta at vi har de to begrepene «person» og «bil», og at personer kan eie biler Da sier vi at person spiller rollen «eier» overfor bil, og at bil spiller rollen «er eid av» overfor person Roller uttrykkes vanligvis med verb og/eller preposisjoner 9. mars 2005 INF2120 Prosjekt i modellering 11
Symboler i NIAM Begreper tegnes som heltrukne sirkler Representasjonstyper tegnes som stiplede sirkler Person Fødselsnr 9. mars 2005 INF2120 Prosjekt i modellering 12
Faktatyper Det at personer eier biler, og at biler eies av personer, tegner vi slik: Person eier er eid av Bil En slik sammenheng mellom to begreper hvor begrepene spiller hver sin rolle overfor hverandre, kalles en (binær) faktatype Slike «kjøttben» er de viktigste byggeklossene i NIAM (ORM) 9. mars 2005 INF2120 Prosjekt i modellering 13
Faktatyper i UML Det at kommuner ligger i fylker, tegner vi slik i hhv NIAM og UML: Fylke omfatter ligger i Kommune Fylke 1..1 omfatter Kommune 1..* ligger i 9. mars 2005 INF2120 Prosjekt i modellering 14
Broer Sammenhengen mellom et begrep og dets referansetype kaller vi en bro, og vi tegner den slik: Person med Rollene i broer er ofte preposisjoner Under modelleringen kan det være lurt å vente med å tegne broer Ser vi bort fra identifikatorer, har ikke UML klassediagrammer noen konstruksjon som tilsvarer broer på Person-nr 9. mars 2005 INF2120 Prosjekt i modellering 15
Faktasetningers dype struktur Person eier eies av Bil med på Person med fødselsnummer 12094430256 eier bil med registreringsnummer CC76543 Bil med registreringsnummer CC76543 eies av person med fødselsnummer 12094430256 med på De to setningene har samme meningsinnhold, dvs. samme dype struktur Fødselsnr Reg.- nr 9. mars 2005 INF2120 Prosjekt i modellering 16
Syntaksregler i NIAM Del 1: Begreper og roller Et begrep tegnes som en heltrukket sirkel eller ellipse med et navn inni Samme begrep kan forekomme vilkårlig mange ganger i den ferdige NIAM-modellen Dette er et tegneteknisk hjelpemiddel, og to sirkler (ellipser) med samme navn betegner samme begrep En rolle er et rektangel med en tekst i En rolle skal knyttes til nøyaktig ett begrep (eller en representasjonstype) Tilknyttingen tegnes som en heltrukken linje/kurve mellom randen på rollen og randen på begrepet 9. mars 2005 INF2120 Prosjekt i modellering 17
Syntaksregler i NIAM Del 2: Faktatyper En faktatype tegnes som en eller flere roller stilt ved siden av hverandre Et begrep skal ha minst en rolle som inngår i en faktatype (vi sier at begrepet deltar i faktatypen) Et begrep kan ha vilkårlig mange roller og altså delta i vilkårlig mange faktatyper (og broer) Et begrep kan ha flere roller i samme faktatype Disse rollene må da ha forskjellig tekst 9. mars 2005 INF2120 Prosjekt i modellering 18
Syntaksregler i NIAM Del 3: Broer og representasjonstyper En representasjonstype tegnes som en stiplet sirkel med et navn i Alle representasjonstyper har nøyaktig én rolle (en rolle som altså ligger i den (eneste) broen som fører til representasjonstypen) Broer har alltid eksakt to roller, hhv. knyttet til et begrep og en representasjonstype Broer har alltid (minst) en kort entydighetsskranke 9. mars 2005 INF2120 Prosjekt i modellering 19
Fakta (setningsforekomster) og semantikkregelen for faktatyper Alle faktatyper beskriver den dype strukturen i en gruppe med setningsforekomster Semantikkregelen: Alle faktatyper i NIAM-modellen skal være slik at alle setningsforekomster som passer i den, skal være elementære setninger Konsekvens: Ingen faktatype skal kunne erstattes av faktatyper som alle er kortere enn den opprinnelige faktatypen 9. mars 2005 INF2120 Prosjekt i modellering 20
Entydighetsskranker Person Eier Eies av Bil Eva Nils Else Eva Per Hans Liv JC 24356 BC 77754 DJ 10765 KE 75643 AA 24680 BC 77754 DE 85975 Det som står under entydighetspilen, kan ikke gjentas 9. mars 2005 INF2120 Prosjekt i modellering 21
Eksempel: Ekteskap Kvinne er gift med er gift med Mann Hvor skal pilen(e) stå? Skriv forekomster! 9. mars 2005 INF2120 Prosjekt i modellering 22
Monogami Kvinne er gift med er gift med Mann Én til én-relasjon 9. mars 2005 INF2120 Prosjekt i modellering 23
Polygyni Kvinne er gift med er gift med Mann Mange til én-relasjon 9. mars 2005 INF2120 Prosjekt i modellering 24
Polyandri Kvinne er gift med er gift med Mann Én til mange-relasjon 9. mars 2005 INF2120 Prosjekt i modellering 25
Polygami Kvinne er gift med er gift med Mann Mange til mange-relasjon 9. mars 2005 INF2120 Prosjekt i modellering 26
Entydighet et enkelt eksempel En person kan ha ett navn, men ikke flere En person kan ha én eller flere telefoner, og en telefon kan være for én eller flere personer En person kan ha én eller flere biler, men hver bil kan bare ha én eier Person har med har på for for Navn Tlf. Bil 9. mars 2005 INF2120 Prosjekt i modellering 27
Entydighetsskranker i broer Person med på Navn Ikke entydig bro (homonym) (forekommer ofte) Person med på Kodenavn Entydig bro (synonym) (forekommer svært sjelden) Person med på Ans.- Nr. Én-entydig bro (forekommer ofte) 9. mars 2005 INF2120 Prosjekt i modellering 28
Påkrevd (=total) rolle Alle personer skal ha et navn har på Navn Person med for Tlf. har for Bil Alle forekomster av begrepstypen finnes i denne rollen 9. mars 2005 INF2120 Prosjekt i modellering 29
Perfekte broer Person med for F.nr. Perfekt bro (kan brukes som referansemåte dvs. identifikator) Alle personer har eksakt ett fødsels-nummer Forskjellige personer har ulike fødsels-numre En kortform for den perfekte broen ovenfor er slik: Person (F.nr.) 9. mars 2005 INF2120 Prosjekt i modellering 30
Faktatypers aritet (lengde) Person er gift Unær faktatype (aritet=1) Person ansatt i med ansatt Firma Binær faktatype (aritet=2) ble ansatt i er ansettelsesdato med ansatt Ternær faktatype (aritet=3) Person Dag Firma 9. mars 2005 INF2120 Prosjekt i modellering 31
Entydighet i lange faktatyper ble målt Tid ble målt Sted ble resultat Temp. Temperaturen kan måles flere steder samtidig Den kan også måles flere ganger på samme sted På samme tidspunkt kan flere steder ha samme temperatur Samme sted kan ha samme temperatur på flere tidspunkt På samme tid og sted kan det bare være en temperatur 9. mars 2005 INF2120 Prosjekt i modellering 32
Regler for entydighetsskranker Alle faktatyper og broer skal ha minst én entydighetsskranke Korte entydighetsskranker er strengere enn lange, så ingen entydighetsskranke får lov til totalt å dekke en annen Broer skal ikke ha lang entydighetsskranke Lange faktatyper kan godt ha overlappende entydighetsskranker 9. mars 2005 INF2120 Prosjekt i modellering 33
Overlappende entydighetsskranker Ble gift Kvinne For giftermål Dag Ble gift Mann En kvinne kan ikke gifte seg flere ganger på samme dag En mann kan ikke gifte seg flere ganger på samme dag En kvinne og en mann kan gifte seg med hverandre flere ganger Dette kan ikke uttrykkes i UML uten å bruke OCL 9. mars 2005 INF2120 Prosjekt i modellering 34
N-1 regelen for entydighetsskranker Gitt en setningstype med aritet N Hvis setningstypen er elementær, har den ingen entydighetsskranke som er kortere enn at den dekker N-1 roller Nesten alltid: Hvis setningstypen ikke har noen entydighetsskranke som dekker mindre enn N-1 roller, så er den elementær 9. mars 2005 INF2120 Prosjekt i modellering 35
Et eksempel til ettertanke Målte Ble målt Ble målt Ble resultat På samme tid og sted kan det bare være én temperatur Meteorolog Tid Sted Temp. En meteorolog kan ikke gjøre to temperaturmålinger på samme tidspunkt En meteorolog kan bare være ett sted på et gitt tidspunkt På samme tid og sted kan det bare være en meteorolog (?) NB: Denne faktatypen er ikke elementær. Problem: Hvordan skal den splittes? 9. mars 2005 INF2120 Prosjekt i modellering 36
Begrepsdannelse Måling Tid Ble målt Ble målt Sted Tid Ble målt på Måling på Ble målt Sted Hvilke skranker trengs for å gjøre denne konstruksjonen syntaktisk korrekt? 9. mars 2005 INF2120 Prosjekt i modellering 37
Kombinert entydighet Tid Ble målt på Måling på Ble målt Sted Måling er definert som kombinasjonen av tid og sted 9. mars 2005 INF2120 Prosjekt i modellering 38
Målte Ble målt Ble målt Ble resultat To måter å tegne «måling» på Meteorolog Tid Sted Temp. Tid Ble målt på Måling på Ble målt Sted Meteorolog Målte Ble målt av Med resultat Ble resultat Temp. 9. mars 2005 INF2120 Prosjekt i modellering 39
Terminologi midlertidig oppsummering Begrepstype Representasjonstype Faktatype Alltid Bro/referansetype Entydighet Kombinert entydighet 9. mars 2005 INF2120 Prosjekt i modellering 40
Populasjoner for roller og begreper Roller er de eneste informasjonsbærerne i NIAM, dvs. at bare roller kan ha forekomster Mengden av forekomster i en rolle r kalles populasjonen til r og betegnes med pop(r) Begreper har egentlig ikke forekomster Det er likevel praktisk å snakke om populasjonen til begreper Vi definerer populasjonen til et begrep A som pop(a) = U pop(r) der unionen tas over alle roller som spilles av begrepet A 9. mars 2005 INF2120 Prosjekt i modellering 41
Påkrevde roller Vi definerer en rolle r for begrepet A som påkrevd (mandatory) hvis det for alle tilstander av databasen skal gjelde at pop(a) = pop(r) I NIAM: A V r Påkrevde roller kalles også for totale roller 9. mars 2005 INF2120 Prosjekt i modellering 42
Kombinert påkrevd rolle pop(bil) = pop(er privatbil for) U pop(er firmabil for) Bil (kj.tegn) er privatbil for T eier Person (F.nr.) er firmabil for eier Firma (foretaksnr.) En bil må være enten firmabil eller privateid (eller begge deler) 9. mars 2005 INF2120 Prosjekt i modellering 43
Mengdeskranker Mengdeskrankene (set-comparison constraints) begrenser mengden av forekomster i en eller flere roller i forhold til forekomstene i andre roller Mengdeskranker finnes i følgende varianter: Likhetsskranke (Equality constraint) Ulikhetsskranke (Exclusion constraint) Delmengdeskranke (Subset constraint) 9. mars 2005 INF2120 Prosjekt i modellering 44
Mengdelikhetsskranken pop(r 1 ) = pop(r 2 ) for alle tilstander Person (F.nr.) r 1 = r 2 9. mars 2005 INF2120 Prosjekt i modellering 45
Mengdelikhetsskranken, eksempel Avdeling (avd.navn) ans.avd. V Ansatt (ans.nr.) = utbet.lønn lønnstrekk Penger (NOK) Likhetsskranken krever at oppdateringer skjer i sammensatte transaksjoner 9. mars 2005 INF2120 Prosjekt i modellering 46
Mengdeulikhetsskranken r 1 Person pop(r 1 ) pop(r 2 )= r 2 Mengdeulikhetsskranken kan kombineres med en kombinert påkrevd rolle for å definere en partisjon: Person r 1 r 2 T 9. mars 2005 INF2120 Prosjekt i modellering 47
Mengdeulikhetsskranken, eksempel Avdeling (avd.navn) ans.avd. V Ansatt (ans.nr.) mnd.lønn timelønn Penger (NOK) 9. mars 2005 INF2120 Prosjekt i modellering 48
Mengdeulikhetsskranke over en eller flere roller Person sager Gren Person sager Gren sitter sitter Person sager sitter Gren Sag ikke av den grenen du sitter på! 9. mars 2005 INF2120 Prosjekt i modellering 49
Den generelle mengdeulikhetsskranken 1 k n 1 m n k m pop(r k ) pop(r m )= A (a) r 1 r 2 B 1 (b 1 ) B 2 (b 2 ) Hvorfor har vi ikke noe tilsvarende for mengdelikhet? r n B n (b n ) 9. mars 2005 INF2120 Prosjekt i modellering 50
Delmengdeskranken Person r 1 pop(r 1 ) pop(r 2 ) r 2 Den kalles også først siden Pilen peker mot først -rollen (r 1 ) 9. mars 2005 INF2120 Prosjekt i modellering 51
Delmengdeskranken, eksempel Avdeling (avd.navn) ans.avd. V Ansatt (ans.nr.) mottar mnd.lønn har bonus Penger (NOK) 9. mars 2005 INF2120 Prosjekt i modellering 52
Delmengdeskranke over en eller flere roller Person skytter død bjørn Bjørn Person skytter død bjørn Bjørn skinnselgerbjørneskinn skinnselgerbjørneskinn Person skytter død bjørn skinnselgerbjørneskinn Bjørn Selg ikke skinnet før bjørnen er skutt! 9. mars 2005 INF2120 Prosjekt i modellering 53
Underbegreper (Subtypes) Noen biler er lastebiler Vekt (kg) for veier V Bil (Reg.nr.) V reg_år registrert År (årstall) maxlast frakter V Lastebil V plan lasteplan Areal (m 2 ) 9. mars 2005 INF2120 Prosjekt i modellering 54
Delmengdeskranke eller underbegrep? Ansatt (ans.nr.) lønn Beløp (NOK) selger bonus Ansatt (ans.nr.) Selger V lønn bonus Beløp (NOK) Er det å være selger en permanent tilstand? 9. mars 2005 INF2120 Prosjekt i modellering 55
Kinoeksemplet - del 1 Tidspunkt for på V Kino med på V Forestilling V viser vises på Film Forestilling Kino Tidspunkt Film 9. mars 2005 INF2120 Prosjekt i modellering 56
Kinoeksemplet - del 2 Kino med på V Benk med på V Radnr for med V Kinosete Stolnr for med V Kinosete Kino Radnr Stolnr 9. mars 2005 INF2120 Prosjekt i modellering 57
Kinoeksemplet - del 3 Forestilling med på V Billett Vkoster på Beløp Kinosete med til V Billett Forestilling Kinosete Beløp 9. mars 2005 INF2120 Prosjekt i modellering 58
Ekvivalente stier (kinoeksemplet) Film vises på viser V Beløp på koster V Tidspunkt Kino for for med på på på V V V Forestilling med til V Billett V til med Benk med på V Radnr. for med V Kinosete Stolnr. for med V 9. mars 2005 INF2120 Prosjekt i modellering 59
Sammenligning av det dataorienterte og det objektorienterte perspektivet I det dataorienterte perspektivet interesserer vi oss for faktaopplysninger av statisk natur om interesseområdet, samt skranker som forhindrer registrering av åpenbart uriktige fakta I det objektorienterte perspektivet interesserer vi oss for virkelige og tenkte objekter i interesseområdet, og hvordan disse objektene gjennom samarbeide kan gi en hensiktsmessig modell Men har ikke disse to perspektivene svært lite felles? 9. mars 2005 INF2120 Prosjekt i modellering 60
Dataorientering vs. objektorientering I Både datasentrerte og objektorienterte informasjonssystemer inneholder data Forskjellen er at i datasentrerte systemer er alle data samlet i en sentral ressurs databasen mens i objektorienterte systemer er dataene fordelt på objektene ut fra det generelle prinsipp at det objektet som har bruk for data selv tar vare på dem. Dataene gis «evig liv» ved å gjøre objektene «persistente» Dette kan realiseres på flere måter, f.eks. ved hjelp av en OO-database 9. mars 2005 INF2120 Prosjekt i modellering 61
Dataorientering vs. objektorientering II NIAM/ORM er i utgangspunktet (nesten) nøytral overfor hvilket perspektiv som velges Perspektivet kommer inn når de elementære faktaene skal grupperes til en relasjonsdatabase eller inn i objekter Mens grupperingsalgoritmen til relasjonsdatabase er gitt, gir NIAM/ORM få argumenter for valget av hensiktsmessige objekter Her må vi gripe til andre betraktningsmåter 9. mars 2005 INF2120 Prosjekt i modellering 62
Andre relevante forskjeller I OO har vi ikke bare mengde, men også «bag» og «list» krav om entydighetsskranke faller bort forekomstene kan ordnes I OO kan strukturer som «set», «bag» og «list», samt generelle objekter, brukes som verdier uendelig mange muligheter for hvordan data struktureres I OO er dataene innkapslet i objektene dataenes struktur er ukjent for omverdenen de kan bare fås tak i gjennom spørremeldinger I OO har objekter sin egen, innebygde identifikator (OID) begreper behøver ikke alltid ha en representasjon 9. mars 2005 INF2120 Prosjekt i modellering 63
Sterke sider ved ORM/NIAM ORM/NIAM har et mye sterkere skrankeapparat enn det UMLs klassediagrammer har UML klassediagrammer mangler (ordnet etter viktighet) kombinert entydighet delmengdeskranker likhets- og ulikhetsskranker kombinert total ORM/NIAM er en «bottom-up»-metode som tvinger frem at detaljene blir riktige, men som ikke nødvendigvis gir bedre oversikt over den totale datastrukturen enn det et klassediagram gjør ORM/NIAM er bedre enn UML til å analysere den statiske datastrukturen og er følgelig et bedre verktøy enn klassediagrammer ORM/NIAM er ikke konkurrent til noen andre diagramtyper i UML Husk: I INF2120 er det UML som skal brukes! 9. mars 2005 INF2120 Prosjekt i modellering 64