Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

LC238D Datamodellering og databaser Else Lervik, september 2011 Forelesning 6, Uke 38 Objektorientering i ER-modeller.

Liknende presentasjoner


Presentasjon om: "LC238D Datamodellering og databaser Else Lervik, september 2011 Forelesning 6, Uke 38 Objektorientering i ER-modeller."— Utskrift av presentasjonen:

1 LC238D Datamodellering og databaser Else Lervik, september 2011 Forelesning 6, Uke 38 Objektorientering i ER-modeller EER-modeller Enhanced Entity Relationship Models Oppsummering: Å oversette fra ER- til relasjonsmodellside 2 Spesialisering og generaliseringside 3-7 Komposisjonside 8 Aggregeringside 9 Se ellers læreboka, side

2 Datamodellering og databaser, databasedelen Else Lervik, september 2011 side 2 Oppsummering: Å oversette fra ER-modell til relasjonsmodell 1.Lag en relasjon pr entitetstype. 2.Oversett en-til-en-sammenhengstyper ved å legge inn fremmednøkkel på den ene av sidene. Hvis det er eksistensavhengighet (NOT NULL) på en av sidene, skal denne brukes. Sett på UNIQUE-krav i CREATE TABLE-setningen for å sikre entydigheten. Se side 193 i læreboka. 3.Oversett en-til-mange-sammenhengstyper ved å legge inn fremmednøkkel på mange-siden i forholdet. Se side Mange-til-mange-sammenhengstyper gir alltid opphav til en egen relasjon ("koplingstabell"). Se side Fremmednøkler fra begge sidene kommer inn og danner til sammen primærnøkkelen i en slik relasjon. Det er mulig med ekstra attributter i tillegg, da vises det i ER-modellen ved en entitetstype med stiplet linje fram til den aktuelle sammenhengstypen. (Alternativt kan man ha løpenummer som primærnøkkel. Fremmednøklene må likevel være med. Sett da på UNIQUE-krav i CREATE TABLE-setningen, eksempel: CONSTRAINT unique_constr UNIQUE(lev_nr, prod_nr) )) 5.I dag kommer flere regler: Hvordan overføre objektorientering fra UML-diagrammet til relasjonsmodellen?

3 Datamodellering og databaser, databasedelen Else Lervik, september 2011 side 3 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, 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 insert into person values(100, ’Olsen’, ’Arne’, ’xxx’) insert into elev values(100, ’ ’, ’bokmål’) select * from person, elev where person.person_id = elev.person_id;

4 Datamodellering og databaser, databasedelen Else Lervik, september 2011 side 4 Overlappende / disjunkte delmengder {AND} betyr overlappende spesialisering, dvs at en person kan være f. eks. både forelder og lærer. {OR} betyr disjunkt spesialisering, dvs at hver person enten er forelder, lærer eller elev. Kan kravet om disjunkte mengder framkomme i relasjonsmodellen, eventuelt ved generering av databasen med SQL? Nei. Vi skal senere se hvordan slike krav kan programmeres som del av database-skjemaet. 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)

5 Datamodellering og databaser, databasedelen Else Lervik, september 2011 side 5 Total/delvis deltakelse 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) Delvis deltakelse betyr at det kan finnes entiteter i superentitetstypen som ikke er med i noen av subentitetstypene. Total deltakelse betyr at alle entitetene i superentitetstypen må være med i minst en av subentitetstypene. Kan disse kravene framkomme i relasjonsmodellen, eventuelt ved generering av databasen med SQL? Nei. Vi skal senere se hvordan slike krav kan programmeres som del av database-skjemaet.

6 Restriksjoner på spesialiseringen kan kombineres Datamodellering og databaser, databasedelen Else Lervik, september 2011 side 6 Disjunkt (OR)Overlappende (AND) DelvisEn superentitet deltar i 0 eller 1 subentitetstype (0..1) En superentitet kan, men behøver ikke, delta i 1 eller flere subentitetstyper (0..*) TotalEn superentitet deltar i eksakt 1 subentitetstype (1..1) En superentitet deltar i minst 1 subentitetstyper (1..*)

7 Datamodellering og databaser, databasedelen Else Lervik, september 2011 side 7 Et større eksempel 3..7 deltaker(delt_id, fornavn, etternavn, epost) sesjon(sesjons_id, tittel, start_tid, varighet, ledes_av_delt_id*) paneldebatt(sesjons_id*) foredrag(sesjons_id*, sammendrag) fellesforedrag(sesjons_id*, aapent) spesialforedrag(sesjons_id*, maalgruppe) deltaker_spesialforedrag(delt_id*, sesjons_id*) deltaker_paneldebatt(delt_id*, sesjons_id*) (alternativt: paneldebatt(sesjons_id*, delt1*, delt2*, …, delt7*)) (Deltakere på fellesforedrag trenger ikke registreres)

8 Datamodellering og databaser, databasedelen Else Lervik, september 2011 side 8 Komposisjon avis(avisnavn,....) annonse(annonse_nr,...., avisnavn*) prosjekt(prosjnr, prosjektnavn, budsjett, forbruk) prosjektrapport(prosjnr*, dato, tittel, forfattere, sammendrag, innhold) Identitetsavhengighet 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 Forskjell mellom de to Avis- Annonse- modellene? Støtte i relasjonsmodellen og SQL for komposisjon? For eksistensavhengighet? For identitetsavhengighet?

9 avis(avisnavn,....) annonse(annonse_nr,...., avisnavn*) Forskjell mellom de to Avis-Annonse- modellene? Figuren til høyre: Annonse kan inngå i andre sammenhenger, det er (vanligvis) ikke tilfelle for figuren til venstre. Støtte i relasjonsmodellen og SQL for komposisjon? ON CASCADE DELETE. Ikke mulig å hindre at annonse_nr blir fremmednøkkel. For eksistensavhengighet? Sett NOT NULL på fremmednøkkelen. For identitetsavhengighet? La fremmednøkkelen være en del av primærnøkkelen.

10 Datamodellering og databaser, databasedelen Else Lervik, september 2011 side 10 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? Ingenting / svært lite. husstand(husstand_id, adresse, boareal) person(person_id, etternavn, fornavn, epost, husstand_id*) kan være NULL


Laste ned ppt "LC238D Datamodellering og databaser Else Lervik, september 2011 Forelesning 6, Uke 38 Objektorientering i ER-modeller."

Liknende presentasjoner


Annonser fra Google