INF1300 Introduksjon til databaser

Slides:



Advertisements
Liknende presentasjoner
GoOnline XP publisering Hvordan komme i gang med GoOnline XP. Denne presentasjonen tar deg steg for steg gjennom oppsett av nettsted med bruk av GoOnline.
Advertisements

Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
v/Tormod Engebu, IKAVA KDRS 13. november 2013
LC238D Datamodellering og databaser Else Lervik, september 2012 Forelesning 6, Uke 39 Objektorientering i ER-modeller.
Veiledning i gevinstrealisering ved innføring av elektronisk handel
Klikk Aktiver redigering i meldingsfeltet,
Powerpoint, noen kreative tips v/ Terje Høiland april 2007
Java database persistence framework.  SELECT by FROM postnr AS p WHERE ( SELECT DISTINCT postnr FROM addr AS a WHERE user.adrId = a.Id ) = p.postnr;
Databaseteori.
1 Kap 04 Datamodellering. 2 Datamodellering -Et språk for å analysere og beskrive virkeligheten. -En metode for å beskrive naturlige sammenhenger i data.
Normalformer – avleggs?
Objektorientert programmering i PHP del 2
Prototyping & Use Case Software Engineering Gruppe
Åpne prinsippskissen for å se sammenhengen i avviksbehandlingen. Som fellesbruker har du kun mulighet til å registrere (ikke behandle) avviksmeldinger.
IS-102 Klassedefinisjoner
Java Server Faces (JSF) en introduksjon Frode Eika Sandnes.
Databasehåndtering med MySQL
Eksempel AOA (Activity On Arc)
Normalisering Framstillingen avviker noe fra læreboka,
Se ellers læreboka, kap , side
LC238D Datamodellering og databaser Else Lervik, september 2012 Forelesning 6, Uke 39 Objektorientering i ER-modeller.
Siste forelesning ER/EER-modellering
In 135 Datamodellering og databaser Introduksjon, Enkeltentiteten, Informasjon Ola Bø.
Om øvelse 9 Vedlikehold av data Databaser. Øvelse 9 I øvelse 8 så vi på: –Registrering av informasjon om hjelpere To små utvidelser av øvelse 8: –Endring.
LC238D Datamodellering og databaser Else Lervik, september 2011 Forelesning 6, Uke 38 Objektorientering i ER-modeller.
Komplekse tall Naturlige tall
Kap 04 Datamodellering. Datamodellering -Et språk for å analysere og beskrive virkeligheten. -En metode for å beskrive naturlige sammenhenger i data som.
Eksempelet forutsetter at pasient allerede er valgt.
Kjell Arne Iversen, Thore Nilsen
INF 295 forelesning 14 - kap 8 Disjunkt mengde ADT Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 16 - kap 9 Minimalt spenntre og korteste vei i grafer Hans Fredrik Nordhaug (Ola Bø)
Structured Query Language Kræsj-kurs
ER-modellen, notasjon ENTITETS- Attributter TYPE Relasjon
Eksempel på SQL ”SQL-setninger” har en struktur som likner på ”naturlig språk”, med ”verb, subjekter og adjektiver”. SQL-setningene begynner alltid med.
DATABASE: Oppgave 2 et medlemsregister for en idrettsklubb med flere idrettsgrener (fotball, håndball, osv). klubben ønsker å lagre informasjon om medlemmenes.
Introduksjon I126 Databaser og datamodellering Høsten 2000 Institutt for informatikk Universitet i Bergen.
Hopp til første side KSDP steg 5 Legg til totale rollebeskrankninger, og se etter logiske utledninger.
INF 4130 Eksamen 2008 Gjennomgang.
Skjemaendringer i systemer bestående av XML-data i relasjonsdatabaser Høgskolen i Gjøvik Master i Medieteknikk, Marianne Brattrud.
Kapping av plater Mål: Vi skal lage komponenter for en møbelfabrikk ut fra standardiserte plater på 12 x 24 dm. Komponentene har lengde og bredde oppgitt.
Se ellers læreboka, kap , side
Introduksjon Pensum: Olsen, K.A. The Internet, the Web and eBusiness, Formalizing applications for the real world, Scarecrow Press, 2005.
Bompasseringer Mål: Slå sammen data om bompasseringer fra mange bomselskap. Sende ut en samlefaktura til hver bileier.
HUMIT1731 Hypermedier Introduksjon til XSL Transformation (XSLT)
Inf1000 (Uke 5) Arrayer, filer og tekst
Byggeklosser i UML klassediagram
Korteste vei. LOG530 Distribusjonsplanlegging 2 2 Ofte står en overfor ønsket om å finne korteste kjørerute fra et gitt utgangspunkt til et ønsket bestemmelsessted.
ORIA - alt i ett søk!. Hva er ORIA? Det er en søketjeneste som gjør det enklere å finne fram i alt biblioteket har tilgjengelig, både trykt og online.
MAT0100V Sannsynlighetsregning og kombinatorikk Ørnulf Borgan Matematisk institutt Universitetet i Oslo Betinget sannsynlighet og uavhengige hendelser.
Bompasseringer Mål: Slå sammen data om bompasseringer fra mange bomselskap. Sende ut en samlefaktura til hver bileier.
Kom i gang med Python Pål Hellesnes SYSTEMUTVIKLER
Oppgavestruktur <Fag> <Navn> Institutt for statsvitenskap
INF5110 – 23. april, 2013 Svar på noen oppgaver til kap
Agenda: Introduksjon og repetisjon
MAT0100V Sannsynlighetsregning og kombinatorikk
Bruksanvisning for Støykalkulator UPN
Utvidet ledergruppe Instituttstyre Instituttråd ?
INF1300 Introduksjon til databaser
INF1300 Introduksjon til databaser
INF1300 Introduksjon til databaser
MAT0100V Sannsynlighetsregning og kombinatorikk
MAT0100V Sannsynlighetsregning og kombinatorikk
Modul 1 Modeller B – Samarbeid.
Modul 1 Modeller B – Samarbeid.
Suksesskriterier for Oppstartsbedrift: Definisjoner for Intervju
STEP-diagram: Rømmingshendelse ved lokasjon …………………………., dato: ……………
Dybdelæring – regneark B – Samarbeid
Utskrift av presentasjonen:

