Kap 02 Relasjonsdatabaser

Slides:



Advertisements
Liknende presentasjoner
Ny ordlyd på rapportene i avdelingen og nye rutiner for registrering av skyteaktiviteter For nye brukere: Du må først være registrert med en e-postadresse.
Advertisements

Rutearket i Excel Et regneark består av en mengde ”celler” med innhold. Hver celle er plassert i en bestemt kolonne (her: C) og en bestemt rad (her: 5).
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.
Tilpasse spørringer i RT Kolonnetilpassninger Egne spørringer Legge spørring til forside Legge spørring til Dashboard.
Vesentlige kapasitetsendringer i basisperioden 15. august 2011 George Nicholas Nelson.
Tabeller av objekter Klassen ArrayList
SuperOffice - Visma Global ERP link - Tilbud/Ordre SuperOffice - Visma Global integrasjonen består av 3 produkter. ERP link SuperOffice - Visma Global.
Høgskolen i Oslo Webprogrammering Tilstandsbevaring Sessions og cookies.
Hvordan etablere nettbutikk med GoOnline Commerce
VM Fotballen.eu har foran VM i fotball 2010 fått på plass et VM-studio utenom det vanlige. Det du ikke finner om VM her er ikke verdt.
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
LC238D Datamodellering og databaser Else Lervik, september 2012 Forelesning 6, Uke 39 Objektorientering i ER-modeller.
Kap 01 Generelt om databaser
Velkommen som spiller i aksjespillet.
Mange til mange sammenhengen
Høgskolen i Oslo Webprogrammering SQL og databaser del 3.
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;
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Normalisering Formell teori for å forbedre relasjonsskjema design, unngå redundans. 2 hovedretninger : Syntese og Dekomposisjon Basert på funksjonelle.
Normalisering og andre modelleringsmetoder
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?
1 Arbeidsgruppens forslag til klassifikasjon av læringsobjekter Berit Rolandsen, 2003.
IS-102 Klassedefinisjoner
Oppgave 01 1NFFørste normalform ä Hver tabell skal ha en fast postlengde ä Det skal være kun en post-type pr tabell ä Hver post skal ha et eget identifikasjons-felt.
Gjenfinningssystemer og verktøy II
Databasehåndtering med MySQL
Eksempel AOA (Activity On Arc)
Relasjonsmodellen og relasjonsalgebra
Systemmodeller In 140 Sommerville kap. 7. Mål Forstå hensikten med kontekstmodell Forstå ideene bak –oppførselsmodellering –datamodellering –objektmodellering.
Dekningsproblemer. LOG530 Distribusjonsplanlegging 2 2 Det skal opprettes veistasjoner som skal betjene 8 distrikter. De 4 aktuelle lokaliseringene for.
Normalisering Framstillingen avviker noe fra læreboka,
Se ellers læreboka, kap , side
In 135 Datamodellering og databaser Introduksjon, Enkeltentiteten, Informasjon Ola Bø.
LC238D Datamodellering og databaser Else Lervik, september 2011 Forelesning 6, Uke 38 Objektorientering i ER-modeller.
Standard databasespråk
1 Kap 02 Relasjonsdatabaser. Data-organisering - Manuelt Ansatte Pasienter Utstyr Økonomi Avdelinger RøntgenOnkologisk.
SQLHiA Kap 12 Dynamisk SQL. SQLHiA SQLHiA FlerbrukersystemClient / Server Database DBMS Application_2 SQL-Request Data Application_3 Application_1 ClientServer.
1 Kap 05 Modellator Datamodelleringsverktøy. Modellator - Enkelt eksempel EntitetRelasjon.
Kap 04 Datamodellering. Datamodellering -Et språk for å analysere og beskrive virkeligheten. -En metode for å beskrive naturlige sammenhenger i data som.
SQLHiA Transaksjoner. SQLHiA TransaksjonDefinisjon En transaksjon er en serie av en eller flere SQL-statement som til sammen danner en logisk enhet. Med.
Kap 02 Tabeller / Tabelloperasjoner. Enkeltvariable Les inn nedbørmengde for årets 12 måneder: Les n1 Les n2 … Les n12 n1 n2 n12.
Hvordan uttrykke krav Kapittel 4.4. Innledning Målet er å samles rundt ett entydig språk som ikke kan misforståes eller feiltolkes. Gjør sporbarheten.
IT for Medisinsk sekretær Kai Hagali. Hva er fletting  Koble en database(Tabell) til ett dokument  En eller flere mottakere  Annet bruk en dokument.
Nytt kursadministrasjonsverktøy. Internettsidene for potensiell deltager.
Structured Query Language Kræsj-kurs
Skjema/Forms HTML II IT og læring 2/20 november 2001.
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.
Andre funksjoner. Her kommer en beskrivelse av søkefunksjoner, knapper og annen funksjonalitet. 2.
Introduksjon I126 Databaser og datamodellering Høsten 2000 Institutt for informatikk Universitet i Bergen.
VOD. VOD- Vegobjektdialog Åpne eksisterende vegobjekt Nytt vegobjekt.
Linq To SQL Fagdag 20. November DataContext  DataContexten er mappingen mot databasen –Generer objekter for alle entiteter (tabeller), med properties.
Skjemaendringer i systemer bestående av XML-data i relasjonsdatabaser Høgskolen i Gjøvik Master i Medieteknikk, Marianne Brattrud.
Eksempel: Sletting ved tynn indeks Slett post med a = 60 –Ingen endring nødvendig i indeksen. Slett post med a = 40 –Den første posten i blokken er blitt.
Termbaser Lars Nygaard. Termbaser Database over begreper Innhold –Definisjoner –Oversettelser –Leksikalske relasjoner –Eksempler.
Se ellers læreboka, kap , side
Kampanje februar 2014 Kampanjeprodukter mobil Kampanjeprodukter MBB
Freenet A Distributed Anonymous Information Storage and Retrieval System.
Kermit kysser Askepott. Kysser(kermit,askepott) Første ordens predikatlogikk relasjonssymbol individkonstanter.
Mer avansert kryptering Mål: Kode et dokument slik at det blir uleselig for de som ikke har kodenøkkelen.
Bompasseringer Mål: Slå sammen data om bompasseringer fra mange bomselskap. Sende ut en samlefaktura til hver bileier.
Kapittel 2 – Tilbud og etterspørsel. I kapittel 2 skal du lære: Hvilke forhold som bestemmer etterspørselen etter en vare Hvilke forhold som bestemmer.
Bompasseringer Mål: Slå sammen data om bompasseringer fra mange bomselskap. Sende ut en samlefaktura til hver bileier.
Datakortet – Modul 3 Word 2003, Kap Modul 3.
Eksempel: Sletting ved tynn indeks
INF1300 Introduksjon til databaser
Oktober 2014 Hilde T Lauvset Rafaelsen
Utskrift av presentasjonen:

