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

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

INF1300 Introduksjon til databaser

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

INF1300 Introduksjon til databaser

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

Realiseringsalgoritmen fra ORM til relasjoner Intro til mengdeskranker i ORM

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

INF1300 Introduksjon til databaser

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

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

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

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

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser

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

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Dagens tema: Begrepsdannelse Eksterne entydighetsskranker

IN2090 Databaser og datamodellering ORM 1

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

INF1300 Introduksjon til databaser

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

IN2090 Introduksjon til databaser

UNIVERSITETET I OSLO

INF1300 Introduksjon til databaser

Informasjonsbærende representasjoner

Dagens tema: Begrepsdannelse Eksterne entydighetsskranker Verdiskranker Mengdeskranker

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

INF Introduksjon til databaser ORM I

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

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

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

Relasjonsdatabasedesign

UNIVERSITETET I OSLO

La oss først se på problemet med objektorientert tankegang. Se figuren under. Konto

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

Dataorientert modellering

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

Vegard Nossum. 21. oktober 2010

INF1300 Introduksjon til databaser

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

UNIVERSITETET I OSLO

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: Ekvivalente stier og joinskranker Ringskranker Informasjonsbærende representasjoner Behandling av tid

Språk for dataorientert modellering

MAT1030 Diskret matematikk. Kompleksitetsteori. Forelesning 29: Kompleksitetsteori. Dag Normann KAPITTEL 13: Kompleksitetsteori. 7.

UNIVERSITETET I OSLO

Dagens temaer. Dagens temaer hentes fra kapittel 3 i Computer Organisation and Architecture. Kort repetisjon fra forrige gang. Kombinatorisk logikk

Notater: INF1300. Veronika Heimsbakk 8. januar 2013

UNIVERSITETET. Relasjonsdatabasedesign

Andre sett obligatoriske oppgaver i INF3100 V2013

Forelesning 9 mandag den 15. september

INF1300 Introduksjon til databaser

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Brukerdokumentasjon Credit Card Clearing

UNIVERSITETET I OSLO

DEL 1 Uten hjelpemidler

Objektorientering i ER-modeller EER-modeller Enhanced Entity Relationship Models

Veileder for bruk av LMG-kalender (for riktig legemiddelbruk i sykehjem)

Vektorfil og linjeskjuling... 3

STATISTIKK FRA A TIL Å

Uendelige rekker. Konvergens og konvergenskriterier

MAT Overføring av hele fester ved opprett ny grunneiendom eller arealoverføring Spesifikasjon:

INF212 - Databaseteori. Kursinnhold

INF1300 Introduksjon til databaser

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Saksframlegg. Utvalg Utvalgssak Møtedato Komite Levekår Kommunestyret. Moderasjonsordning i Stjørdal kommune.

INF1300 Introduksjon til databaser

Relasjonsdatabasedesign

Tyngdekraft og luftmotstand

Forelesning INF1300. Simen Buodd. Plenumstime 8. September 2015

Relasjonsdatabasedesign

Sideordnede spesifikasjoner

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

PLANBESKRIVELSE. Reguleringsendring Bøvrasmoen - Syltøran Surnadal. Innkjøringen til Surnadal Transportsentral

Løsningsforslag matoppskrifter modellering

Mesteparten av kodingen av Donkey Kong skal du gjøre selv. Underveis vil du lære hvordan du lager et enkelt plattform-spill i Scratch.

Publisering 10 Uke 12. Innleveringsdato: Anvendt Makroøkonomi. Side 0

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Ekvivalente stier (Equivalence of Path, EOP) i storm

MATOPPSKRIFTER Obligatorisk oppgave nr. 2 i INF1300 høsten 2010

ALGORITMER OG DATASTRUKTURER

Oppdateringsanomalier Normalformer

INF3100 V2015 Obligatorisk oppgave nr. 1

Delmål/læringsmål (settes på ukeplan)

Sircon People. Utvidelse til WordPress

Hvorfor blir det tull med tall? - grunnleggende tallforståelse

TMA4140 Diskret matematikk Høst 2011 Løsningsforslag Øving 7

MAT1030 Forelesning 30

Uttrykket 2 kaller vi en potens. Eksponenten 3 forteller hvor mange ganger vi skal multiplisere grunntallet 2 med seg selv. Dermed er ) ( 2) 2 2 4

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

Transkript:

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser Dagens tema: Realiseringsalgoritmen (også kalt "grupperingsalgoritmen") fra ORM-diagram til relasjonsskjema Institutt for informatikk INF1300 15.9.2016 Ellen Munthe-Kaas 1

