LC 238 D Datamodellering og databaser http www
LC 238 D Datamodellering og databaser http: //www. aitel. hist. no/fag/_dmdb/ Datamodellering: ER-modeller ER = Enitity-Relationship del 1: Notasjon og oversetting av ulike ER-modeller tilsvarende relasjonsmodeller ER-modellen, intro. Sterke og svake entitetstyper Attributter Multiplisitet, 1: 1, 1: *, *: * Binære, trinære og rekursive sammenhengstyper Entitetstyper med to sammenhengstyper side 2 -3 side 4 side 5 side 6 -8 side 9 -11 side 12 Chen, 1975 Se ellers læreboka, kap. 6. 1 -6. 4, side 178 -199 Else Lervik, september 2012 Forelesning 4, uke 37
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 side 2
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. . *, *. . *) Primærnøkkel {PK} kommer inn som nytt begrep Datamodellering og databaser Else Lervik, september 2012 side 3
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 side 4
Attributter Avledet attributt Sammensatt attributt student(studnr, etternavn, fornavn, adresse, telefon, fdato, epost) Flerverdiet attributt snitt_karakter er et avledet attributt, den regnes ut og lagres ikke i databasen. student(studnr, etternavn, fornavn, adresse, fdato, epost) telefon(studnr*, tlfnr) Datamodellering og databaser Else Lervik, september 2012 side 5
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(and_eier_nr, fornavn, etternavn, telefon, ansiennitet) leilighet(leil_nr, ant_rom, ant_kvm, etasje, and_eier_nr*) • • • 0. . 1 – delvis avhengighet NOT NULL UNIQUE 1. . 1 – total avhengighet and_eier_nr INTEGER NOT NULL UNIQUE Konkrete sammenhenger mellom entiteter kan illustreres vhja semantiske nett (figur på tavla) Datamodellering og databaser Else Lervik, september 2012 side 6
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. Minimumsverdien i 0. . * forteller at det kan fins poststed uten studenter. Datamodellering og databaser Else Lervik, september 2012 side 7
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 side 8
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 side 9
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 side 10
Entitetstyper med to sammenhengstyper Datamodellering og databaser Else Lervik, september 2012 side 11
- Slides: 11