Gerhard Skagestein: Systemutvikling fra kjernen og ut, fra skallet og inn. Oppgaver til kapittel 5 - Datamodellering med UML Oppgave 2. Begreper og representasjoner a. I en modell finner du begrepene Mann og Kvinne, begge med representasjonen fødselsnummer. Ville du generalisere disse to begrepene til Person? Ja, hvis alle eksisterende og fremtidige assosiasjoner er kjønnsnøytrale, dvs. at de er knyttet både til Mann og Kvinne. (Dette er lite trolig, den mest vanlige modellen er generaliserings/spesialiseringshierarkiet som er vist i figur 5-11 i læreboka.) b. I en modell finner du begrepene Lengde og Høyde, begge representert med et antall cm. Ville du generalisere disse begrepene til et felles begrep? Ja, og særlig hvis det kan bli aktuelt å sammenlikne lengder og høyder, eller å addere eller subtrahere dem. Mål, vekt og beløp bør som regel opptre som generelle begreper i de fleste modeller. c. Finn mulige begreper og representasjoner for hver av de følgende representasjonsforekomster. Merk at hvilke begreper du "ser", er avhengig av din referanseramme. Det er godt mulig at noen av representasjonene ikke vil si deg noe som helst. Merk også at en eneste representasjonsforekomst er et magert grunnlag å gå ut fra - en eller to forekomster til vil bidra vesentlig til et sikrere valg av tilhørende begrep. Norge Land (landnavn) Troms Fylke (fylkenavn) Oslo By, Kommune, Fylke,( --navn) Vålerenga Bydel, Idrettslag, Fotballag,,( -navn) Dronningens gate 67 Adresse, Eiendom, Bygning, (adresse) Høyskoleforlaget Forlag, Firma (orgnr) Universitetet i Oslo Universitet, Undervisningsinstitusjon Lærested (-navn) N-4661 Poststed (i Norge) ( postnr) post@hoyskoleforlaget.no e-post-adresse, e-post-adresse (-tekst) http://www.hoyskoleforlaget.no Nettsideadresse, UR ( url) (+47) 38 10 50 00 Telefonlinje (telefonnr med retningsnummer) # $ Beløp (#dollar) 7855 05 03017 Bankkonto (bankkontonr) DE 85975 Bil (kjennetegn for bil) Ibsen Etternavn, Forfatter, Skuespiller, Parkeringshus (-navn) Sult Bok, Roman, Følelse (-navn, ) 21 º C Temperatur (#º C) E6 Hovedvei, Europavei (veinummer) d. Foreslå representasjonstyper for hver av de følgende begreper: Person fødselsnummer Ansatt ansattnummer Firma organisasjonsnummer, firmanavn Bil kjennetegn, rammenummer Systemutvikling kjernen/skallet: Løsningsforslag kapittel 5. Side 1
Bok ISBN, forfatternavn+titteltekst+utgivelsesårstall Innsjø/vann navn (entydig?), nummer Kjemisk grunnstoff kjemisk kode Vindstyrke # m/sekund, vindstyrkebetegnelse {bris,} Elektrisk spenning # V e. Hvilke av begrepene i forrige oppgave vil gi opphav til klasser som trolig vil kunne bli undertrykket i en gruppert modell? Mål, antall, vekt, dvs Vindstyrke og Elektrisk spenning Oppgave 3. Enkle datamodeller Nedenfor finnes eksempler på opplysninger som skal kunne gis av et informasjonssystem. Lag en datamodell for hvert av punktene, med begreper, representasjoner, assosiasjoner, roller og multiplisiteter. Merk at tilstedeværelsen av ordet "og" som regel innebærer at setningen kan deles opp i flere assosiasjoner. Slik oppdeling kan imidlertid være mulig også i andre tilfeller. a. Trondheim ligger i Sør-Trøndelag Dette er "rett fram etter nesa"-løsningen. Men det er selvfølgelig grunn til å lure på om det er kommuner man er ute etter, eller byer og tettsteder. b. Gro går i klasse 1b Vi forutsetter her at fornavn entydig identifiserer person noe som er ganske tvilsomt. Så i neste runde bør vi nok ta med etternavnet også, eller gå over til fødselsnummer. Alternativer til Person er Elev, Student, Jente, Er klassebetegnelsen informasjonsbærende finnes det et begrep Klassetrinn? c. NN er ordfører i Oslo Diskusjonen her går først og fremst på multiplisitetene. Kan en person være ordfører i flere kommuner? Skal minimumsmultiplisiteten være 0 på personsiden, eller må en kommune til enhver tid ha en ordfører? d. Jens spiller på Vålerenga Systemutvikling kjernen/skallet: Løsningsforslag kapittel 5. Side 2
At Jens er en person, er rimelig opplagt, men med samme diskusjon som før om fornavnets fortreffelighet som entydig representasjon. Men hva er Vålerenga? En bydel, et idrettsklubb, et fotballag eller en ishockeyklubb? Hva slags spilling dreier det seg om? Blåser han trompet i Strømsveien? Kan en person spille på flere hva det nå måtte være? En enkelt setning gir rom for mange fortolkninger! e. Mons liker saft og melk Person/Baby/Katt(navn) liker drikke (drikkebetegnelse) * - * f. Else leser en roman Person(fornavn) leser Litteraturtype(typebetegnelse) * - 1 (øyeblikksbilde?) g. Else leser "Sult" Person(fornavn) leser Bok(boktittel) * - 1 (øyeblikksbilde?) h. Else leser Hamsuns roman "Sult" Person(fornavn) leser Bok(boktittel) * - 1 (øyeblikksbilde?) Person(etternavn) forfatter Bok(boktittel) * - * Kommentar: Begrepet Bok går åpenbart igjen i begge utsagn. Men bør Person generaliseres til et felles begrep? i. DE 85975 er en rød Toyota Bil(kjennetegn) er Bilmerke(bilmerkenavn) * - 1 Bil(kjennetegn) har Farge(fargenavn) * - 1 Oppgave 4. Enkle relasjonsdatabaser Foreslå relasjonsdatabasestrukturer for hvert av punktene a) til i) i forrige oppgave. Strukturene følger direkte av modellene. Her et eksempel: Foreslå relasjonsdatabasestrukturer for hvert av punktene a) til i) i forrige oppgave. Strukturene følger nokså direkte av modellene: a. Fylke: fylkenavn Kommune: kommunenavn, fylkenavn Referanseintegritet fra Kommune.fylkenavn til Fylke.fylkenavn b. Klasse: klassebetegnelse Person: fornavn, klassebetegnelse Referanseintegritet fra Person.klassebetegnelse til Klasse.klassebetegnelse c. Person: fornavn Kommune: kommunenavn, ordfører Referanseintegritet fra Kommune.ordfører til Person.fornavn Kommentar: Vi kunne like godt ha gruppert kommunenavn inn i Person, men mister da ordfører-rollenavnet. d. Idrettslag: idrettslagnavn Person: fornavn, idrettslagnavn Systemutvikling kjernen/skallet: Løsningsforslag kapittel 5. Side 3
Referanseintegritet fra Person.idrettslagnavn til Idrettslag.idrettslagnavn e. Katt: navn Drikke: drikkebetegnelse Katt_Drikke: navn, drikkebetegnelse Referanseintegritet fra Katt_Drikke. navn til Katt.navn Referanseintegritet fra Katt_Drikke. drikkebetegnelse til Drikke.drikkebetegnelse Kommentar: Mange-til-mange-assosiasjon den må løses opp ved å sette inn en ekstra tabell for knytningen (jfr. Assosiasjonsklasser og erstatning av disse med vanlige klasser). f. Litteraturtype: typebetegnelse Person: fornavn, typebetegnelse Referanseintegritet fra Person.typebetegnelse til Litteraturtype.typebetegnelse g. Bok: boktittel Person: fornavn, boktittel Referanseintegritet fra Person.boktittel til Bok.boktittel h. Bok: boktittel Person1:fornavn, boktittel Person2:etternavn Forfatterskap: etternavn, boktittel Referanseintegritet fra Person1.boktittel til Bok.boktittel Referanseintegritet fra Forfatterskap.boktittel til Bok.boktittel Referanseintegritet fra Forfatterskap.etternavn til Person2.etternavn i. Bil: kjennetegn, bilmerkenavn, fargenavn Bilmerke:bilmerkenavn Farge:fargenavn Referanseintegritet fra Bil.bilmerkenavn til Bilmerke.bilmerkenavn Referanseintegritet fra Bil.fargenavn til Farge.fargenavn Oppgave 5. Fra relasjonsdatabase til modell Gitt følgende to tabeller: FODSELSNR FORNAVN ETTERNAVN BOSTED 12016789567 Gro Arne 2072 13076685394 Arne Arne 2072 24087523456 Dag Dal 5200 22028036723 Gro Li POSTNR 2072 Dal 5200 Os POSTSTED Under forutsetning av at vi skal kunne stille mer eller mindre meningsfylte spørsmål som "Hvem har samme fornavn som etternavn", "Hvem har samme etternavn", Systemutvikling kjernen/skallet: Løsningsforslag kapittel 5. Side 4
"Hvem har samme etternavn som poststedet han bor på", hvordan ser da den ugrupperte datamodellen ut? Vi må først gjøre et par åpenbare antagelser om hva som er primærnøkler: FODSELSNR og POSTNR. Så lager vi binære assosiasjoner mellom begrepene Person(fodselsnr) og Poststed(postnr) og hvert av de begrepene vi kan slutte oss til ut fra de øvrige attributtene. For å kunne svare på spørsmålene må Fornavn, Etternavn og Poststed(snavn) generaliseres til Navn fornavn, etternavn og poststedsnavn blr da roller overfor Navn. Oppdatert 1. september 2006 GS Systemutvikling kjernen/skallet: Løsningsforslag kapittel 5. Side 5