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! Grundbegrepp: Objekt, Attribut Relationer (associationer), Entiteter (klasser), Regler. Konkreta objekt: Eiffeltornet, George Washington, London Abstrakta objekt: Talet 7, Beethovens sjunde symfoni, Valutan Euro Attribut: Uttrycker egenskaper hos objekt Relationer (associationer): avbildar hur objekt är relaterade till varandra Entiteter (klasser): Entiteter grupperar samman likartade objekt Konkreta klasser: Personer, Byggnader, Bilar Abstrakta klasser: Symfonier, Tal, Valutor Regler uttrycker vilka sakförhållanden som kan och bör föreligga i ett system En person kan vara gift med högst en annan person, En person måste ha ett personnummer. Grafiskt språk för konceptuella modeller: ER-scheman (Entity-Relationship schemas) Entitet Relation Entitet APA ÄTER BANAN Annat notation: APA 0 äter BANAN
Grafisk notation för konceptuella scheman: UML-klassschema Vi kommer att använda UML-klasscheman som ER-scheman Klass association (relation) APA Namn : Sträng 0.. äter..* BANAN attribut Avbildningsregel (för associationen, attributet) Avbildningsregler för associationer i UML Regno : Sträng ägs_av En association ( pil ) har avbildningsregler (kardinalitetsregler). Man kan sas läsa pilen i två riktningar och för varje riktning måste vi avgöra vilka avbildningsregler som gäller. Vi använder oss av en Minimum..Maximum -notation (alternativ finns...). I minimum-posistionen kan vi skriva värdet 0 eller. I maximimum -positionen kan vi skriva värdet eller *, där * står för många. Det ger oss fyra möjliga avbildningsregler: 0..,,.. och..*. I praktiken brukar man förkorta.. till. För att förstå vad de olika max..min-värdena står för kan vi börja med att betrakta relations-pilen från :ens synvinkel. Om en kan ägas av HÖGST EN så skriver vi en :a i max-positionen (annars *). Om en måste ägas av NÅGON sätter vi en :a i min-positionen (annars 0). I just detta fall fattades beslutet att en kan ägas av högst en person och att alla bilar ägas av någon. Dvs avbildningsregeln blev.., vilket vi förkortade till. Om en kan äga HÖGST EN BIl skriv en :a i max-position (annars *). Om en måste äga minst en, skriv en :a i min-position (annars 0). Här tyckte vi att en kan äga många :ar men inte nödvändigvis måste äga någon,! 2
Associationer i UML forts. Navigabilitet vs konceptuell riktning Regno: String.. ägs_av.. Pnr: String.. Envärd? Om en bil kan ägas av högst en person så ja, annars nej. Total? Om en bil måste ägas av minst en person så ja, annars nej. Injektiv? Om en person kan äga högst en bil så ja, annars nej. Surjektiv? Om en person måste äga minst en bil så ja, annars nej. Vad betyder associationen? Namngivning i funktionell riktning? Namngivning av både associationen och båda rollerna? Avbildningsregler Avbildningsregler för ATTRIBUT i UML... Regno : Sträng ägs_av Även attribut (som t ex Regno och Namn) behöver få sina avbildningsregler bestämda. Detta kan i vissa notationer visas grafiskt i det konceptuella schemat (vilket har många fördelar). Ett sätt är att explicit rita ut relationen (via en pil) mellan entiteten i fråga och attributet: Regno Sträng Ska utläsas varje har högst ett registreringsnummer, Ett givet värde i mängden av text-strängar (t ex ABC23 ) kan vara relaterad till högst 0.. en via attributet Regno. En måste ha ett registreringnummer och, slutligen, det finns text-strängar (t ex Maria Bergholtz ) som inte utgör registreringsnummer. Som synes används samma princip som för avbildningsregler för relationer mellan entiteter. Regno: Sträng.. UNIK Ett alternativ är att använda notationen ovan, den har nästan samma informationskapacitet som notationen till vänster ( en kan ha högst ett värde på registreringsnummer, och minst ett värde på registreringsnummer (dvs Regno är totalt ). Med UNIK avses att ingen annan kan använda ett Regno som en viss använder). Däremot visar inte notationen ovan om det finns sträng-värden som inte utgör reg.nummer. 3
Multiplicitet - regler i systemet vs common sense Regno: Sträng.. ägs_av Pnr: Sträng.. Arv Namn: String.. UNIK isa isa MAN KVINNA Militärtjänstort: String:.. Arv DJUR Namn: String.. UNIK isa isa HUND KATT Skatt: Integer.. MAN och KVINNA är ömsesidigt uteslutande och uttömmande map 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 uteslutande (eng. mutually independent). 4
Reifiering Reifiering SJUKDOM..* botar blir: botas SJUKDOM BOT Procent: Float.. BEHANDLING..* botmedel 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! Övning reifiering UNIK, TOTAL är_medlem_i 0 KLUBB Klubb_namn: Sträng UNIK, TOTAL 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! 5
Template-Copy strukturer (power types) 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 titel Författare: String.. UNIK Titel: String.. av_typ KOPIA Vikt: String.. Antal_sidor.. Samma ord - olika begrepp - powertypes På vilka sätt används ordet bok i meningarna nedan? Jules Verne skrev många böcker Biblioteket i Vällingby har många böcker Nazi Tyskland förbjöd många böcker Bokhandlaren i Jönköping sålde många böcker Kurskod Kursnamn Startdatum Antal poäng Kursansvarig KURS Kurskod Kursnamn Antal_poäng.. tillhör KURSTILL- FÄLLE Startdatum Kursansvarig 6