Kap 02 Relasjonsdatabaser I dette kapitlet skal vi benytte kunnskapene våre fra de foregående kapitlene til å utarbeide ulike diskrete sannsynlighetsmodeller. For en gitt oppgave vil det da kunne være hensiktsmessig å finne ut om betingelsene er oppfylt for å kunne benytte en eller flere av disse modellene med tilhørende ferdige utarbeidede metoder. Simuleringer knyttet til dette kapitlet finner du her.

Tabeller Dataene i en relasjonsdatabase er plassert i to-dimensjonale tabeller. En relasjons-database består av tabeller. Definering av begrepet tabell.

Eksempel på innhold i en database Views Procedures Rules Tables Datatypes Indexes La oss se litt nærmere på selve databasen der dataene ligger lagret. I en relasjons-database ligger alle dataene lagret i såkalte tabeller. Dette er to-dimensjonale arrays bestående av rader og kolonner. Views: Virtuelle tabeller. Dataene kan være deler av tabell-data eller en sammenslåing av data fra flere relaterte tabeller. Indexes: Hjelpetabeller for raskere oppslag i tabeller. Procedures: Ferdigkompilerte sekvenser av SQL-statement. Triggers: Ferdigkompilerte rutiner som eksekveres under gitte forutsetninger. Rules: Regler for kolonne-verdier (eks: Datoer skal være innen 1-31. Datatypes: Opplysninger om datatyper i de enkelte kolonner (eks: Number) Defaults: Kolonne-verdier hvis ingenting annet er spesifisert (eks: Dagens dato hvis ingenting annet er spesifisert) Defaults Triggers

Database / Tabell / Rad / Kolonne 5 Nilsen 5002 2 Olsen 6400 1 Hansen 9000 4 Berg 6400 Rad Post Record En del viktige begrep: - Database - Tabell - Rad / Post / Record - Kolonne / Felt Kolonne Felt

Hva er en relasjons-database ? En relasjons-database er en database hvor alle dataene er samlet i to-dimensjonale tabeller og hvor tabellene eventuelt står i en 1:1 eller 1:n relasjon til hverandre. Tabellene er inndelt i rader (records) og kolonner (felter). n 1 Nr Navn PNr 5 Nilsen 4890 7 Olsen 6400 3 Hansen 4890 8 Karlsen 4890 PNr Sted 4890 Grimstad 5002 Bergen 6400 Molde Eksempel på to tabeller Person og Adr som det eksisterer en relasjon mellom. Relasjonen er innebygget i tabellen Person (kolonnen PNr). Relasjonen kalles en 1:n (leses: en til n relasjon), fordi det til hver rad (post) i tabellen Adr finnes 0, 1 eller flere rader (poster) i tabellen Person. Omvendt vil det til hver rad (post) i tabellen Person finnes nøyaktig en rad (post) i tabellen Adr.

Viktige fortrinn ved relasjons-database Reduserer lagring av redundante data. Data kan lett omorganiseres og kombineres i nye relasjoner, de er ikke låst til faste relasjoner pga måten de er lagret på. Data kan lett oppdateres i det disse vil bli oppdatert på et minimum antall steder. Reduserer behovet for disk-plass. Noen hovedgrunner til at relasjons-database idag er en standard blant ulike database-typer.

3 sentrale gjenfinnings-operasjoner i Codd’s relasjons-algebra Selection Ekstraherer alle rader fra en tabell, hvor radene oppfyller gitte kriterier. Projection Ekstraherer en eller flere kolonner fra en tabell. Join Ekstraherer kolonner fra flere relaterte tabeller. Selection Projection Join Gjenfinnings-operasjoner i relasjons-databaser.

Normal-former SNr Navn PNr Sted VNr Pris Mg VNr Pris Mg VNr Pris Mg 5 Nilsen 5002 Bergen 8 500 30 2 Olsen 6400 Molde 1 200 20 3 400 10 1 Hansen 9000 Tromsø 5 300 50 8 500 40 4 Berg 6400 Molde 1 200 70 3 400 50 5 300 20 SNr Selger-nummer Navn Selger-navn PNr Post-nummer Sted Post-sted VNr Vare-nummer Pris Vare-pris Mg Vare-mengde Her har vi startet med en stor tabell hvor vi har samlet opplysninger om hver enkelt selger og de varer som denne selgeren har solgt. Tabell-formen inneholder flere svakheter: - Et varierende antall kolonner for hver enkelt selger - Datadublering Eks: 6400 Molde er gjentatt flere ganger Vareprisen på vare nr 8 er gjentatt flere ganger - Vanskelig å programmere gjenfinning og oppdatering i tabellen.

1NF Første normalform Hver tabell skal ha en fast postlengde Det skal være kun en post-type pr tabell Hver post skal ha et eget identifikasjons-felt ( ID ) SNr Navn PNr Sted VNr Pris Mg 5 Nilsen 5002 Bergen 8 500 30 2 Olsen 6400 Molde 1 200 20 2 Olsen 6400 Molde 3 400 10 1 Hansen 9000 Tromsø 5 300 50 1 Hansen 9000 Tromsø 8 500 40 4 Berg 6400 Molde 1 200 70 4 Berg 6400 Molde 3 400 50 4 Berg 6400 Molde 5 300 20 Tabellen fra foregående side er endret slik at samtlige rader (records) har samme antall kolonner. Tabellen sies å være på såkalt første normalform (1NF) når de tre kravene nevnt ovenfor er oppfylt. I vår selger-tabell vist ovenfor er disse tre kravene oppfylt. SNr og VNr utgjør tilsammen ID. Ulemper: - Opplysninger om hver enkelt selger må gjentas flere ganger, en gang for hver vare denne selgeren selger. - Fortsatt datadublering.

2NF Andre normalform Databasen må være på 1.normalform Deler av ID skal ikke kunne være determinantfelt for andre felt, dvs deler av ID skal ikke entydig kunne bestemme verdier i et annet felt SNr Navn PNr Sted 5 Nilsen 5002 Bergen 2 Olsen 6400 Molde 1 Hansen 9000 Tromsø 4 Berg 6400 Molde VNr Pris 8 500 1 200 3 400 5 300 SNr VNr Mg 5 8 30 2 1 20 2 3 10 1 5 50 1 8 40 4 1 70 4 3 50 4 5 20 En tabell sies å være på såkalt andre normalform (2NF) når de to kravene nevnt ovenfor er oppfylt. Tabellen vist på foregående side oppfyller ikke 2NF. Hvis vi derimot splitter tabellen i tre slik som vist ovenfor, så vil hver enkelt av disse tre tabellene være på 2NF. Vi skal seinere gå nærmere inn på hvordan en slik oppsplitting gjøres. Vi har fortsatt en del ulemper med tabellene ovenfor selv om disse oppfyller 2NF, nemlig datadublering ved at sammenhengen mellom PNr (PostNumer) og Sted er nevnt flere ganger (6400 Molde er nevnt to ganger).

3NF Tredje normalform Databasen må være på 2.normalform Det må ikke eksistere noen funksjonelle avhengigheter mellom egenskapsfeltene (felter utenom ID-feltene) SNr Navn PNr 5 Nilsen 5002 2 Olsen 6400 1 Hansen 9000 4 Berg 6400 VNr Pris 8 500 1 200 3 400 5 300 SNr VNr Mg 5 8 30 2 1 20 2 3 10 1 5 50 1 8 40 4 1 70 4 3 50 4 5 20 En tabell sies å være på såkalt tredje normalform (3NF) når de to kravene nevnt ovenfor er oppfylt. Tabellen Selger vist på foregående side oppfyller ikke 3NF. Hvis vi derimot splitter tabellen i to (Selger og Adr) slik som vist ovenfor, så vil hver enkelt av disse tabellene være på 3NF. Det finnes flere normalformer enn de tre vi til nå har nevnt, men vi skal ikke gå nærmere inn på disse her. PNr Sted 5002 Bergen 6400 Molde 9000 Tromsø

3NF Tredje normalform Adr Selger Vare PNr Sted SNr Navn PNr 5002 Bergen 6400 Molde 9000 Tromsø SNr Navn PNr 5 Nilsen 5002 2 Olsen 6400 1 Hansen 9000 4 Berg 6400 VNr Pris 8 500 1 200 3 400 5 300 Salg SNr VNr Mg 5 8 30 2 1 20 2 3 10 1 5 50 1 8 40 4 1 70 4 3 50 4 5 20 Vår opprinnelige selger-tabell er blitt splittet i fire deler. Hver av de fire tabellene oppfyller 3NF. Mellom disse tabellene eksisterer det tre 1:n relasjoner.

Modellator - Notasjon Kråkefot Selger Adr Uten attributter Selger Adr I Modellator kan relasjoner tegnes på ulike vis. Ovenfor vises 1:n relasjon ved hjelp av såkalte kråkeføtter. Tabellene er vist med og uten attributter. Selger Adr Med attributter SNr Navn *PNr PNr Sted

Modellator Selger Adr Kråkefot Selger Adr Gaffel Selger Adr Pil Selger Pil / Dobbeltpil Selger 1..1 Adr Antall Ulike representasjoner av 1:n relasjoner i Modellator. 0..m Selger Adr Niam-basert Selger Adr Kan / Må

Generell metode for tilordning av 3NF-tabeller (0) Vi går tilbake til vår opprinnelige Selger-tabell på 1NF form. Følgende felter er med i denne 1NF-tabellen ( ID er markert med * ). * SNr Selger-nummer Navn Selger-navn PNr Post-nummer Sted Post-sted * VNr Vare-nummer Pris Vare-pris Mg Vare-mengde Vi skal se litt nærmere på en metode for å transformere en 1NF tabell via 2NF over til 3NF. Vi starter med vår 1NF selger-tabell. Denne tabellen består av 7 kolonner. To av kolonnene, SNr og VNr danner til sammen ID (markert med *)

Generell metode for tilordning av 3NF-tabeller (1) 1. Vi tegner inn relasjoner (piler) fra de feltene som entydig bestemmer verdien i andre felter til disse andre feltene. Total (1NF) * SNr Navn PNr Sted * VNr Pris Mg Vi tegner inn relasjoner (vha piler) fra de feltene som entydig bestememer verdien i andre felter.

Generell metode for tilordning av 3NF-tabeller (2) 2. Lag en ny tabell ved å plukke ut alle *-feltene samt alle feltene som er funksjonelt avhengig av alle disse *-feltene. Denne nye tabellen vil være på 2NF. Salg (2NF) * SNr * VNr Mg Lag en ny tabell ved å plukke ut alle *-feltene samt alle feltene som er funksjonelt avhengig av disse *-feltene. Denne nye tabellen vil være på 2NF.

Generell metode for tilordning av 3NF-tabeller (3) 3. Hvis det i 1NF-tabellen finnes felt som er avhengig av en ekte delmengde av *-feltene, plukkes disse ut sammen med tilhørende *-felt i egne tabeller. Disse nye tabellene vil være på 2NF. Selger (2NF) Vare (2NF) * SNr Navn PNr Sted * VNr Pris Hvis det i 1NF tabellene finnes felt som er avhengig av en ekte delmengde av *-feltene, plukkes disse ut sammen med tilhørende *-felt i egne tabeller. Disse nye tabellene vil være på 2NF.

Generell metode for tilordning av 3NF-tabeller (4) 4. Hvis det i noen av våre 2NF-tabeller ( Salg, Selger, Vare ) finnes ikke-*-felter (ikke ID-felter) som entydig bestemmer verdier i andre ikke-*-felter, plukkes disse nevnte feltene ut i egne tabeller. I vårt eksempel gjelder dette tabellen Selger (PNr bestemmer Sted). Tabellen Selger splittes i to: Tabellene Selger og Adr (Adresse). Selger-tabellen beholder informasjon om PNr. ID i disse nye tabellene vil være de feltene som entydig bestemmer andre felt-verdier. Alle tabellene vil nå være på 3NF. Selger (3NF) Adr (3NF) * SNr Navn PNr * PNr Sted Hvis det i noen av våre 2NF-tabeller (Salg, Selger, Vare) finnes ikke-*-felter (ikke ID-felter) som entydig bestemmer verdier i andre ikke-*-felter, plukkes disse nevnte feltene ut i egne tabeller. I vårt eksempel gjelder dette tabellene Selger(PNr bestemmer Sted). Tabellen Selger splittes i to: Tabellene Selger og Adr (Adresse). Selger-tabellen beholder informsjonen PNr. ID i disse nye tabellene vil være de feltene som entydig bestemmer andre felt-verdier. Alle tabellene vil nå være på 3NF.

Generell metode for tilordning av 3NF-tabeller (5) Alle våre 4 tabeller ( Selger, Adr, Vare, Salg ) vil nå oppfylle 3NF. Selger (3NF) Adr (3NF) * SNr Navn PNr * PNr Sted Salg (3NF) Vare (3NF) Alle våre 4 tabeller (Selger, Adr, Vare, Salg) vil nå oppfylle 3NF. * SNr * VNr Mg * VNr Pris

Generell metode for tilordning av 3NF-tabeller (6) Følgende relasjoner gjelder mellom våre 4 tabeller ( Selger, Adr, Vare, Salg ) vil nå oppfylle 3NF. Selger Adr Vare * SNr Navn PNr * PNr Sted * VNr Pris Figuren viser relasjonene mellom de 4 3NF-tabellene Selger, Adr, Vare, Salg. Relasjons-informasjonen er inneholdt i tabellene slik at pilene (som skal illustrere relasjonene) ikke inneholder noen ny informasjon. Salg * SNr * VNr Mg