Underliggende idé (forenklet) For hvert begrep: lag en tabell For hver faktatype: lag en tabell Perfekte broer brukes til å bestemme hvordan begrepene skal representeres Entydigheter brukes til å bestemme primærnøkler i tabellene For å få en "penere" database: slå sammen/grupper tabeller med samme primærnøkkel Person( ), Bil( ) eier/eies_av(, ) Person(PersonId) Bil(RegNr) eier/eies_av(personid, RegNr) Person(PersonId) Bil(RegNr) eier/eies_av(personid, RegNr) Person(PersonId) Bil(RegNr, PersonId) INF1300 15.9.2016 Ellen Munthe-Kaas 2

Setningstyper Bro Perfekt bro Minst én entydighetsskranke Faktatype (vi viser bare en binær faktatype her) Minst én entydighetsskranke INF1300 15.9.2016 Ellen Munthe-Kaas 3

Forutsetninger/forberedelser A. Alle lange entydighetsskranker er omformet til korte ved begrepsdannelse B. ORM-diagrammet må være refererbart C. Diagrammet må ikke inneholde synonyme broer: alle broer må ha en entydig begrepsrolle INF1300 15.9.2016 Ellen Munthe-Kaas 4

A. Begrepsdannelse av lange entydighetsskranker erstattes av En lang entydighet er en ekstern entydighet i forkledning (samme som ) INF1300 15.9.2016 Ellen Munthe-Kaas 5

B. Refererbare ORM-diagrammer Intuitivt er et ORM-diagram refererbart hvis alle begreper kan representeres entydig (via perfekte broer) Vi kommer tilbake til hva som skal til for å gjøre et ORM-diagram refererbart INF1300 15.9.2016 Ellen Munthe-Kaas 6

C. Eliminasjon av synonyme broer Bro: Etter begrepsdannelsene: alltid én eller to korte entydighetsskranker Synonym bro: erstattes av entydighetsskranke mangler på begrepsrollen INF1300 15.9.2016 Ellen Munthe-Kaas 7

Realiseringsalgoritmen 1. Hvert begrep gir opphav til en relasjon (tabell) med samme navn som begrepet 2. Finn referansemåte for alle begreper og marker alle broer og faktatyper som er benyttet til dette, som brukt (Referansemåtene blir primærnøkler) 3. Grupper resterende broer til sine respektive begreper (Hver bro gir ett attributt i tabellen) 4. Grupper resterende faktatyper (Hver faktatype blir en fremmednøkkel) 5. Overfør resten av skrankene til relasjonsskjemaet 6. Bestem hvilke referanserelasjoner som skal fjernes INF1300 15.9.2016 Ellen Munthe-Kaas 8

Eksempel INF1300 15.9.2016 Ellen Munthe-Kaas 9

Eksempel med eksplisitte perfekte broer INF1300 15.9.2016 Ellen Munthe-Kaas 10

Steg 1: Fra begrep til tabell 1. Hvert begrep gir opphav til en relasjon (tabell) med samme navn som begrepet Relasjoner: Person, Dag, Klokkeslett, Postkode, Sted, Måling, Temperatur INF1300 15.9.2016 Ellen Munthe-Kaas 11

Steg 2: Valg av referansemåter 2. Finn referansemåte for alle begreper og marker alle broer og faktatyper som er benyttet til dette, som brukt (Referansemåtene blir primærnøkler) Referansemåten til et begrep er definert på neste side Hvis et begrep mangler referansemåte, er ORMdiagrammet ikke refererbart og kan ikke realiseres! INF1300 15.9.2016 Ellen Munthe-Kaas 12

Referansemåten til et begrep Referansemåten til et begrep er enten: navnet på en identifikator knyttet til begrepet med en perfekt bro eller: referansemåten til et annet begrep som er knyttet til begrepet via en 1:1-faktatype med påkrevd rolle eller: for begrepsdannelser, samlingen av referansemåtene til de begrepene som utgjør grunnlaget for begrepsdannelsen (Detaljer følger) INF1300 15.9.2016 Ellen Munthe-Kaas 13

Referansemåte via perfekt bro Referansemåten til Person er PersonId Referansemåten til Postkode er Zip INF1300 15.9.2016 Ellen Munthe-Kaas 14

Referansemåte via 1:1-faktatype For begrepet Sted har vi to mulige referansemåter: Via en perfekt bro til Stedsnavn Via en 1:1-faktatype med påkrevd rolle til Postkode Vi velger f.eks. den perfekte broen; referansemåten til Sted blir da Stedsnavn Alternativt kan vi velge 1:1-faktatypen; da arver Sted referansemåte fra Postkode og får referansemåten Zip INF1300 15.9.2016 Ellen Munthe-Kaas 15

