Se ellers læreboka, kap. 6.1-6.4, side 178-199 Datamodellering: ER-modeller ER = Enitity-Relationship del 1: Notasjon og oversetting av ulike ER-modeller til tilsvarende relasjonsmodeller ER-modellen, intro. side 2-3 Sterke og svake entitetstyper side 4 Attributter side 5 Multiplisitet, 1:1, 1:*, *:* side 6-8 Binære, trinære og rekursive sammenhengstyper side 9-11 Entitetstyper med to sammenhengstyper side 12 Chen, 1975 Se ellers læreboka, kap. 6.1-6.4, side 178-199 Else Lervik, september 2012
ER-modellen er en konseptuell modell (dvs en modell av hele databasen). Hensikt: Å beskrive dataene fra brukerens synsvinkel. Uavhengig av implementasjonsmodell og databasesystem – også uavhengig av relasjonsmodellen! Datamodellering og databaser Else Lervik, september 2012
Datamodellering og databaser Else Lervik, september 2012 Notasjon og begreper Mange notasjoner, vi bruker UML-diagram. Tar i bruk ER-begrepsapparatet, jamfører tilsvarende OO-begreper entitet ~ objekt entitetstype ~ klasse attributt sammenhengstype (eng: relationship type) ~ assosiasjon multiplisitet (1..1, 0..1, 0..*, 1..*, *..*) Primærnøkkel {PK} kommer inn som nytt begrep Datamodellering og databaser Else Lervik, september 2012
Sterke og svake entitetstyper En sterk entitetstype eksisterer uavhengig av andre entitetstyper. En svak entitetstype er avhengig av en annen entitetstype for å kunne identifiseres. Identitetsavhengighet. prosjekt(prosjnr, prosjektnavn, budsjett, forbruk prosjektrapport(prosjnr*, dato, tittel, forfattere, sammendrag, innhold) Datamodellering og databaser Else Lervik, september 2012
Attributter Avledet attributt Sammensatt attributt student(studnr, etternavn, fornavn, adresse, telefon, fdato, epost) snitt_karakter er et avledet attributt, den regnes ut og lagres ikke i databasen. Flerverdiet attributt student(studnr, etternavn, fornavn, adresse, fdato, epost) telefon(studnr*, tlfnr) Datamodellering og databaser Else Lervik, september 2012
Multiplisitet – en-til-en-sammenhengstype Multiplisiteten bestemmer antallet mulige sammenhenger mellom entiteter i en sammenhengstype En-til-en-sammenhengstype En andelseier kan ha min 0, maks 1 lelighet En leilighet bebos av min 1, maks 1 andelseier andelseier(and_eier_nr, fornavn, etternavn, telefon, ansiennitet) leilighet(leil_nr, ant_rom, ant_kvm, etasje, and_eier_nr*) NOT NULL UNIQUE and_eier_nr INTEGER NOT NULL UNIQUE 0..1 – delvis avhengighet 1..1 – total avhengighet Konkrete sammenhenger mellom entiteter kan illustreres vhja semantiske nett (figur på tavla) Datamodellering og databaser Else Lervik, september 2012
Multiplisitet - en-til-mange-sammenhengstyper En student bor på min. 1, maks. 1 poststed. (På) ett poststed (bor) min 0., maks. * (mange) studenter. student(studnr, fornavn, etternavn, adresse, postnr*) poststed(postnr, sted) Multiplisiteten refererer til maks-verdiene. Sammenhengen over er en-til-mange fra poststed til student. Minimumsverdien i 1..1 forteller om fremmednøkkelen kan være NULL eller ikke. Fremmednøkkelen postnr kan ikke være NULL, pga 1..1. Minimumsverdien i 0..* forteller at det kan fins poststed uten studenter. Datamodellering og databaser Else Lervik, september 2012
Multiplisitet - mange-til-mange-sammenhengstyper Én student velger minst ett fag, maks mange fag. Ett fag velges av min. 0 studenter, maks mange. student(studnr, etternavn,… fag(fagkode, fagnavn,…. fagvalg(studnr*, fagkode*, semester, betalt, karakter) En mange-til-mange-sammenheng medfører at vi må lage en “koplingstabell”/”koplingsrelasjon”. Primærnøkkelen i denne relasjonen er satt sammen av fremmednøkler som refererer til de involverte relasjonene. Datamodellering og databaser Else Lervik, september 2012
Dimensjon - tre-dimensjonal (trinær) sammenhengstype Én person jobber i mange prosjekter i mange uker. I en bestemt uke jobbes det på mange prosjeketr av mange personer. På ett prosjekt jobber det mange personer i mange uker. person(pers_id, fornavn, etternavn, … prosjekt(prosjnr, prosjektnavn, … uke((uke, aar), norm_timer, …. timeliste(pers_id*, prosjnr*, (uke, aar)*, ant_timer) Datamodellering og databaser Else Lervik, september 2012
Rekursiv sammenhengstype Hierarki/trestruktur Én person er sjef for min. 0, maks mange ansatte. Hver ansatt har min. 0, maks. 1 sjef. ansatt(ans_id, fornavn, etternavn, tlf, epost, har_som_sjef_id*) Nettverk Datamodellering og databaser Else Lervik, september 2012
Entitetstyper med to sammenhengstyper Datamodellering og databaser Else Lervik, september 2012