Konceptuell modellering och Databasmodellering Kontoutdelning EFTER dagens föreläsning (WinXP/FC/Daisy/Unix) Programvaror på kursen: MySQL MS Access 2003 Rational Rose 2006-10-25 1 Konceptuell modellering och Databasmodellering Från verklighet till system Konceptuell modellering Modelleringsmönster 2006-10-25 2 1
Från verklighet till system Verklighet Urval Modell Produkt Order Kund Informationssystem 3 Arkitektur hos ett informationssystem Presentation Användargränssnitt via en browser Applikationslogik Data Java servlets som exekverar på en server Data från en databashanterare 4 2
Relationsdatabaser KUND Namn Gatuadress Postnummer Postadress Telefon Kontokort Giltighetstid Pia Eriksson Storg. 12 171 55 Torget 88 77 66 155 666 777 11/01 Ulf Eriksson Storg. 12 171 55 Torget 88 77 66 234 555 678 11/00 Ola Hansson Lillg. 2 218 43 Landet 55 44 11 666 222 111 09/01 Bo Eriksson Storg. 12 171 55 Torget 88 77 66 432 654 221 11/01 Bo Johnsson Eriksg. 45 171 55 Torget 99 77 21 123 444 321 11/01 My Hansson Lillg. 2 218 43 Landet 55 44 11 666 222 111 09/01 5 Frågespråk Hur kommer applikationsprogrammen åt data i databasen? Genom ett frågespråk. SELECT Namn FROM PRODUKT WHERE Typ = Stol 6 3
Presentation Hur kommer (slut-) användare åt information i databasen? Gränssnittet ger möjlighet att nå applikationsprogrammen och därmed data i databasen. 7 Modeller Modell: Struktur som avbildar vissa aspekter av någon del av verkligheten Exempel: Kartor Differentialekvationer Konceptuella modeller Syfte med modeller: Studera verkligheten indirekt genom att studera modellen Underlätta kommunikation Utgöra underlag för vidare implementering 8 4
Building the right system Universe of Discourse Conceptual Model (CM) Use of CM? = < > ANIMAL Weight 1 my_animal MEMBERSHIP Date belongs_to 1 myflock 1 SPECIES Mean_weight FLOCK Number Contract Database System Education, Reverse Engineering 9 Grafiska modelleringsspråk Exempel på grafiska modelleringsspråk: UML, E(A)R diagram, Petri nets, Event-Process Chain (EPC), IDEF0, IDEF3, dataflödesdiagram, Role-activity diagrams (RAD), databasdiagram Några grafiska modelleringsspråk är mer expressiva (uttrycksfulla) än andra. Ett skäl till det är att vissa innehåller fler modelleringselement (symboler). De kan då representera fler begrepp, det vill säga fler aspekter av verkligheten (systemet). En nackdel är att ett sådant språk har fler modelleringstermer för användaren att lära sig 10 5
Varför använda grafiska modeller? - Analysredskap underlättar analys av en verksamheten - Designbeskrivningar ritningar över systemet som ska byggas eller förändras - Valideringsinstrument det vill säga validera systemet mot användare och uppdragsgivare med hjälp av grafiska modeller så att systemet får rätt egenskaper innan det byggs klart - Kontrakt mellan beställare och utförare 11 Modeller: Struktur och beteende Strukturella modeller / strukturdiagram - specificerar statiska aspekter av systemet, det vill säga statiska relationer / förhållanden mellan termer Beteendemodeller / beteendediagram - specificerar dynamiska (beteendemässiga) aspekter av systemet, det vill säga specificerar själva manipuleringen / förändringen av de statiska relationerna och i vilken ordning det sker 12 6
Konceptuell modellering En konceptuell modell beskriver data och datasamband på ett representationsoberoende sätt. Vad modellen sen ska implementeras som/i får inte påverka modellens utformning! 13 Modeller problem? Modell: En struktur som avbildar vissa aspekter av någon del av verkligheten Ex på modell - KARTA Modeller förenklar Modeller förvanskar - Grönland, Afrika Modeller fokuserar - topografisk, politisk Modelleringsspråk: Komplexa språk med många symboler versus enklare språk som är lättare att förstå/förklara/validera av lekmän som kan domänen men inte språket 14 7
Modellering fortsättning Kontroll av data skall ske så tidigt (så nära källan) som möjligt! Systemet ska inte kontrollera att data inte är fel, utan undanröja möjligheterna till att det blir fel. Lättare sagt än gjort: Man måste modellera RÄTT (inte bara på rätt sätt) och modelleringsspråket måste kunna representera alla typer av sakförhållanden. 15 Ogdens triangel TERM EXTENSION INTENSION 16 8
Samma ord - olika begrepp (homonymer) På vilka sätt används ordet bok i meningarna nedan? Jules Verne skrev många böcker, en har boktiteln Kapten Grants barn Biblioteket i Vällingby har många böcker Om Kapten Grants barn trycks i A4-format blir antalet sidor i en tryckt bok 100. Bokhandlaren i Jönköping sålde många böcker 17 Samma begrepp - olika ord (synonymer) Avskeda - Friställa Arbetsgivare Arbetsköpare Student Elev? 18 9
Modeller och modelleringsspråk Modell är skrivet i ett Språk beskrivs av System 19 UML klassdiagram Klass Association 20 10
Klassdiagram centralt i UML Klassdiagrammen är i majoritet har blivit nästan synonymt med UML. Klassdiagram beskriver klasser som finns i en domän eller ett system, och statiska associationer mellan klasserna. Klassdiagram visar också klassernas attribut (och operationer). Student personnr namn epostadress registreraförkurs() Kurs kursid kursnamn Notera här, att man kan se följande ord användas som synonymer : typ och klass, relation och association, strukturell och statisk, 21 Klasser notationsvarianter Klassnamn Student personnr namn epostadress registreraförkurs() begärautökatkonto() Student personnr namn epostadress Student Operationer Attribut 22 11
Klassdiagram och objektdiagram Klass Student personnr namn bostadsadress epostadress Objekt (instans) nilshall:student personnr = 850302-XXXX namn = Nils Erik Hall bostadsadress = Rågstigen 3 epostadress = hal@dsv.su.se Objekt (instans) annasvan:student personnr = 770102-XXXX namn = Anna Cecilia Svan bostadsadress = Ekvägen 10 epostadress = sva@dsv.su.se Klassdiagram Objektdiagram Kallas ofta instansdiagram. Utökad notation för namngivning. Attribut tilldelas värden. Alla associationer från klassdiagrammet följer med till objekten. Kan ses som en stillbild av ett eller fler objekt vid en viss, given tidpunkt. Varför? Attributens värden kan ändras under objektens livscykel. 23 Egenskaper har multiplicitet (så kallade avbildningsregler) Student personnr namn epostadress 1..* Registrering registreringsid datum Kurs kursid kursnamn 0..1 Multipliciteten för en egenskap (attribut eller association) indikerar hur många olika objekt (eller värden) som kan uppfylla egenskapen. Multiplicitet för associationer anges vid de associerade klasserna var för sig. För fullständighet när vi anger multiplicitet gäller att: - det minsta antalet anges först - det största antalet anges sist - två punkter skrivs ut mellan antalen 24 12
Multiplicitet vanliga kombinationer Student personnr namn epostadress 1..* Registrering registreringsid datum Kurs kursid kursnamn 0..1 Minst 1 och högst 1. Exempel: En student har ett, och endast ett, värde på attributet personnr. 1..* Minst 1 och obegränsat övre antal. Exempel: En student har alltid en epostadress sig tilldelad, men kan ha hur många som helst fler. 0 är giltigt och obegränsat övre antal. Exempel: En student behöver inte ha någon registrering på någon kurs, men kan ha registreringar på ett godtyckligt antal. 0..1 0 är giltigt och högst 1 Exempel: En kurs behöver inte ha fått ett kursnamn, och kan ha högst ett. 25 Avbildningsregler för ATTRIBUT i UML vad identifierar en klass? Student personnr namn epostadress 1..* Student personnr, UNIK namn epostadress 1..* 26 13
Att namnge associationer Tre sätt att namnge associationer: 1) med ett verb vid vardera klassen. bilmärke Bil gäller genomgår Bilregistrering datum Identifiera, eller härled, lämpliga verb ur domänbeskrivningen som uttrycker associationens semantiska betydelse vid var och en av de associerade klasserna. Exemplet uttyds: - en bil genomgår noll-till-många bilregistreringar - en bilregistrering gäller exakt en bil 27 Att namnge associationer, forts. Tre sätt att namnge associationer: 2) med ett enda verb vid associationsstrecket. bilmärke Bil genomgår Bilregistrering bilregistreringsdatum Identifiera, eller härled, ett verb ur domänbeskrivningen som uttrycker associationens semantiska betydelse bäst. Ange vid associationsstrecket. Markera läsriktningen. Görs med en fylld pilspets. Exemplet uttyds: - en bil genomgår noll-till-många bilregistreringar 28 14
Att namnge associationer, sista Tre sätt att namnge associationer: 3) med ett substantiv vid vardera klassen. studregnr Student exjobbare handledare Lärare 1..* anstnr Identifiera, eller härled, ur domänbeskrivningen vilken respektive roll de associerade klasserna har i just den aktuella associationen. Rollerna är substantiv. Ange de två substantiven vid respektive klass. Exemplet uttyds: - en student kan, när den är exjobbare, ha en-till-många lärare som handledare - en lärare kan vara handledare till noll-till-många studenter som är exjobbare 29 Multiplicitet för associationer Student personnr namn epostadress Registrering registreringsid datum Kurs kursid kursnamn Multiplicitet beskriver hur många olika objekt som kan delta i en association mellan två klasser. Exempel: Ett Studentobjekt associeras till noll-till-många Registreringar. Ett Registreringobjekt associeras till en-till-en, d.v.s. exakt en, Student. 30 15
Multiplicitet - regler i systemet vs common sense BIL Regno: Sträng UNIK Märke Sträng ägs_av PERSON Pnr: Sträng UNIK 31 Multiplicitet - en övning PERSON har_mor Vilka avbildningsregler gäller för associationen har_mor? 32 16
Så hur gör man då? I en verklig situation intervjuas användare, manualer läses, eventuella existerande system studeras, verksamheten studeras, etc Ibland har man bara tillgång till textuella beskrivningar av det system man ska modellera Hur angripa dessa? Verb, substantiv, adjektiv? Modelleringsmönster, så kallade data-abstractions, tumregler, med mera... 33 Att göra urvalet Ett företag önskar sälja sina produkter, som är möbler, genom en webbutik. Kunderna skall kunna lägga beställningar på möblerna med hjälp av webbutiken. Produkterna levereras sedan med lastbil till kunderna. För att kunderna skall få en bra bild av möblerna så behöver de veta deras vikt, typ, storlek och det material de är tillverkade av; det behövs också foton på möblerna. Utöver kostnaderna för de enskilda möblerna måste kunden också betala för fraktkostnaden som baseras på den sammanlagda vikten. Kunden kan begära att få leverans inte bara till sin egen adress utan också till andra adresser. Kunden kan önska en tid då leveransen skall ske - det inträffar dock ibland att den verkliga leveranstiden avviker från den önskade. För att kunden skall veta om en leverans gått iväg eller inte behövs information om avgångstider för leveranser. Företaget eftersträvar att samtidigt skicka iväg alla de produkter som ingår i en beställning men man lyckas inte alltid med det, och då kan det behövas flera leveranser för en beställning. Kunden betalar med kontokort. 34 17
PRODUKT Namn Typ Höjd Bredd Djup Material Vikt Pris Bild-liten Bild-stor BESTÄLLNINGS- 1..* RAD Antal 1..* KUND Namn Gatuadress Postnummer Postadress Telefon Kontokort Giltighetstid BESTÄLLNING Best-nummer Gatuadress Postnummer Postadress Datum Fraktkostnad 0..1 LEVERANS Leveransbil Avtalatdatum Avtaladtid Avgångsdatum Avgångstid Leveransdatum Leveranstid 35 Multiplicitet som mått på en modells kvalitet? Tumregel: Alla attribut i en klass bör vara totala (= ha minvärde 1) Ett stort antal partiella attribut (attribut med minvärde = 0) betyder att inte alla instanser (objekt) av klassen har något värde på attributen/egenskaperena ifråga vilket tyder på att man blandat flera fenomen i en och samma klass. DJUR Namn: Skatt_betald: 0..1 Adress: 0..1 Vikt: Medelvikt: 0..1 Utbredningsområde: 0..1 DJUR Namn: Adress: Vikt: ART Utbredningsområde Medelvikt HUND Skatt_betald: 36 18
Modelleringsmönster- Analysmönster - Data abstractions Vilken verklighet man än vill avbilda så förekommer hierarkiska strukturer. Det betyder att vi måste fånga dessa strukturer i vår modell av samma verklighet. Däggdjur Djur Fåglar Gräsätare Rovdjur Pingvin Hovdjur Gnagare Tax Gnu Kanin 37 Arv forts. Klasschema med så kallade isa -associationer: DJUR DÄGG- DJUR isa isa FÅGLAR HOVDJUR GRÄS- ÄTARE isa isa isa GNAGARE isa ROV- DJUR TAX isa isa PINGVIN GNU isa isa HARE 38 19
Arv PERSON Namn: String UNIK isa isa MAN KVINNA Militärtjänstort: String: isa HUND Skatt: Integer DJUR Namn: String UNIK isa KATT MAN och KVINNA är ömsesidigt uteslutande och uttömmande map PERSON HUND och KATT är ömsesidigt uteslutande men inte uttömmande map DJUR En arvs-hierarki består av sub- och supertyper. Subtyperna utgör en delmängd av supertypen. Om subtyperna täcker upp hela supertypen säger man att de är uttömmande (eng. exhaustive). Om en och samma instans inte kan tillhöra till flera subtyper säger man att subtyperna är ömsesidigt uteslut ande (eng. mutually independent). 39 Arv Kund Kontohavare Konto 1 1..* Kundnr: Integer Kontonr: Integer UNIK UNIK Namn : String Företag Börsnoterad: String Person 1..* Arbetar_hos Bankbok Saldo: Integer Lån Lånesumma : Integer Hur hade schemat blivit om isa-relationer inte använts? 40 20
Arv arbetar_hos 0..1 Person Kundnr: Integer UNIK Namn : String Börsnoterad: String 0..1 Kontohavare 1 1..* Konto Kontonr: Integer Saldo: Integer 0..1 Lånesumma: Integer 0..1 41 Arv forts. Om subtyper har alla attribut och relationer gemensamma: Överväg att kombinera dem till en subtyp. Lägg ev. till ett extra attribut i entiteten som tjänas som typ-beteckning. Om en subtyp är uttömmande map supertypen: Låt subtypen uppgå i supertypen. Om flera subtyper inte har några egna attribut eller relationer: Överväg att slå samman dem till en subtyp. 42 21
Reifiering SJUKDOM 1..* botar blir: botas SJUKDOM 1 BOT Procent: Float BEHANDLING 1..* botmedel 1 BEHAND- LING Relationen botar är M:M. Om man vill lagra information som berör relationen botar måste relationen reifieras, dvs göras till ett objekt. Övriga M:M kan lämnas som de är på modelleringsnivå, men måste brytas upp när man skapar en relationsdatabas! 43 Övning reifiering PERSON Namn: Sträng UNIK är_medlem_i KLUBB Klubb_namn: Sträng UNIK Uttöka det konceptuella schemat ovan så att det klarar av att representera att en viss person gick in i en viss klubb vid ett visst tillfälle! 44 22
Template-Copy strukturer (power types) Vissa objekt kan ses som mallar för andra objekt, kopior. En mall beskriver de generella dragen hos kopiorna som i sin tur kan innehålla ett antal idividuella drag. Mallar är ofta abstrakta objekt medan kopior är konkreta objekt. Kopior kan ses som materialiseringar av mallar. BOK är ett typiskt exempel på en mall, boken som ett litterärt verk. BOK:en har en titel, en författare osv. De individuella kopiorna är de fysiska exemplaren av det litterära verket som kan ha egenskaper som vikt, antal sidor etc. Observera att KOPIA inte utgör en delmängd av BOK. Template- Copies är inte samma sak som supertyp-subtyp. BOK Författare: titel String UNIK Titel: String 1 av_typ KOPIA Vikt: String Antal_sidor 45 Samma ord - olika begrepp På vilka sätt används ordet bok i meningarna nedan? Jules Verne skrev många böcker, en heter Kapten Grants barn Biblioteket i Vällingby har många böcker Om Kapten Grants barn trycks i A4-format blir antalet sidor i en tryckt bok 100. Bokhandlaren i Jönköping sålde många böcker Författare Titel Vikt Antal_sidor BOK Författare Titel tillhör KOPIA Vikt Antal_sidor 46 23
24 47 PRODUKT Namn Typ Höjd Bredd Djup Material Vikt Pris Bild-liten Bild-stor KUND Namn Gatuadress Postnummer Postadress Telefon Kontokort Giltighetstid BESTÄLLNING Best-nummer Gatuadress Postnummer Postadress Datum Fraktkostnad LEVERANS Leveransbil Avtalatdatum Avtaladtid Avgångsdatum Avgångstid Leveransdatum Leveranstid 1..* 1..* 48 PRODUKT Namn Typ Höjd Bredd Djup Material Vikt Pris Bild-liten Bild-stor KUND Namn Gatuadress Postnummer Postadress Telefon Kontokort Giltighetstid BESTÄLLNING Best-nummer Gatuadress Postnummer Postadress Datum Fraktkostnad LEVERANS Leveransbil Avtalatdatum Avtaladtid Avgångsdatum Avgångstid Leveransdatum Leveranstid 1..* 1..* BESTÄLLNINGS- RAD Antal: l
PRODUKT Namn Typ Höjd Bredd Djup Material Vikt Pris Bild-liten Bild-stor KUND Namn Gatuadress Postnummer Postadress Telefon Kontokort Giltighetstid 1..* LEVERANS Leveransbil Avtalatdatum Avtaladtid Avgångsdatum Avgångstid Leveransdatum Leveranstid 0..1 1..* BESTÄLLNINGS- RAD Antal: l 1..* BESTÄLLNING Best-nummer Gatuadress Postnummer Postadress Datum Fraktkostnad 49 25