UNIVERSITETET I OSLO INF1300 Introduksjon til databaser Dagens tema: Verdiskranker Underbegreper Underbegrepsskranker Mengdeskranker Delmengdeskranker INF1300-10.9.2007 Ellen Munthe-Kaas 1
Verdiskranker INF1300-10.9.2007 Ellen Munthe-Kaas 2
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-10.9.2007 Ellen Munthe-Kaas 3
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-10.9.2007 Ellen Munthe-Kaas 4
Populasjoner - eksempel pop(land.vinnerland) = {Tyskland, USA, Østerrike} pop(land.har_deltaker) = {Norge, USA, Frankrike} pop(land) = {Tyskland, USA, Østerrike, Norge, Frankrike} INF1300-10.9.2007 Ellen Munthe-Kaas 5
Underbegreper Kjernespørsmål: Kan alle tenkelige forekomster av et begrep spille alle roller som er knyttet til begrepet? Hvis nei: Kan få en mer presis modell ved å innføre underbegreper B er et underbegrep av A hvis vi alltid har at pop(b) pop(a) Notasjon: INF1300-10.9.2007 Ellen Munthe-Kaas 6
Underbegrepsskranke INF1300-10.9.2007 Ellen Munthe-Kaas 7
Underbegreper Underbegreper arver representasjon og roller fra superbegrepet. I tillegg har de sine egne roller Underbegrepsskranker brukes til å bestemme hvilket underbegrep hver enkelt forekomst tilhører Underbegreper kan overlappe eller være disjunkte Underbegrepene kan, men må ikke, være uttømmende mhp sitt superbegrep Resonnementer over entydighetsskranker, påkrevde roller og underbegrepsskrankene avslører om underbegrepene er overlappende og/eller uttømmende INF1300-10.9.2007 Ellen Munthe-Kaas 8
Eksempel på overlappende og ikke-uttømmende underbegreper INF1300-10.9.2007 Ellen Munthe-Kaas 9
Underbegreper i flere nivåer Det transitive underbegrepet tegnes ikke inn! INF1300-10.9.2007 Ellen Munthe-Kaas 10
Påkrevd rollekombinasjon A skal ha enten rollen r1 eller rollen r2. pop(r1) pop(r2) = pop(a) for alle tilstander INF1300-10.9.2007 Ellen Munthe-Kaas 11
Eksempel på påkrevd rollekombinasjon og underbegrep INF1300-10.9.2007 Ellen Munthe-Kaas 12
Generell påkrevd rollekombinasjon pop(r1) pop(r2)... pop(rk) = pop(a) INF1300-10.9.2007 Ellen Munthe-Kaas 13
Se opp for manglende påkrevde roller Mangel på påkrevde roller kan indikere et underbegrep INF1300-10.9.2007 Ellen Munthe-Kaas 14
Spesialisering og generalisering INF1300-10.9.2007 Ellen Munthe-Kaas 15
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-10.9.2007 Ellen Munthe-Kaas 16
Mengdelikhetsskranken A skal ha rollen r1 hvis og bare hvis A har rollen r2. pop(r1) = pop(r2) for alle tilstander INF1300-10.9.2007 Ellen Munthe-Kaas 17
Mengdelikhetsskranken, eksempel Konsekvens: Oppdatering av har lønn krever oppdatering av har lønnstrekk og omvendt INF1300-10.9.2007 Ellen Munthe-Kaas 18
Mengdeulikhetsskranken A skal ikke ha både rollen r1 og r2. pop(r1) pop(r2) = for alle tilstander INF1300-10.9.2007 Ellen Munthe-Kaas 19
Mengdeulikhetsskranken, eksempel INF1300-10.9.2007 Ellen Munthe-Kaas 20
Mengdeulikhetsskranken A skal ikke ha både rollen r1 og r2. Det kan være forekomster av A som verken er i r1 eller r2 A skal ha en og bare en av rollene r1 og r2 - samme som INF1300-10.9.2007 Ellen Munthe-Kaas 21
Mengdeulikhetsskranke over to roller Det skal ikke være forekomster av A og B som er relatert gjennom begge assosiasjonene INF1300-10.9.2007 Ellen Munthe-Kaas 22
Mengdeulikhetsskranken, eksempel Sag ikke av en gren når du sitter på en annen gren Sag ikke av en gren som noen sitter på Sag ikke av den grenen du selv sitter på INF1300-10.9.2007 Ellen Munthe-Kaas 23
Den generelle mengdeulikhetsskranken pop(r i ) pop(r j ) = for alle i j (1 i k, 1 j k) INF1300-10.9.2007 Ellen Munthe-Kaas 24
Delmengdeskranken Hvis A har rollen r2, så skal A også ha rollen r1. pop(r2) pop(r1) for alle tilstander INF1300-10.9.2007 Ellen Munthe-Kaas 25
Delmengdeskranken, eksempel INF1300-10.9.2007 Ellen Munthe-Kaas 26
Eksempel fra forrige forelesning 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-10.9.2007 Ellen Munthe-Kaas 27
<<equal>>? <<unequal>>? <<subset>>???? INF1300-10.9.2007 Ellen Munthe-Kaas 28
Oppgaver Ikke selg skinnet før bjørnen er skutt Kast ikke stein når du sitter i glasshus INF1300-10.9.2007 Ellen Munthe-Kaas 29
Impliserte skranker skal ikke tegnes Implisert likhetsskranke skal ikke tegnes Implisert delmengdeskranke skal ikke tegnes INF1300-10.9.2007 Ellen Munthe-Kaas 30
Impliserte skranker skal ikke tegnes Impliserte delmengdeskranker skal ikke tegnes Implisert ulikhetsskranke skal ikke tegnes INF1300-10.9.2007 Ellen Munthe-Kaas 31
Mengdelikhetsskranke over flere roller er vanligvis ikke lov INF1300-10.9.2007 Ellen Munthe-Kaas 32