Dagens tema: Begrepsdannelse Eksterne entydighetsskranker Representasjon n-1-regelen Verdiskranker Mengdeskranker

Like dokumenter
Dagens tema: Begrepsdannelse Eksterne entydighetsskranker Verdiskranker Mengdeskranker

INF1300 Introduksjon til databaser

Dagens tema: Begrepsdannelse Eksterne entydighetsskranker Representasjon n-1-regelen

Dagens tema: Begrepsdannelse Eksterne entydighetsskranker Verdiskranker Mengdeskranker Underbegreper og underbegrepsskranker Kombinerte totale roller

Dagens tema: Begrepsdannelse Eksterne entydighetsskranker

INF1300 Introduksjon til databaser

Flere skranker i ORM Integritetsregler med «CHECK» i SQL

Repetisjon: (nesten) alt du trenger å kunne om ORM og realisering

IN2090 Databaser og datamodellering ORM 1

Repetisjon: (nesten) alt du trenger å kunne om ORM og realisering

INF Introduksjon til databaser ORM I

Repetisjon: (nesten) alt du trenger å kunne om ORM og realisering

Realiseringsalgoritmen fra ORM til relasjoner Intro til mengdeskranker i ORM

INF1300 Introduksjon til databaser

Notater: INF1300. Veronika Heimsbakk 8. januar 2013

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Vegard Nossum. 21. oktober 2010

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Språk for dataorientert modellering

Informasjonsbærende representasjoner

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser

Dataorientert modellering

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Forelesning INF1300. Simen Buodd. Plenumstime 8. September 2015

INF1300. Grunnbegrepene i ORM: fakta, begreper, roller, faktatyper, broer, entydighetsskranker, totale roller, funksjonelle avhengigheter

Dagens tema: Ringskranker Informasjonsbærende representasjoner Behandling av tid Tommelfingerregler

Dagens tema: Underbegreper og underbegrepsskranker Kombinerte totale roller Behandling av tid Informasjonsbærende representasjoner Ringskranker

Dagens tema: Ekvivalente stier og joinskranker Ringskranker Informasjonsbærende representasjoner Behandling av tid

Dagens tema: Ringskranker Klisjéer (mønstre) Tommelfingerregler

UNIVERSITETET I OSLO INF1300. Dagens tema: Ringskranker. Tommelfingerregler. Institutt for informatikk. INF Ellen Munthe-Kaas 1

Dagens tema: Relasjonsmodellen (funksjonelle avhengigheter og nøkler, integritetsregler) Realisering: Fra ORM til relasjoner

INF1300 Introduksjon til databaser

Dagens tema: Realiseringsalgoritmen (også kalt "grupperingsalgoritmen") fra ORM-diagram til relasjonsskjema

Dataorientert modellering

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

IN2090 Introduksjon til databaser

INF1300 Introduksjon til databaser

Datamodellering med ORM

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

Gruppeøvelse 20/ Dagens tema: - Gruppering/realisering

