INF1300 Introduksjon til databaser

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

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

INF1300 Introduksjon til databaser

Flere skranker i ORM Integritetsregler med «CHECK» i SQL

Forelesning INF1300. Simen Buodd. Plenumstime 8. September 2015

Informasjonsbærende representasjoner

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

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser

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

Notater: INF1300. Veronika Heimsbakk 8. januar 2013

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser

Realiseringsalgoritmen fra ORM til relasjoner Intro til mengdeskranker i ORM

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

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Språk for dataorientert modellering

IN2090 Databaser og datamodellering ORM 1

INF1300 Introduksjon til databaser

Dataorientert modellering

INF Introduksjon til databaser ORM I

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

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

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

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

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

Dataorientert modellering

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

UNIVERSITETET I OSLO

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

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Skranker og avledninger

IN2090 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Datamodellering med ORM

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

INF1300 Introduksjon til databaser

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Relasjonsdatabasedesign

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

INF1050 Klasseromsoppgave Uke 6

Oppdateringsanomalier Normalformer

UNIVERSITETET I OSLO

UNIVERSITETET. Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

Relasjonsdatabasedesign

Relasjonsdatabasedesign

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

Relasjonsdatabasedesign

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

Relasjonsdatabasedesign

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

Relasjonsdatabasedesign

UNIVERSITETET I OSLO. Relasjonsmodellen. Relasjoner og funksjonelle avhengigheter. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

IN2090 Introduksjon til databaser

Informasjonssystemer, DBMSer og databaser

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

INF1300 Introduksjon til databaser

INF212 - Databaseteori. Kursinnhold

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

Relasjonsdatabasedesign

Relasjonsdatabasedesign

UNIVERSITETET I OSLO

INF1300 Introduksjon til databaser

Relasjonsdatabasedesign

Matchinger i ikke-bipartite grafer

INF1300 Introduksjon til databaser

Et utsagn (eng: proposition) er en erklærende setning som enten er sann eller usann. Vi kaller det gjerne en påstand.

Transaksjonsstandard for virkesomsetningen i Norge. Business Acknowledge. Versjon 2.0. Desember 2007 SKOG-DATA AS

Modellenes to formål. Datamodellering med UML (forts.) Ugrupperte og grupperte modeller. Figur 5-2. Ogdens trekant

Modellenes to formål. Datamodellering med UML (forts.) Ugrupperte og grupperte modeller. Figur 5-2. Ogdens trekant

IN2090: Ukeoppgaver uke 1 ( august)

BESLUTNINGER UNDER USIKKERHET

Lineære likningssett.

Intermesso. Visjonen... samling av trådene. Veivalget. Et bedre bilde av visjonen?

Transkript:

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser Dagens tema: Begrepsdannelse Eksterne entydighetsskranker Verdiskranker Mengdeskranker INF1300 1.9.2008 Ellen Munthe-Kaas 1

Et eksempel fra virkeligheten La oss se på setningen «På Blindern klokken 8 var det 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? INF1300 1.9.2008 Ellen Munthe-Kaas 2

Et eksempel fra virkeligheten «På Blindern klokken 8 var det 9 grader» Blindern er et sted med representasjon stedsnavn 8 er et tidspunkt med representasjon dato og klokkeslett 9 er en temperatur med representasjon C For å avgjøre om setningen er elementær, tyr vi til et forekomstdiagram INF1300 1.9.2008 Ellen Munthe-Kaas 3

Et eksempel fra virkeligheten Er det noen av forekomstene som må strykes? INF1300 1.9.2008 Ellen Munthe-Kaas 4

Et eksempel fra virkeligheten Hvor skal entydighetsskranken(e) stå? INF1300 1.9.2008 Ellen Munthe-Kaas 5

Et eksempel fra virkeligheten Dette er en entydighetsskranke over de to begrepene «Tid» og «Sted» Den gjør at setningen er elementær INF1300 1.9.2008 Ellen Munthe-Kaas 6

n-1-regelen En setning med aritet n er aldri elementær hvis det tilhørende forekomstdiagrammet har en entydighetsskranke som er kortere enn n-1 Hvis korteste entydighetsskranke har lengde n-1, er setningen elementær Hvis det ikke finnes noen entydighetsskranke kortere enn n, er setningen nesten alltid elementær Unntakene forekommer svært sjelden i praksis, og de er ikke pensum i INF1300 (men i INF3100) INF1300 1.9.2008 Ellen Munthe-Kaas 7

Et eksempel fra virkeligheten Vi har nå et skjema for elementære ternære setninger med en entydighetsskranke av lengde to Entydighetsskranken sier at Tid og Sted sammen bestemmer Temperatur. Hva hvis vi ønsker å ha med informasjon om den som foretok målingen? «På Blindern klokken 8 målte Jens 9 grader» INF1300 1.9.2008 Ellen Munthe-Kaas 8

Et eksempel fra virkeligheten «På Blindern klokken 8 målte Jens 9 grader» Denne setningen er ikke elementær, den kan splittes opp i to elementære setninger slik: «På Blindern klokken 8 var det 9 grader.» «På Blindern klokken 8 målte Jens (temperaturen).» 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 INF1300 1.9.2008 Ellen Munthe-Kaas 9