Referansemåte via begrepsdannelse Begrepet Måling er en begrepsdannelse basert på begrepene Dag, Klokkeslett og Sted: 1. Måling har entydige påkrevde roller på dag, på klokkeslett, på sted 2. Det er en ekstern entydighetsskranke over rollene til Dag, Klokkeslett og Sted Referansemåten til Dag er Dato Referansemåten til Klokkeslett er TimeMinuttSekund Referansemåten til Sted er valgt til Stedsnavn En referansemåte til Måling er derfor (Dato, TimeMinuttSekund, Stedsnavn) INF1300 15.9.2016 Ellen Munthe-Kaas 16

Referansemåte via begrepsdannelse Alternativt kunne vi valgt referansemåte til Måling basert på begrepene Dag, Klokkeslett og Person; syntaktisk er det ikke noe i veien for dette, men begrepsmessig er det ikke like naturlig INF1300 15.9.2016 Ellen Munthe-Kaas 17

Referansemåtene blir primærnøkler Referansemåtene blir primærnøkler i de tilhørende relasjonene: Person(PersonId) Dag(Dato) Klokkeslett(TimeMinuttSekund) Postkode(Zip) Sted(Stedsnavn) Måling(Dato, TimeMinuttSekund, Stedsnavn) Temperatur( C) INF1300 15.9.2016 Ellen Munthe-Kaas 18

Status etter steg 2 Alle gjenværende faktatyper er unære eller binære og har minst én kort entydighetsskranke Alle gjenværende broer har kort entydighetsskranke på begrepsrollen I ORM kan man, hvis det er flere alternativer, angi valg av referansemåte med dobbel entydighetsskranke. Under er i tillegg de brukte setningstypene markert med blått (de gjenværende er fortsatt svarte): INF1300 15.9.2016 Ellen Munthe-Kaas 19

Steg 3: Gruppering av broer 3. Grupper resterende broer til sine respektive begreper (Hver bro gir ett attributt i tabellen) Relasjonen Person får attributtet Navn_for: Person(PersonId, Navn_for) Hvis en begrepsrolle er påkrevd, er det ikke tillatt med nullverdier i det tilhørende attributtet Her er begrepsrollen (med navn) ikke påkrevd Vi kan markere at nullverdier er tillatt ved å sette klammer rundt attributtet: Person(PersonId, [Navn_for]) INF1300 15.9.2016 Ellen Munthe-Kaas 20

Steg 4: Gruppering av faktatyper 4. Grupper resterende faktatyper (Hver faktatype blir en fremmednøkkel) I binære faktatyper velges en entydig rolle som gruppererrolle; den andre kalles referanserollen Hvis begge rollene er entydige og en av dem er påkrevd, velges den påkrevde rollen som gruppererrolle Relasjonen til gruppererrollens begrep får en fremmednøkkel til det refererte begrepets relasjon Hvis gruppererrollen er påkrevd, er det ikke tillatt med nullverdier i fremmednøkkelattributtene INF1300 15.9.2016 Ellen Munthe-Kaas 21

Gruppering av binære faktatyper Relasjonen Måling får et attributt Temperatur_er_resultat_av Attributtet Temperatur_er_resultat_av blir fremmednøkkel til relasjonen Temperatur Tilsvarende får Måling attributtet Person_foretok som er fremmednøkkel til relasjonen Person Måling(Dato, TimeMinuttSekund, Stedsnavn, Temperatur_er_resultat_av, Person_foretok) Fremmednøkler: Måling(Temperatur_er_resultat_av) Temperatur( C) Måling(Person_foretok) Person(PersonId) INF1300 15.9.2016 Ellen Munthe-Kaas 22

Begrepsdannelse og fremmednøkler De binære faktatypene som inngår i begrepsdannelser, gir også opphav til fremmednøkler: Måling(Dato, TimeMinuttSekund, Stedsnavn, Temperatur_er_resultat_av, Person_foretok) Fremmednøkler (i tillegg til fremmednøklene på forrige side): Måling(Dato) Dag(Dato) Måling(TimeMinuttSekund) Klokkeslett(TimeMinuttSekund) Måling(Stedsnavn) Sted(Stedsnavn) INF1300 15.9.2016 Ellen Munthe-Kaas 23

Gruppering av 1:1-faktatyper Med to entydige roller kan begge velges som gruppererrolle Hvis én av rollene er påkrevd (som tilfellet er for med kode), bør denne velges På grunn av entydighetsskranken over referanserollen er fremmednøkkelen Postkode_for entydig. I dette tilfellet blir Postkode_for derfor en kandidatnøkkel for Sted. (Vi setter i det videre to streker under primærnøkkelen og én strek under den andre kandidatnøkkelen i Sted.) Sted(Stedsnavn, Postkode_for) Fremmednøkler: Sted(Postkode_for) Postkode(Zip) INF1300 15.9.2016 Ellen Munthe-Kaas 24