INF1300 Introduksjon til databaser UNIVERSITETET I OSLO INF1300 Introduksjon til databaser Dagens tema: Realiseringsalgoritmen – fra ORM-diagram til relasjonsskjema © Institutt for informatikk INF1300 - 22.9.2017 - Arild Waaler

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 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 - 22.9.2017 - Arild Waaler

Setningstyper (repetisjon) Bro Perfekt bro Faktatype (vi viser bare en binær faktatype her) Minst én entydighetsskranke Minst én entydighetsskranke INF1300 - 22.9.2017 - Arild Waaler

Forutsetninger/forberedelser Alle lange entydighetsskranker er omformet til korte ved begrepsdannelse ORM-diagrammet må være representerbart Diagrammet må ikke inneholde synonyme broer: alle broer må ha en entydig begrepsrolle INF1300 - 22.9.2017 - Arild Waaler

A. Begrepsdannelse av lange entydighetsskranker En lang entydighet er en ekstern entydighet i forkledning erstattes av INF1300 - 22.9.2017 - Arild Waaler

B. Representerbare ORM-diagrammer Intuitivt er et ORM-diagram representerbart hvis alle begreper kan representeres entydig (via perfekte broer) Vi kommer tilbake til hva som skal til for å gjøre et ORM-diagram representerbart INF1300 - 22.9.2017 - Arild Waaler

