EER-modellering

Download Report

Transcript EER-modellering

LC238D Datamodellering og databaser
http://www.aitel.hist.no/fag/_dmdb/
Objektorientering i ER-modeller
EER-modeller
Enhanced Entity Relationship Models
Oppsummering: Å oversette fra ER- til relasjonsmodell side 2
Spesialisering og generalisering
side 3-6
Komposisjon
side 7
Aggregering
side 8
Se ellers læreboka, side 199-212
Else Lervik, september 2012
Forelesning 6, Uke 39
Oppsummering: Å oversette fra ER-modell til relasjonsmodell
1. Lag en relasjon pr. entitetstype.
Andelseier
+and_eier_nr {PK}
+fornavn
+etternavn
+telefon
+ansiennitet
Leilighet
+bebos_av
+kan_ha
+leil_nr {PK}
+ant_rom
+ant_kvm
+etasje
2. Oversett en-til-en-sammenhengstyper ved å legge inn
1..1
0..1
fremmednøkkel på den ene av sidene. Hvis det er
eksistensavhengighet (NOT NULL) på en av sidene,
skal denne brukes. UNIQUE på fremmednøkkelen sikrer
1-multiplisiteten på motsatt side. Se side 193 i læreboka.andelseier(and_eier_nr, fornavn, etternavn, telefon, ansiennitet)
leilighet(leil_nr, ant_rom, ant_kvm, etasje, and_eier_nr*)
3. Oversett en-til-mange-sammenhengstyper ved å legge
inn fremmednøkkel på mange-siden i forholdet. Se side
195.
4. Mange-til-mange-sammenhengstyper gir alltid
opphav til en egen relasjon ("koplingstabell"). Se side
197-199. Fremmednøkler fra begge sidene kommer inn
og danner til sammen primærnøkkelen i en slik relasjon.
(Alternativt kan man ha løpenummer som primærnøkkel.
Fremmednøklene må likevel være med.) Det er mulig
med ekstra attributter i tillegg, da vises det i ERmodellen ved en entitetstype med stiplet linje fram til
den aktuelle sammenhengstypen.
Student
+studnr {PK}
+fornavn
+etternavn
+adresse
+bor på
Poststed
+postnr {PK}
+sted
0..*
1..1
student(studnr, fornavn, etternavn, adresse, postnr*)
poststed(postnr, sted)
Eksempler på sammenhenger mellom tre entitetstyper
(trinær sammenheng) samt entiteter av samme type
(rekursjon og nettverk), samt identitetsavhengighet, se
forelesning 4.
student(studnr, etternavn, fornavn, adresse, telefon, fdato, epost)
I dag kommer flere regler: Hvordan overføre
fag(fagkode, fagnavn, eks_dato, vekttall, brukernavn, passord)
objektorientering fra UML-diagrammet til
fagvalg(studnr*, fagkode*)
relasjonsmodellen?
Datamodellering og databaser, databasedelen
Else Lervik, september 2012
side 2
Spesialisering og generalisering
•
•
Spesialisering er prosessen for å finne
forskjellene mellom entitetstyper ved å
identifisere karakteristiske trekk ved
dem.
Generalisering er prosessen som går ut
på å redusere forskjellene mellom
entitetstyper ved å identifisere deres
fellestrekk.
Spesialisering viser roller.
•
Oversetter til relasjonsmodellen:
•
Person
+person_id {PK}
+etternavn
+fornavn
+adresse
Forelder
Laerer
Elev
+telefon_jobb
+telefon_hjemme
+stilling
+telefon_kontor
+utdanning
+ansiennitet
+foedselsdato
+morsmaal
person(person_id, etternavn, fornavn, adresse)
forelder(person_id*, telefon_jobb, telefon_hjemme, stilling)
laerer(person_id*, telefon_kontor, utdanning, ansiennitet)
elev(person_id*, fodselsdato, morsmaal)
Skisser SQL-setninger for
• innlegging av ny forelder/laerer/elev
• uthenting av all info om en forelder/laerer/elev
Datamodellering og databaser, databasedelen
Else Lervik, september 2012
side 3
Overlappende / disjunkte delmengder
{AND} betyr overlappende
spesialisering, dvs at en person
kan være f. eks. både forelder og lærer.
Person
+person_id {PK}
+etternavn
+fornavn
+adresse
{OR} betyr disjunkt spesialisering,
dvs at hver person enten er forelder,
lærer eller elev.
{AND}
Forelder
Laerer
Elev
+telefon_jobb
+telefon_hjemme
+stilling
+telefon_kontor
+utdanning
+ansiennitet
+foedselsdato
+morsmaal
Kan kravet om disjunkte mengder
framkomme i relasjonsmodellen,
eventuelt ved generering av
databasen med SQL?
person(person_id, etternavn, fornavn, adresse)
forelder(person_id*, telefon_jobb, telefon_hjemme, stilling)
laerer(person_id*, telefon_kontor, utdanning, ansiennitet)
elev(person_id*, fodselsdato, morsmaal)
Datamodellering og databaser, databasedelen
Else Lervik, september 2012
side 4
Total/delvis deltakelse
Delvis deltakelse betyr at det kan finnes
entiteter i superentitetstypen som ikke er
med i noen av subentitetstypene.
Person
+person_id {PK}
+etternavn
+fornavn
+adresse
Total deltakelse betyr at alle entitetene i
superentitetstypen må være med i minst
en av subentitetstypene.
{delvis}
Forelder
Laerer
Elev
+telefon_jobb
+telefon_hjemme
+stilling
+telefon_kontor
+utdanning
+ansiennitet
+foedselsdato
+morsmaal
Kan disse kravene framkomme
i relasjonsmodellen, eventuelt ved
generering av databasen med SQL?
person(person_id, etternavn, fornavn, adresse)
forelder(person_id*, telefon_jobb, telefon_hjemme, stilling, status)
laerer(person_id*, telefon_kontor, utdanning, ansiennitet)
elev(person_id*, fodselsdato, maalform)
Datamodellering og databaser, databasedelen
Else Lervik, september 2012
side 5
Restriksjoner på spesialiseringen kan kombineres
Disjunkt (OR)
Overlappende (AND)
Delvis
En superentitet deltar
i 0 eller 1
subentitetstype (0..1)
En superentitet kan, men
behøver ikke, delta i 1 eller
flere subentitetstyper (0..*)
Total
En superentitet deltar
i eksakt 1
subentitetstype (1..1)
En superentitet deltar i minst 1
subentitetstyper (1..*)
Datamodellering og databaser, databasedelen
Else Lervik, september 2012
side 6
Et større eksempel
Deltaker
1..*
3..7
+delt_id {PK}
+fornavn
+etternavn
+epost
+deltart i
0..*
1..1
0..*
+leder
Sesjon
+sesjons_id {PK}
+tittel
+start_tid
+varighet
{total, OR}
+deltar i
Paneldebatt
Foredrag
-
-sammendrag
0..*
{total, OR}
0..*
Fellesforedrag
Spesialforedrag
-aapent
-maalgruppe
Datamodellering og databaser, databasedelen
Else Lervik, september 2012
side 7
Komposisjon
En komposisjon er en meget sterk en-del-av-binding.
Delene kan ikke leve uten at den delen de inngår i eksisterer.
Delene kan kun inngå i én kompositt. Komposisjon innebærer
eksistensavhengighet.
NOT NULL
Annonse
Avis
+fins_i
+annonse_nr {PK}
+tekst
+tlf_kunde
+pris
+dato
+har
+avisnavn {PK}
1
0..*
avis(avisnavn,....)
annonse(annonse_nr, ...., avisnavn*)
Annonse
Avis
+fins_i
+har
+avisnavn {PK}
1..1
0..*
+annonse_nr {PK}
+tekst
+tlf_kunde
+pris
+dato
Forskjell mellom de to AvisAnnonse- modellene?
Støtte i relasjonsmodellen og SQL
for komposisjon?
For eksistensavhengighet?
For identitetsavhengighet?
Identitetsavhengighet
prosjekt(prosjnr, prosjektnavn,
budsjett, forbruk)
prosjektrapport(prosjnr*, dato, tittel,
forfattere, sammendrag, innhold)
Datamodellering og databaser, databasedelen
Else Lervik, september 2012
side 8
Aggregering
•
•
Aggregering er en løsere
sammenheng enn komposisjon. De
enkelte delene kan leve videre selv
om den entiteten de er en del av,
forsvinner.
Hva skiller dette fra en ”vanlig”
sammenheng, dvs en strek uten
aggregerings-rombe?
Person
Husstand
+husstand_id {PK}
+adresse
+boareal
+består_av
0..1
0..*
+person_id {PK}
+etternavn
+fornavn
+epost
kan være NULL
husstand(husstand_id, adresse, boareal)
person(person_id, etternavn, fornavn, epost, husstand_id*)
Datamodellering og databaser, databasedelen
Else Lervik, september 2012
side 9