270 likes | 322 Vues
Relasjonsmodellen og relasjonsalgebra. Nothing is so practical as a good theory Kurt Lewin, 1945. Relasjonsmodellen. Løser mangler ved tidligere databasemodeller Har et sterkt teoretisk grunnlag Grunnlaget ble hovedsakelig lagt av Codd. Problemer med andre modeller.
E N D
Relasjonsmodellen og relasjonsalgebra Nothing is so practical as a good theory Kurt Lewin, 1945
Relasjonsmodellen • Løser mangler ved tidligere databasemodeller • Har et sterkt teoretisk grunnlag • Grunnlaget ble hovedsakelig lagt av Codd
Problemer med andre modeller • Programmerere arbeider på et lavt nivå som krever håndtering av detaljer • Ingen kommandoer for å håndtere flere poster på en gang • Liten støtte for ad-hoc spørringer fra brukerne
Mål ved utvikling av relasjonsmodellen • Datauavhengighet • Logiske og fysiske modeller skal være atskilt • Støtte for forståelse • Modellen skal kunne forstås av både programmere og brukere • Mengdebehandling • Mulig å behandle flere poster samtidig og dermed øke programmererens produktivitet
Komponenter i relasjonsmodellen • Datastrukturer • Integritetsregler • Operatorer • Hensikt: hente, utlede eller endre data
Datastrukturer • Domener • En mengde verdier av samme datatype • Alle lovlige verdier for en attributt • Definerer hvilke sammenlikninger som er lovlige • Bare attributter fra samme domene kan sammenlignes • Domenebegrepet blir sjelden implementert i DBHSet
Datastrukturer • Relasjoner • Er en tabell med n kolonner og m rader • Relasjonens kardinalitet er antall rader • Relasjonens grad er antall kolonner • En relasjonsdatabase er en samling av relasjoner • Ingen eksplisitt kopling mellom tabellene
Strukturer • Primærnøkkel • En unik identifikator for en rad i en relasjon • Kan være sammensatt • Kandidatnøkkel • En attributt som kan velges som primærnøkkel • Alternativ nøkkel • En kandidatnøkkel som ikke ble valgt som primærnøkel • Fremmednøkkel • En attributt i en relasjon som er primærnøkkel for en relasjon (enten en annen eller ved rekursive relasjoner den samme) • Kan være sammensatt
Integritetsregler • Entitetsintegritet • Ingen komponent av primærnøkkelen til en relasjon kan være null • Hver rad i en relasjon er unikt identifisert • Referanseintegritet • En database må ikke inneholde noen fremmednøkkelverdier som ikke matcher • For hver fremmednøkkel må det være en tilsvarende primærnøkkel.
Manipuleringsspråk • QBE Query By Example • (Access-verktøy for spørring) • SQL Structured Query Language • Relasjonsalgebra • Operasjoner som i algebra. • Du må spesifisere både hva og hvordan • Spørreoptimering kan gjennomføres ved å endre rekkefølgen på operasjonene • Relasjons calculus • Du spesifiserer bare hva • Men har vist seg vanskelig å lære
Operasjoner i relasjonsalgebra • Relasjonsalgebra har åtte operasjoner • Restrict* T1:=aksje WHERE pe>15 • Project* T2:=aksje[aksjekode,pe] • Product T3:=aksje TIMES nasjon • Union T4:=aksje_uk UNION aksje_us • Intersect T5:=aksje_uk INTERSECT aksje_landbruk • Difference T6:=aksje MINUS aksje_uk • Join T7:=aksje JOIN nasjon WHERE aksje.nasjkode=nasjon.nasjkode • Divide T8:=personalkompetanse DIVIDE kompbehov • Operasjonene bruker en* eller to relasjoner for å beregne en ny relasjon.
Restrict • Velger rader av en relasjon
Project (projiser) • Velger kolonner fra en relasjon
Produkt • Lager en ny relasjon av alle mulige kombinasjoner av rader fra to andre relasjoner
Union • Lager en ny relasjon som inneholder rader som finnes i en eller begge relasjoner • Duplikatrader fjernes automatisk • Relasjonene må være union kompatible
Intersect (snitt) • Lager en ny relasjon som inneholder rader som eksisterer i begge relasjoner samtidig. • Relasjonene må være union kompatible
Differens • Lager en relasjon som inneholder rader som finnes i den første relasjonen, men ikke i den andre. • Relasjonene må være union kompatible
Join • Lager en ny relasjon av alle kombinasjoner av rader som tilfredsstiller join-betingelsen • A join B where W = Z
Divide • Finnes det en verdi i X-kolonna i A f. eks x1, der y-verdiene i rader med x verdi x1 dekker alle y-verdiene i B? Da er x1 med i A DIVIDE B.
Primitive operatorer • Bare fem operatorer er nødvendig – de andre kan utledes. • Restrict • Project • Product • Union • Difference
Relasjonsalgebra og SQL • Relasjonsalgebra er en standard for å vurdere spørrespråk 1. Essentially, where all columns of A are equal to all columns of B
Relational Calculus –et eksempel Fra Elmasri og Navathe (2000)
Fullstendig relasjonsdatabase • En fullstendig relasjonsdatabase støtter • Strukturer (domener og relasjoner) • Integritetsregler • Et manipuleringsspråk • Mange kommersielle systemer er ikke fullstendige relasjonsdatabaser fordi de ikke støtter domener og integritetsregler • Ordet relasjonsdatabase brukes kanskje for ukritisk
Codd’s krav 1. Informasjonsregelen Alle data må framstå som lagret som verdier i en tabell 2. Regelen om garantert tilgang Hver verdi i databasen må være adresserbar ved å spesifisere navnet på tabellen, navnet på kolonnen og primærnøkkelen for raden den er lagret i. 3. Systematisk behandling av null-verdier Det må være en adskilt representasjon for manglende eller ikke passende data 4. Aktiv on-line katalog over relasjonsmodellen Det skal være en on-line katalog som beskriver relasjonsmodellen.
Codds krav 5. Krav om omfattende språk for datahåndtering Det må finnes et relasjonelt språk som støtter datadefinisjon, datamanipulering, sikkerhet og integritetsbeskrankninger (constraints), samt transaksjonshåndteringsoperasjoner. 6. Regelen om oppdatering av view Databasehåndteringssystemet må kunne oppdatere et hvert view som er teoretisk oppdaterbart. 7. Høynivå innsetting, oppdatering og sletting Systemet må støtte operasjoner som jobber med en mengde rader samtidig. 8. Fysisk datauavhengighet Endringer i lagrings-representasjon eller tilgangsmetoder skal ikke påvirke applikasjonsprogrammer.
Codds krav 9. Logisk datauavhengighet Endringer i databasetabellene som ikke endrer eksisterende informasjon skal ikke påvirke applikasjonsprogrammer 10. Integritetsuavhengighet Integritetsbeskrankninger (constraints) skal være en del av databasedefinisjonen heller enn en del av applikasjonsprogrammene. Det må være mulig å endre integritetsbeskrankningene uten å endre eksisterende applikasjonsprogrammer. 11. Distribusjonsuavhengighet Innføring av et distribuert databasehåndteringssystem (DBMS) eller omfordeling av eksisterende data skal ikke ha noen innvirkning på eksisterende applikasjoner. 12. Anti-omgåelsesregelen Det må ikke være mulig å bruke et interface som gir tilgang til enkeltrader for å omgå sikkerhets eller integritetsbeskrankninger.
Codds regel nr 0 • Et relasjonsdatabasehåndteringssystem må kunne håndtere databasene utelukkende ved hjelp av sine relasjonelle muligheter. • Et DBMS er dermed enten helt relasjonelt eller så er det ikke relasjonelt.