C. Eliminasjon av synonyme broer Etter begrepsdannelsene: alltid én eller to korte entydighetsskranker Synonym bro: entydighetsskranke mangler på begrepsrollen erstattes av Forbered et eksempel på synonym bro! (Håndtegnes under forelesningen) INF1300 - 22.9.2017 - Arild Waaler

Realiseringsalgoritmen Hvert begrep gir opphav til en relasjon (tabell) med samme navn som begrepet For hvert begrep, velg en representasjon. Marker alle setningstyper som inngår i disse, som brukt (Valgte representasjoner blir primærnøkler) Behandle gjenværende broer (Hver bro gir ett attributt i tabellen til det tilhørende begrepet) Behandle gjenværende faktatyper (Hver faktatype blir en fremmednøkkel i tabellen til ett av de tilhørende begrepene) Overfør resten av skrankene til relasjonsskjemaet Bestem hvilke undertrykkbare relasjoner som skal fjernes INF1300 - 22.9.2017 - Arild Waaler

Eksempel INF1300 - 22.9.2017 - Arild Waaler

Eksempel – med eksplisitte perfekte broer INF1300 - 22.9.2017 - Arild Waaler

Steg 1: Fra begrep til relasjon Hvert begrep gir opphav til en relasjon (tabell) med samme navn som begrepet Relasjoner: Person, Dag, Klokkeslett, Postkode, Sted, Måling, Temperatur INF1300 - 22.9.2017 - Arild Waaler

Steg 2: Valg av representasjon For hvert begrep, velg en representasjon. Marker alle setningstyper som inngår i disse, som brukt (Valgte representasjoner blir primærnøkler) Representasjonen til et begrep er definert på neste side Hvis det ikke er mulig å velge en representasjon for et begrep, kan ikke ORM-diagrammet realiseres INF1300 - 22.9.2017 - Arild Waaler

Representasjonen til et begrep Representasjonen til et begrep er enten: navnet på en representasjonstype (verditype) knyttet til begrepet med en perfekt bro eller: representasjonen til et annet begrep som er knyttet til begrepet via en 1:1-faktatype med påkrevd rolle eller: for begrepsdannelser, samlingen av representasjonene til de begrepene som utgjør grunnlaget for begrepsdannelsen (Detaljer følger) INF1300 - 22.9.2017 - Arild Waaler

Representasjon via perfekt bro Representasjonen til Person er PersonId Representasjonen til Postkode er Zip INF1300 - 22.9.2017 - Arild Waaler

Representasjon via 1:1-faktatype For begrepet Sted har vi to mulige representasjoner: Via en perfekt bro til Stedsnavn Via en 1:1-faktatype med påkrevd rolle til Postkode Vi velger f.eks. den perfekte broen; representasjonen til Sted blir da Stedsnavn Alternativt kan vi velge 1:1-faktatypen; da arver Sted representasjon fra Postkode og får representasjonen Zip INF1300 - 22.9.2017 - Arild Waaler

Representasjon via begrepsdannelse Begrepet Måling er en begrepsdannelse basert på begrepene Dag, Klokkeslett og Sted: Måling har entydige påkrevde roller på dag, på klokkeslett, på sted Det er en ekstern entydighetsskranke over rollene til Dag, Klokkeslett og Sted Representasjonen til Dag er Dato Representasjonen til Klokkeslett er TimeMinuttSekund Representasjonen til Sted er valgt til Stedsnavn Måling kan derfor representeres ved (Dato, TimeMinuttSekund, Stedsnavn) INF1300 - 22.9.2017 - Arild Waaler

Representasjon via begrepsdannelse Alternativt kunne vi valgt å representere Måling via begrepene Dag, Klokkeslett og Person; syntaktisk er det ikke noe i veien for dette, men begrepsmessig er det ikke like naturlig INF1300 - 22.9.2017 - Arild Waaler

Representasjonene blir primærnøkler De valgte representasjonene 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 - 22.9.2017 - Arild Waaler

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 representasjon med dobbel entydighetsskranke. Under er i tillegg de brukte setningstypene markert med blått (de gjenværende er fortsatt svarte): INF1300 - 22.9.2017 - Arild Waaler