Eksterne entydigheter og kandidatnøkler Eksterne entydigheter som ikke inngår i referansemåtene, gir også opphav til kandidatnøkler: I Måling er (Dato, TimeMinuttSekund, Person_foretok) en kandidatnøkkel. Måling(Dato, TimeMinuttSekund, Stedsnavn, Temperatur_er_resultat_av, Person_foretok) INF1300 15.9.2016 Ellen Munthe-Kaas 25

Gruppering av unære faktatyper Relasjonen Person får et boolsk attributt Har_sertifikat: Person(PersonId, [Navn_for], Har_sertifikat) Nullverdier er aldri tillatt for boolske attributter som stammer fra unære faktatyper Rollen i en unær faktatype kan aldri være påkrevd Vi kan klare oss uten unære faktatyper: INF1300 15.9.2016 Ellen Munthe-Kaas 26

Antall attributter i fremmednøklene Merk at en fremmednøkkel kan inneholde mer enn ett attributt. For å illustrere dette, trenger vi et nytt eksempel (som vi bare benytter på denne og neste side): Før steg 4 har vi: Person(PersonId) Gate(Gatenavn) By(Bynavn) Adresse(Gatenavn, Bynavn) Fremmednøkler: Adresse(Gatenavn) Gate(Gatenavn) Adresse(Bynavn) By(Bynavn) INF1300 15.9.2016 Ellen Munthe-Kaas 27

Gruppering av den binære faktatypen I steg 4 skal vi utvide relasjonen Person med attributter som utgjør en fremmednøkkel til Adresse, i henhold til den binære faktatypen Etter steg 4 er Person endret til Person(PersonId, Gatenavn_for, Bynavn_for) Fremmednøkkel: Person(Gatenavn_for, Bynavn_for) Adresse(Gatenavn, Bynavn) Merk at en fremmednøkkel alltid peker ut primærnøkkelen i den refererte relasjonen. INF1300 15.9.2016 Ellen Munthe-Kaas 28

Status etter steg 4 Etter steg 4 ser relasjonsskjemaet slik ut (i tillegg kommer fremmednøkler og en ekstra kandidatnøkkel i Måling den er utelatt under fordi den er litt knotete å illustrere): Person(PersonId, [Navn_for], Har_sertifikat) Dag(Dato) Klokkeslett(TimeMinuttSekund) Postkode(Zip) Sted(Stedsnavn, Postkode_for) Måling(Dato, TimeMinuttSekund, Stedsnavn, Temperatur_er_resultat_av, Person_foretok) Temperatur( C) INF1300 15.9.2016 Ellen Munthe-Kaas 29

Fremmednøkler Person(PersonId, [Navn_for], Har_sertifikat) Dag(Dato) Klokkeslett(TimeMinuttSekund) Postkode(Zip) Sted(Stedsnavn, Postkode_for) Måling(Dato, TimeMinuttSekund, Stedsnavn, Temperatur_er_resultat_av, Person_foretok) Temperatur( C) Fremmednøklene er altså: Sted(Postkode_for) Postkode(Zip) Måling(Dato) Dag(Dato) Måling(TimeMinuttSekund) Klokkeslett(TimeMinuttSekund) Måling(Stedsnavn) Sted(Stedsnavn) Måling(Temperatur_er_resultat_av) Temperatur( C) Måling(Person_foretok) Person(PersonId) INF1300 15.9.2016 Ellen Munthe-Kaas 30

Steg 5: Overføring av skranker 5. Overfør resten av skrankene til relasjonsskjemaet Endel skranker, som ulikhet, delmengde mm., har vi ikke sagt noe om ennå. Vi kommer tilbake til disse i en senere forelesning. INF1300 15.9.2016 Ellen Munthe-Kaas 31

Steg 6: Undertrykkelse 6. Bestem hvilke referanserelasjoner som skal fjernes Person(PersonId, [Navn_for], Har_sertifikat) Dag(Dato) Klokkeslett(TimeMinuttSekund) Postkode(Zip) Sted(Stedsnavn, Postkode_for) Måling(Dato, TimeMinuttSekund, Stedsnavn, Temperatur_er_resultat_av, Person_foretok) Temperatur( C) Ikke alle relasjonene over er like interessante. Dag, Klokkeslett og Temperatur inneholder henholdsvis datoer, tidspunkter og temperaturer - men alle datoer, tidspunkter og temperaturer som er av interesse, forekommer også i Måling, så er det da noe poeng i å ha egne relasjoner/tabeller for disse? Slike relasjoner kan fjernes fra skjemaet (undertrykkes). Vi kommer tilbake til hvilke relasjoner som kan undertrykkes i en senere forelesning. INF1300 15.9.2016 Ellen Munthe-Kaas 32