Et eksempel fra virkeligheten Vi kan tydeliggjøre dette ved å lage et nytt begrep av kombinasjonen av begrepene Tid og Sted. Det nye begrepet kan vi i vårt UoD kalle Måling. Deretter kan vi knytte forekomster av Temperatur og Person til det nye begrepet. Entydighetsskrankene på rollene med_resultat og gjort_av uttrykker at én forekomst av Måling maksimalt har én forekomst av Temperatur og må være gjort av maksimalt én Person. Dette svarer til entydighetsskrankene over tid+sted i modellen til venstre. INF1300 1.9.2008 Ellen Munthe-Kaas 10

Begrepsdannelse Et problem er at begrepene Tid og Sted ble borte fra modellen Hvorvidt vi kan tillate det, avhenger av UoD Hvis Tid eller Sted har andre roller enn å være tid og sted for Måling, kan vi ikke fjerne dem fra modellen La oss se nærmere på sammenhengen mellom Tid, Sted og Måling: Entydighetsskrankene og de totale rollene uttrykker at én forekomst av Måling må være utført på eksakt ett Sted og én Tid INF1300 1.9.2008 Ellen Munthe-Kaas 11

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 INF1300 1.9.2008 Ellen Munthe-Kaas 12

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 INF1300 1.9.2008 Ellen Munthe-Kaas 13

Eksterne entydighetsskranker Entydighet på tvers av faktatyper indikerer vi med en ekstern entydighetsskranke på de involverte rollene tid og sted INF1300 1.9.2008 Ellen Munthe-Kaas 14

Eksterne entydighetsskranker I storm er eksterne entydighetsskranker betegnet med symbolet : INF1300 1.9.2008 Ellen Munthe-Kaas 15

Begrepsdannelse alternativ notasjon INF1300 1.9.2008 Ellen Munthe-Kaas 16

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 INF1300 1.9.2008 Ellen Munthe-Kaas 17

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: INF1300 1.9.2008 Ellen Munthe-Kaas 18

Verdiskranker INF1300 1.9.2008 Ellen Munthe-Kaas 19

Verdiskranker Begrenser mulige forekomster av et begrep I praksis: Angir en mengde verdier som er lovlige representasjoner f.eks. ved direkte opprams av verdiene, angivelse av en nedre og/eller øvre grense, innebygde kontrollsifre (eks. fødselsnumre) INF1300 1.9.2008 Ellen Munthe-Kaas 20

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 INF1300 1.9.2008 Ellen Munthe-Kaas 21

Populasjoner - eksempel pop(land som vinnerland) = {Tyskland, USA, Østerrike} pop(land som har_deltaker) = {Norge, USA, Frankrike} pop(land) = {Tyskland, USA, Østerrike, Norge, Frankrike} INF1300 1.9.2008 Ellen Munthe-Kaas 22

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 INF1300 1.9.2008 Ellen Munthe-Kaas 23

Mengdelikhetsskranken A skal ha rollen r1 hvis og bare hvis A har rollen r2. pop(r1) = pop(r2) for alle tilstander INF1300 1.9.2008 Ellen Munthe-Kaas 24

Mengdelikhetsskranken, eksempel Konsekvens: Oppdatering av har lønn krever oppdatering av har lønnstrekk og omvendt INF1300 1.9.2008 Ellen Munthe-Kaas 25

Mengdeulikhetsskranken A skal ikke ha både rollen r1 og r2. pop(r1) pop(r2) = for alle tilstander INF1300 1.9.2008 Ellen Munthe-Kaas 26

Mengdeulikhetsskranken, eksempel INF1300 1.9.2008 Ellen Munthe-Kaas 27

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 INF1300 1.9.2008 Ellen Munthe-Kaas 28

Mengdeulikhetsskranke over to roller Det skal ikke være forekomster av A og B som er relatert gjennom begge faktatypene INF1300 1.9.2008 Ellen Munthe-Kaas 29

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å INF1300 1.9.2008 Ellen Munthe-Kaas 30

Den generelle mengdeulikhetsskranken pop(r i ) pop(r j ) = for alle i j (1 i k, 1 j k) INF1300 1.9.2008 Ellen Munthe-Kaas 31

Delmengdeskranken Hvis A har rollen r2, så skal A også ha rollen r1. pop(r2) pop(r1) for alle tilstander INF1300 1.9.2008 Ellen Munthe-Kaas 32

Delmengdeskranken, eksempel INF1300 1.9.2008 Ellen Munthe-Kaas 33

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? INF1300 1.9.2008 Ellen Munthe-Kaas 34

?????? INF1300 1.9.2008 Ellen Munthe-Kaas 35

Oppgaver Ikke selg skinnet før bjørnen er skutt Kast ikke stein når du sitter i glasshus INF1300 1.9.2008 Ellen Munthe-Kaas 36

Impliserte skranker skal ikke tegnes Implisert likhetsskranke skal ikke tegnes Implisert delmengdeskranke skal ikke tegnes INF1300 1.9.2008 Ellen Munthe-Kaas 37

Impliserte skranker skal ikke tegnes Impliserte delmengdeskranker skal ikke tegnes Implisert ulikhetsskranke skal ikke tegnes INF1300 1.9.2008 Ellen Munthe-Kaas 38

Mengdelikhetsskranke over flere roller er vanligvis ikke lov INF1300 1.9.2008 Ellen Munthe-Kaas 39

Mengdeskranker i storm Mengdelikhetsskranke: Mengdeulikhetsskranke: En og bare en rolle: Delmengdeskranke: INF1300 1.9.2008 Ellen Munthe-Kaas 40