Steg 3: Resterende broer Behandle gjenværende broer (Hver bro gir ett attributt i tabellen til det tilhørende begrepet) 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 - 22.9.2017 - Arild Waaler

Steg 4: Behandling av faktatyper Behandle gjenværende faktatyper (Hver faktatype blir en fremmednøkkel i tabellen til ett av de tilhørende begrepene) I binære faktatyper velges en entydig rolle som eierrolle; den andre kalles referanserollen Hvis begge rollene er entydige og en av dem er påkrevd, velges den påkrevde rollen som eierrolle Relasjonen til eierrollens begrep får en fremmednøkkel til det refererte begrepets relasjon Hvis eierrollen er påkrevd, er det ikke tillatt med nullverdier i fremmednøkkelattributtene INF1300 - 22.9.2017 - Arild Waaler

Behandling av faktatyper Relasjonen Måling får et attributt Person_foretok Attributtet Person_foretok blir fremmednøkkel til relasjonen Person Tilsvarende får Måling attributtet Temperatur_er_resultat_av som er fremmednøkkel til relasjonen Temperatur Måling(Dato, TimeMinuttSekund, Stedsnavn, Temperatur_er_resultat_av, Person_foretok) Fremmednøkler: Fra Måling(Temperatur_er_resultat_av) til Temperatur(°C ) Fra Måling(Person_foretok) til Person(PersonId) INF1300 - 22.9.2017 - Arild Waaler

Begrepsdannelse og fremmednøkler Faktatyper 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): Fra Måling(Dato) til Dag(Dato) Fra Måling(TimeMinuttSekund) til Klokkeslett(TimeMinuttSekund) Fra Måling(Stedsnavn) til Sted(Stedsnavn) INF1300 - 22.9.2017 - Arild Waaler

Representasjon via 1:1-faktatype Med to entydige roller kan begge velges som eierrolle 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: Fra Sted(Postkode_for) til Postkode(Zip) INF1300 - 22.9.2017 - Arild Waaler

Eksterne entydigheter og kandidatnøkler Eksterne entydigheter som ikke inngår i de valgte representasjonene, 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 - 22.9.2017 - Arild Waaler

Behandling 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 - 22.9.2017 - Arild Waaler

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: Fra Adresse(Gatenavn) til Gate(Gatenavn) Fra Adresse(Bynavn) til By(Bynavn) INF1300 - 22.9.2017 - Arild Waaler

Behandling av den gjenværende faktatypen I steg 4 skal vi utvide relasjonen Person med attributter som utgjør en fremmednøkkel til Adresse, i henhold til faktatypen Etter steg 4 er Person endret til Person(Personid, Gatenavn_for, Bynavn_for) Fremmednøkkel: Fra Person(Gatenavn_for, Bynavn_for) til Adresse(Gatenavn, Bynavn) Merk at en fremmednøkkel alltid peker ut primærnøkkelen i den refererte relasjonen INF1300 - 22.9.2017 - Arild Waaler

Status etter steg 4 Etter steg 4 ser skjemaet 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 - 22.9.2017 - Arild Waaler

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å: Fra Sted(Postkode_for) til Postkode(Zip) Fra Måling(Dato) til Dag(Dato) Fra Måling(TmineMinuttSekund) til Klokkeslett(TimeMinuttSekund) Fra Måling(Stedsnavn) til Sted(Stedsnavn) Fra Måling(Temperatur_er_resultat_av) til Temperatur(°C) Fra Måling(Person_foretok) til Person(PersonId) INF1300 - 22.9.2017 - Arild Waaler

Steg 5: Overføring av skranker 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 - 22.9.2017 - Arild Waaler

Steg 6: Undertrykkelse Bestem hvilke undertrykkbare relasjoner 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 foreslesning. INF1300 - 22.9.2017 - Arild Waaler