*UXSSHULQJ IRU JUDXWVNDOOHU (QYLVXHOOJXLGHJMHQQRPQRHQ DY1,$0JUXSSHULQJHQV XQGHUIXQGLJKHWHU

IN2090 Introduksjon til databaser

Sensorveiledning for IN2090 og INF desember :30 18:30 (4 timer)

UNIVERSITETET I OSLO

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1050 Klasseromsoppgave Uke 6

Skranker og avledninger

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

INF september Relasjonsmodellen funksjonelle avhengigheter og nøkler Realisering: Fra ORM til relasjoner

Relasjonsdatabasedesign

Dagens tema. Den redundansfri datamodellen. Modellenes to formål. Den grunnleggende konstruksjonen det elementære utsagnet

Datamodellering med UML. Modellenes to formål. The Unified Modeling Language - UML

IN2090: Ukeoppgaver uke 1 ( august)

Datamodellering med UML

INF1300 Introduksjon til databaser

PENSUM H2012 INF1300. Joakim Myrvoll Johansen. Pensum fra forelesnings-foilere

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Relasjonsdatabasedesign

Gerhard Skagestein: Systemutvikling fra kjernen og ut, fra skallet og inn.

Dagens tema: Relasjonsmodellen Funksjonelle avhengigheter og nøkler Realisering: Fra ORM til relasjoner

UNIVERSITETET. Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

The Unified Modeling Language - UML

Relasjonsdatabasedesign

Introduksjon. MAT1030 Diskret Matematikk. Introduksjon. En graf. Forelesning 22: Grafteori. Roger Antonsen

Introduksjon. MAT1030 Diskret matematikk. Søkealgoritmer for grafer. En graf

MAT1030 Diskret matematikk

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

INF1050 Klasseromsoppgave Uke 7

INF1300 Introduksjon til databaser

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Dag Normann

Relasjonsdatabasedesign

MAT1030 Diskret Matematikk

Kombinatorikk. MAT1030 Diskret Matematikk. Oppsummering av regneprinsipper

MAT1030 Diskret Matematikk

MAT1030 Forelesning 22

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk

Relasjonsdatabasedesign

Datamodellering med UML. Modellenes to formål. The Unified Modeling Language - UML

UNIVERSITETET I OSLO

MAT1030 Forelesning 25

Relasjonsdatabasedesign

Fra krav til objektdesign

VÆRSTASJONER Obligatorisk oppgave nr. 2 i INF1300 høsten 2011

MAT1030 Forelesning 22

Oppdateringsanomalier Normalformer

UNIVERSITETET I OSLO

Transkript:

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser Dagens tema: Begrepsdannelse Eksterne entydighetsskranker Representasjon n-1-regelen Verdiskranker Mengdeskranker INF1300 29.08.2017 Mathias Stang 1

Fra forrige forelesning interesseområde (UoD, domene) begrep verditype (representasjonstype) elementær setning forekomst fakta faktatype objekttype en setnings aritet rolle bro setningstype entydighetsskranke forekomsttabell påkrevd rolle perfekt bro 2

Entydighetsskranker på faktatyper med høyere aritet «Student har fullført emne med karakter» 3

Begrepsdannelse Alle mange-til-mange-entydighetsskranker (m:n) kan være opphav til et nytt begrep For å gjøre dette, kan vi ofte følge en algoritme La oss se på faktatypen «Student tar Emne» 4

Begrepsdannelse 5

Begrepsdannelse Litt forenklet oppsummering: 1. Lag begrep for å erstatte m:n-setning 2. Sett n:1-entydighetsskranker fra nytt begrep 3. Sett påkrevde roller 4. Sett ekstern entydighetsskranke 6

Representasjon Alle begreper må ha en representasjon på en av følgende måter: 1. Verditype som er knyttet til begrepet med perfekt bro 2. Gjennom ekstern entydighetsskranke og påkrevde roller (som i en begrepsdannelse) 3. Representasjonen til et annet begrep som er knyttet til begrepet via en 1:1-faktatype med påkrevd rolle 7

Et eksempel fra virkeligheten La oss se på setningen «På Blindern klokken 8 målte Jens 9 grader» De tre spørsmålene vi alltid må stille oss, er: Hvilke begreper har vi? Hvilken representasjon bruker vi for disse begrepene? Er setningen elementær i vårt UoD, og hvis den ikke er det, hvordan kan den splittes opp? 8

Et eksempel fra virkeligheten «På Blindern klokken 8 målte Jens 9 grader» Blindern er et sted med representasjon stedsnavn 8 er et tidspunkt med representasjon dato og klokkeslett Jens er en person med representasjon personnavn 9 er en temperatur med representasjon C For å avgjøre om setningen er elementær, kan vi lage en forekomsttabell 9

Et eksempel fra virkeligheten 3.8.17 kl 8:00 Blindern 9 Jens 3.8.17 kl 8:00 Værnes 9 Siri 3.8.17 kl 8:00 Blindern 11 Lars 4.8.17 kl 8:00 Blindern 9 Jens Er det noen av forekomstene som må strykes? Hvor skal entydighetsskranken(e) stå? 10

Et eksempel fra virkeligheten 3.8.17 kl 8:00 Blindern 9 Jens 3.8.17 kl 8:00 Værnes 9 Siri 3.8.17 kl 8:00 Blindern 11 Lars 4.8.17 kl 8:00 Blindern 9 Jens Dette er en entydighetsskranke over de to begrepene «Tid» og «Sted» Det gjør at setningen ikke er elementær (se neste lysark) 11

n-1-regelen En setning med aritet n er aldri elementær hvis den tilhørende forekomsttabellen har en entydighetsskranke som er kortere enn n-1 Hvis korteste entydighetsskranke har lengde n-1, er setningen elementær Hvis korteste entydighetsskranke har lengde n, er setningen nesten alltid elementær Unntakene forekommer svært sjelden i praksis, og de er ikke pensum i INF1300 (men i INF3100) Setninger med aritet 1 eller 2 er alltid elementære 12

Hvordan gjør vi denne gyldig? 13 14

Et eksempel fra virkeligheten Vi har nå et skjema for elementære ternære setninger med entydighetsskranker av lengde to Entydighetsskrankene sier at Tid og Sted sammen bestemmer Temperatur og sammen bestemmer Person. 14

Et eksempel fra virkeligheten De to setningene har til felles at Tid og Sted sammen bestemmer en tredje verdi ORM-diagrammet til venstre er korrekt, men tydeliggjør ikke at for både Temperatur og Person er forekomster bestemt av en og samme kombinasjon av Tid og Sted 15

Begrepsdannelse 18

Begrepsdannelse Modellen er fortsatt ikke god nok: Den utelukker ikke at to forskjellige målinger (av samme fenomen) kan være foretatt på nøyaktig samme tid og sted 19

Begrepsdannelse Modellen er fortsatt ikke god nok: Den utelukker ikke at to forskjellige målinger (av samme fenomen) kan være foretatt på nøyaktig samme tid og sted Vi trenger en entydighetsskranke på tvers av faktatypene 20

Eksterne entydighetsskranker Entydighet på tvers av faktatyper indikerer vi med en ekstern entydighetsskranke på de involverte rollene tid og sted 21

Eksterne entydighetsskranker Vi kan også uttrykke at en person ikke kan foreta mer enn én måling av gangen Dette gjøres med en ekstern entydighetsskranke på rollene foretok og tid 23

Eksempel med aritet 4 På en gitt dag låner en person, kalt debitor, et beløp fra en annen person, kalt kreditor Det nye begrepet, Lån, består av én dag og to personer Hvordan vi modellerer «en annen person», kommer vi tilbake til. Forøvrig ser modellen slik ut: 24

Avsluttende om begrepsdannelser Alle entydighetsskranker som går over mer enn én rolle i en faktatype, skjuler et (nytt) begrep. Man skal alltid vurdere om det skal lages nye begreper når man får faktatyper med lange entydighetsskranker. En faktatype med aritet 3 eller 4 (eller mer) kan gjøres om til binære setninger ved å lage ett eller flere nye begreper. IKKE bruk begrepsdannelse om du ikke trenger det det er enklere (og bedre) å bruke mange-til-mange-skranker! 25

Verdiskranker Begrenser mulige forekomster av et begrep I praksis: Angir en mengde verdier som er lovlige representasjoner f.eks. ved direkte opprams av verdiene eller angivelse av en nedre og/eller øvre grense 26

Populasjoner Populasjon for en rolle: Hvis r er en rolle, betegner pop(r) mengden av forekomster i kolonnen for r i forekomsttabellen Populasjon for et begrep: Begreper har egentlig ikke forekomster løsrevet fra roller, men vi definerer likevel populasjonen til et begrep A som har roller r 1, r 2,..., r n ved pop(a) = pop(r 1 ) pop(r 2 )... pop(r n ) Merk: Populasjonen til en rolle/et begrep varierer med tiden 27

Populasjoner - eksempel pop(land som vinnerland) = {Tyskland, USA, Østerrike} pop(land som har_deltaker) = {Norge, USA, Frankrike} pop(land) = {Tyskland, USA, Østerrike, Norge, Frankrike} 28

Mengdeskranker Mengdeskrankene begrenser mengden av forekomster i en eller flere roller i forhold til forekomstene i andre roller Finnes i følgende varianter: Likhetsskranke Ulikhetsskranke Delmengdeskranke 29

Mengdelikhetsskranken A skal ha rollen r1 hvis og bare hvis A har rollen r2. pop(r1) = pop(r2) for alle tilstander 30

Mengdelikhetsskranken, eksempel Konsekvens: En person som har lønn må også ha lønnstrekk og omvendt 31

Mengdeulikhetsskranken A skal ikke ha både rollen r1 og r2. pop(r1) pop(r2) = for alle tilstander 32

Mengdeulikhetsskranken, eksempel 33

Mengdeulikhetsskranken A skal ikke ha både rollen r1 og r2. Det kan være forekomster av A som hverken er i r1 eller r2 A skal ha en og bare en av rollene r1 og r2 34

Mengdeulikhetsskranke over to roller Det skal ikke være forekomster av A og B som er relatert gjennom begge faktatypene 35

Mengdeulikhetsskranken, eksempel Sag ikke av en gren når du sitter på en annen gren Sag ikke av en gren som noen andre sitter på Sag ikke av den grenen du selv sitter på 36

Den generelle mengdeulikhetsskranken. pop(r i ) pop(r j ) = for alle i j (1 i k, 1 j k) 37

Delmengdeskranken Hvis A har rollen r2, så skal A også ha rollen r1. pop(r2) pop(r1) for alle tilstander 38

Delmengdeskranken, eksempel 39

Eksempel med aritet 4 forts. På en gitt dag låner en person debitoren - et beløp fra en annen person - kreditoren Oppgave: Hvilken skranke mangler? Hvor skal den plasseres? 40

Impliserte skranker skal ikke tegnes Implisert likhetsskranke skal ikke tegnes Implisert delmengdeskranke skal ikke tegnes 41

Impliserte skranker skal ikke tegnes Impliserte delmengdeskranker skal ikke tegnes Implisert ulikhetsskranke skal ikke tegnes 42

Mengdelikhetsskranke over flere roller er vanligvis ikke lov 43