Datamodellering med E/R Fasene i systemutvikling og databasedesign E/R (Entity/Relationship) Entitet Attributt Identifikator Forhold og roller Kardinaliteter: 1:1, 1:M, M:N Oppløsing av mange-til-mange (M:N) forhold Svake entiteter Egenforhold Subtyper Pensum: Kapittel 7 Databaser Leksjon 6: Datamodellering med E/R - 1
Hvorfor datamodellering? Det er ikke opplagt hvilke tabeller en database bør inneholde og hvilke kolonner disse tabellene bør inneholde. Vi må prøve oss litt fram for å finne en hensiktsmessig struktur. Det har vist seg nyttig å bruke «visuelle modeller» i denne prosessen. E/R (Entity/Relationship) er et slikt visuelt modellspråk. Et E/R-diagram viser strukturen til en database. Databaser Leksjon 6: Datamodellering med E/R - 2
Eksempel på E/R-diagram BokNr ISBN Tittel Forfatter UtgittÅr AntallEks Bok I A15 A40 A30 I I Utlån UtlånsDato Levert D BL Navn Kontakt Telefon Forlag A30 A40 A8 LNr Fornavn Etternavn Gateadr Låner I A20 A30 A40 Databaser Leksjon 6: Datamodellering med E/R - 3
Først Vi har sett en del eksempler på hvordan data lar seg representere i tabeller: Databaser Leksjon 6: Datamodellering med E/R - 4
Fysiske objekter (er som regel greie å håndtere) Databaser Leksjon 6: Datamodellering med E/R - 5
Kjøretøy RegNr Merke Modell År Km LY 12345 Toyota Corolla 1998 225501 NV 54321 Toyota Avensis 2012 15238 DA 98765 Ford Focus 2009 47624 NV 67890 Nissan Micra 2007 31092 Noen fysiske objekter som bøker, personer og kjøretøy har en etablert primærnøkkel (ISBN, personnr, registreringsnr). For andre fysiske objekter er det naturlig å etablere et «løpenr» VNr for Vare, SNr for Student osv. Databaser Leksjon 6: Datamodellering med E/R - 6
Mer abstrakte objekter: Lån LNr KNr Beløp Start År Rente Type 27630364643 50401 1550000 02.09.2009 20 5.5 Serie 27630382732 50104 65000 01.01.2011 8 7.6 Annuitet 27630393982 20932 1050000 20.07.1999 20 5.0 Annuitet 27630338829 90237 300000 10.12.2007 10 6.5 Annuitet 27630391882 70238 1250000 05.08.2008 15 5.5 Serie Lån er ikke et fysisk objekt, men likevel relativt «håndfast». Er det noen fremmednøkler her? Lagrer ikke mer enn vi må: Fra opplysningene i tabellen kan vi generere en nedbetalingsplan (hva skal betales hver måned, hvor mye er avdrag og hvor mye er renter). Databaser Leksjon 6: Datamodellering med E/R - 7
Sammensatte objekter: Ordre og Ordrelinje OrdreNr Ordredato KNr 20505 20.8.2011 5022 20506 20.8.2011 5009 20507 20.9.2011 5188 Ordreskjemaet består av et «hode», der man skriver inn dato og kundenr, og et antall «linjer», der man på hver linje skriver inn varenummer og antall eksemplarer. Det er et en-til-mange forhold mellom en ordre og en linje på denne ordren. OrdreNr VNr Pris Antall 20505 10830 29.90 1 20505 77033 109.50 5 20506 10830 29.90 1 20506 44939 57.60 3 20506 65081 109.50 5 20507 12088 109.50 2 Databaser Leksjon 6: Datamodellering med E/R - 8
Tabeller som forhold: ProsjektArbeid PNr AnsNr AntTimer 1001 42 12 1001 71 44 1003 123 4 1003 42 21 1003 2 76 1003 93 59 1005 2 40 1005 19 7 1007 27 23 1012 2 15 1012 42 42 Hver rad representerer en forholdsforekomst. Tabellen representerer et mange-til-mange forhold mellom prosjekter og ansatte. Databaser Leksjon 6: Datamodellering med E/R - 9
Hendelser: Temperaturmåling StedNr Dato Temp 53 30.04.2011 7 53 12.05.2011 8 53 20.05.2011 6 54 20.05.2011 11 54 20.07.2011 4 En hendelse er noe som skjer på et bestemt sted på et bestemt tidspunkt. Hva er en hensiktsmessig primærnøkkel i tabellen? Hva om vi vil gjøre flere målinger pr. dag? Databaser Leksjon 6: Datamodellering med E/R - 10
Tabeller og hierarkier: Slektstrær Id Fornavn Mor Far 1 Ola 2 Lise 3 Per 1 4 Kari 2 5 Arne 3 6 Johanne 4 5 7 Gunnar 4 5 Ola Per Arne Gunnar Kari Johanne Lise Far-forholdet er et hierarki; et en-til-mange forhold fra far til barn. Det samme er mor-forholdet. Lar seg representere i en tabell ved at alle «peker på» sine foreldre. Er det fremmednøkler her? Databaser Leksjon 6: Datamodellering med E/R - 11
Tabeller og hierarkier: Diskusjonsforum Id Avsender Dato Melding SvarPå 1 kahn 23.02.2011 Bla bla bla... 2 ok88 23.02.2011 Bla bla bla... 1 3 jwh 24.02.2011 Bla bla bla... 1 4 kahn 24.02.2011 Bla bla bla... 3 5 kasper 24.02.2011 Bla bla bla... 6 jesper 25.02.2011 Bla bla bla... 5 1 5 2 3 4 Et forum har flere diskusjonstråder. Hver tråd er et hirerarki (et tre). Et innlegg kan få flere svar. Et innlegg starter en ny tråd, eller er svar på et bestemt innlegg. Er det fremmednøkler i tabellen? 6 Databaser Leksjon 6: Datamodellering med E/R - 12
Tabeller og grafer (nettverk): Avstandsmatrise Fra Til Km Bø Porsgrunn 63 Porsgrunn Notodden 86 Bø Notodden 34 Bø Rauland 88 En graf er en samling av noder (byer) og kanter (veier) mellom disse. Hver vei blir til en rad i tabellen. Byene kan lagres i en egen tabell. Kunne evt. lagret veiene i begge retninger. Rauland 88 34 Bø 63 Notodden 86 Porsgrunn Databaser Leksjon 6: Datamodellering med E/R - 13
Tabeller og grafer (nettverk): Fottur TurNr StartHytte Gradering 56 Glefsebu Lett 77 Høgåshytta Middels Glefsebu Storvassbui Høgåshytta Mimrebu Mimrebu Breheimen Krikut TurNr Dag TilHytte 56 1 Mimrebu 56 2 Storvassbui 77 1 Breheimen 77 2 Mimrebu 77 3 Krikut Databaser Leksjon 6: Datamodellering med E/R - 14
Så Hva går datamodellering ut på? Databaser Leksjon 6: Datamodellering med E/R - 15
Modeller og perspektiver Når man skal konstruere noe som er komplisert er det nyttig å lage en modell først. Hus-eksempel: Arkitekttegning, 3D-modell En modell er en representasjon av noe, der visse egenskaper, som er viktige for det formål representasjonen skal brukes til, er fremhevet, mens øvrige egenskaper utelates. Perspektiver: Prosessorientert: Hva skal systemet gjøre? Informasjonsorientert: Hva må systemet vite? Objektorientert: Et system består av kommuniserende objekter. Databaser Leksjon 6: Datamodellering med E/R - 16
Livsløpet til et databasesystem Et databasesystem inngår som regel i et større (edb-basert) informasjonssystem. Systemutvikling kan gjøres i faser. Forstudie: Skal vi starte utvikling? Analyse: Hva skal systemet gjøre? Design: Hvordan skal systemet bygges opp? Implementasjon: Lag (programmer) systemet! Test Drift Videreutvikling / avvikling Databaser Leksjon 6: Datamodellering med E/R - 17
Fossefallsmodellen / Smidige metoder Den «klassiske» fossefallsmodellen er kritisert for å være for «stivbeint». Smidige metoder (agile) er en mer fleksibel løsning. Mindre omfattende planlegging i starten Mange, små leveranser og hyppige tilbakemeldinger underveis Databaser Leksjon 6: Datamodellering med E/R - 18
Databasedesign HVA? Begrepsmessig databasedesign E/R diagram Logisk databasedesign HVORDAN? Fysisk databasedesign Databaser Leksjon 6: Datamodellering med E/R - 19
Databasedesign fra abstrakt til konkret Begrepsmessig databasedesign Teknologiuavhengig beskrivelse av hva databasen skal inneholde. E/R (Entity/Relationship) mye brukt som «språk». Logisk databasedesign Logisk tabellstruktur uavhengig av konkret DBHS. Fysisk databasedesign Fysisk tabellstruktur tilpasset et konkret DBHS med beskrivelse av lagringsstrukturer og aksessteknikker. E/R-diagrammer kan oversettes til tabellstruktur delvis automatisk av modelleringsverktøyet. Generate database Databaser Leksjon 6: Datamodellering med E/R - 20
Introduksjon til E/R-diagrammer E/R-diagrammer er en visuell beskrivelse av strukturen til en database. Hver entitet (boksene) svarer til en tabell. Attributter (i nederste del av boksene) svarer til kolonner. Identifikatorer er understreket og svarer til primærnøkler. Forhold (linjene) svarer til fremmednøkler. E/R-diagrammer brukes når vi planlegger hva databasen skal inneholde. Gir god oversikt. Lesbare også for de som ikke er IT-eksperter. Databaser Leksjon 6: Datamodellering med E/R - 21
Grunnleggende begreper i E/R Person Bil PersonNr Fornavn Etternavn Adresse eier eiet-av RegNr Merke Modell Årsmodell Person og Bil er entiteter. Fornavn er et attributt til Person. RegNr er identifikator i Bil. En person kan spille rollen som eier i forholdet mellom Person og Bil. Databaser Leksjon 6: Datamodellering med E/R - 22
Type og forekomst Tabellen Ansatt inneholder mange rader. Hver rad beskriver én ansatt. En entitetsforekomst svarer til en rad i en tabell. Eksempel: (AnsattNr=1, Fornavn='Hans', Etternavn='Hansen', Adresse='Hansegata 3') Entitetstypen representerer mengden av forekomster (og svarer dermed til hele tabellen). Tilsvarende skiller vi mellom type og forekomst av forhold. Forekomst: Eierforholdet mellom Ola og hans Ascona. Type: Samlingen av alle eierforhold. Databaser Leksjon 6: Datamodellering med E/R - 23
Forholdstype og forholdsforekomster Kunde 1 Kunde 2 Kunde 3 Ordre 1 Ordre 2 Ordre 3 Ordre 4 Databaser Leksjon 6: Datamodellering med E/R - 24
Kardinalitet 1:N (en-tilmange) Person PersonNr Fornavn Etternavn Adresse eier eiet-av Bil RegNr Merke Modell Årsmodell 1:1 (en-til-en) Ansatt AnsNr Fornavn Etternavn leder er-ledet-av Avdeling AvdKode AvdTlf Leder M:N (mange-tilmange) Selger AnsNr Fornavn Etternavn selger blir-solgt-av Produkt ProduktNr Betegnelse PrisPrEnhet Databaser Leksjon 6: Datamodellering med E/R - 25
Minimums- og maksimumskardinalitet En gitt person kan eie minimum 0 og maksimum mange biler. Symbol nærmest entitetene angir maksimumskardinalitet. Kråkefot betyr «mange», mens betyr 1. Innerste symbol angir minimumskardinalitet. Sirkel betyr 0 og betyr 1. Forenklet notasjon (brukes i PowerDesigner): En sirkel alene betyr maksimum=1 og minimum=0. En alene betyr maksimum=minimum=1. Generelt er det mulig å bruke andre «tall» enn 0, 1 og «mange». Eksempel: 3..7 Forskjellen på 0, 1 og «mange» avgjør tabellstruktur. Databaser Leksjon 6: Datamodellering med E/R - 26
Svake entiteter Båt Navn MaxAntPersoner MaxAntBiler har-avgang avgang-for Avgang Dato Klokkeslett GrønnAvgang En svak entitet arver deler av sin identifikator fra en annen og kan ikke eksistere uten denne. En Avgang kan ikke eksistere uten en tilhørende Båt. Avgangen forsvinner dersom båten synker Identifikatoren for Avgang er (delvis) avledet fra identifikatoren for Båt. En Avgang kan bare identifiseres med hjelp av Båt identifikatoren. Databaser Leksjon 6: Datamodellering med E/R - 27
Oppløsing av mange-til-mange forhold Selger Produkt AnsNr Fornavn Etternavn selger blir-solgt-av ProduktNr Betegnelse PrisPrEnhet Er det interessante egenskaper ved forholdet? Selger AnsNr Fornavn Etternavn SelgerProduktTilknytning Budsjett Produkt ProduktNr Betegnelse PrisPrEnhet Databaser Leksjon 6: Datamodellering med E/R - 28
Subtyper gir spesialisering Ansatt AnsNr Fornavn Etternavn Ansatt AnsNr Fornavn Etternavn disponerer firmabil-for Subtyper arver egenskapene til supertypen, og kan i tillegg ha ekstra attributter og inngå i flere forhold. Subtyper svarer til delmengder på forekomstnivå. RegNr Bil Sjekk: Sett inn «er-en»! Selger Bil Bonus disponerer firmabil-for RegNr Databaser Leksjon 6: Datamodellering med E/R - 29
Noen abstraksjonsmekanismer Spesialisering / generalisering Selger er en spesialisering av Ansatt. Ansatt er en generalisering av Selger. «Er-en» Aggregering / dekomponering Sykkel er en aggregering av hjul, ramme, sete, styre og pedaler. Dekomponering av sykkel gir Kategorisering / instansiering Ansatt er en kategorisering av Hans, Lise, Lise er en instans av Ansatt. Jmf. type og forekomst «Har-en» Databaser Leksjon 6: Datamodellering med E/R - 30
Modelleringsmønstrer Mange datamodelleringsproblemer er eksempler på noen få «klassiske problemer». Skagestein kaller dette for modelleringsmønstrer. Eksempler: «Er-en»-hierarkier ( en katt er et pattedyr ) «Har-en» hierarkier ( del er bygget opp fra ) Et papirskjema er bygget opp fra et hode og et antall linjer. Skal man kun lagre nå-situasjonen, eller også historikken? Databaser Leksjon 6: Datamodellering med E/R - 31
Hode/linje-mønsteret (master/detail) Kunde Vare Kunde Ordre Obs! Vare Kunde Ordre Ordrelinje Vare Databaser Leksjon 6: Datamodellering med E/R - 32
Entitet eller attributt? En egenskap ved et attributt kan lagres som et attributt, for eksempel hvilken avdeling en ansatt jobber i: Hva om vi vil lagre flere opplysninger om avdelingen? Databaser Leksjon 6: Datamodellering med E/R - 33
Skjema eller forekomst? Avdeling Kode Kvartal1 Kvartal2 Kvartal3 Kvartal4 Avdeling Kode Kvartal Omsetning Kvartalsvis omsetning pr. avdeling kan lagres i 4 attributter. Til høyre blir kvartalsnummer lagret som data (fra skjema til forekomst). Kan vi bruke samme identifikator? Hva om vi skal lagre omsetning pr. måned/dag? Eksempel 2: Lagre tre tlfnr pr. ansatt (privat, jobb, mobil). Databaser Leksjon 6: Datamodellering med E/R - 34
Avdeling AvdNavn Telefon Egenforhold Underavdeling UnderNavn Telefon underordnet Enhet Navn Telefon overordnet Kan antall nivåer variere? Er det en øvre grense? Kontor KontorNavn Telefon Egenforhold kan modellere vilkårlig dype hierarkier. Eksempler: Slektstrær, kataloger/mapper på en PC, diskusjonsforum. Hvilken modell gir de enkleste spørringene? Databaser Leksjon 6: Datamodellering med E/R - 35
Tid og rom Vare VareNr Pris Kun lagre nå-pris? Hva kostet varen tidligere? Lagre prisendringer, eller pris for hver dag? Håndtering av tidsperioder. Tidspunkt/sted som (del)identifikator i entiteter som representerer «hendelser» (vielse). Vare VareNr Pris Prisendring Dato Listepris Databaser Leksjon 6: Datamodellering med E/R - 36