Databaser & objektorientering.



Like dokumenter
Databaser: Relasjonsmodellen, del I

Miniverden og ER- modell

1. SQL datadefinisjon og manipulering

Databaser. Relasjonsmodellen 1 Læreboka: Kap. 2 Relasjonsmodellen Faglærere: Tore Mallaug, Kjell Toft Hansen

INF1000: Forelesning 7

Datamodellering og databaser SQL, del 2

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Tilkobling og Triggere

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Klasser. Webprogrammering høsten Objekter. Eksempelklasser og -objekter. 2 of :56. 1 of :56

Datamodellering og databaser SQL, del 2

Datamodellering og databaser SQL, del 2

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data

OM DATABASER DATABASESYSTEMER

HØGSKOLEN I SØR-TRØNDELAG

SQL: Datatyper m.m. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Datatyper m.m. V18 1 / 12

INF1000: Forelesning 7. Konstruktører Static

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

ITGK - H2010, Matlab. Dagens tema : Teori - Databaser

Oppgaver Oppgave a: Sett opp mulige relasjoner

Metaspråket for å beskrive grammatikk

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ragnar Normann 1

Integritetsregler i SQL. Primærnøkler

Innhold Forord Innledning Kapittel 1 Introduksjon til databaser og databasesystem

HVA ER XML? extensible Markup Language En standardisert måte å strukturere ulike typer data Åpent format Enkelt:

Introduksjon til fagfeltet

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Programmeringsspråk for nybegynnere. Krav til språket. Krav til språket. Krav til språket

Operasjoner på lenkede lister (enkeltlenket) Eksempel på en lenket liste: personliste. INF januar 2010 (uke 3) 2

SOSI-forvaltning - logisk modell

Integritetsregler i SQL

Databaser. Relasjonsmodellen 2 Læreboka: Kap. 2 Relasjonsmodellen

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

Spesifikasjon av Lag emne

Datatyper og typesjekking

Oppgave 1 Datamodellering 25 %

Datatyper og typesjekking

Introduksjon til objektorientert programmering

INF1010 Arv. Marit Nybakken 2. februar 2004

Rekursiv programmering

Lenkelister. Lister og køer.

Objektorientert programmering i Python. Resten av semesteret. Innhold uke 9 Mer komplekse strukturer. Referanser og objekter, inkl Mentimeter spørsmål

1. Innføring i bruk av MySQL Query Browser

Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

Algoritmer - definisjon

Kapittel 7: Mer om arv

HØGSKOLEN I SØR-TRØNDELAG

INF2810: Funksjonell Programmering

Romlig datamanipulering

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Modeller for design av Web-Applikasjoner

1. Relasjonsmodellen Kommentarer til læreboka

UNIVERSITETET. Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Hashliknende strukturer.

INF1300 Introduksjon til databaser

Oppgave 1 (Opprett en database og en tabell)

Algoritmeanalyse. (og litt om datastrukturer)

INF1300 Introduksjon til databaser

INF2810: Funksjonell Programmering

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

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

ORDBMS og OODBMS i praksis

INF2810: Funksjonell Programmering

INF1300 Introduksjon til databaser

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Tabeller og enkle spørringer

Enkle generiske klasser i Java

EKSAMEN DATABASER

Applikasjonsutvikling med databaser

Utvikling fra kjernen og ut

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

HØGSKOLEN I SØR-TRØNDELAG

Ekvivalente stier (Equivalence of Path, EOP) i storm

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Transkript:

Databaser & objektorientering. Noen grunnbegreper innen objektorientering. Klasser og forekomster klasser beskriver strukturen for noe. Beskrivelsen inneholder: et navn attributter /egenskaper / tilstander operasjoner / metoder / handlinger forekomster av en bestemt klasse. Hver forekomst har sin egen identitet. mange språk inneholder eksplisitte funksjoner for skaping og sletting av objekter (konstruktører og destruktører). typenavn attributt_1 attributt_2 attributt_3 operasjon_1 operasjon_2 Arv A attributt_1 attributt_2 attributt_3 operasjon_1 operasjon_2 B attributt_4 attributt_5 attributt_6 operasjon_1 operasjon_3 C attributt_4 attributt_5 attributt_6 operasjon_1 operasjon_4 Egenskaper fra en overordnet vil også gjelde for de underordnede. Arv kan skje i et vilkårlig antall nivåer. Kan dermed bygge opp komplekse strukturer. Noen OO-implementasjoner har multippel arv dvs. at en klasse kan ha flere overordnede. Vanskeligheten er at man arver egenskaper fra flere overordnede klasser. OODB kort oversikt, 30.10.11. Edgar Bostrøm 1

Tilgjengelighet av data og handlinger i for et objekt Data og handlinger kan være prohibited - ingen får adgang protected - kun underordnede får adgang public - alle får adgang Informasjonsskjuling. Data skjules innenfor objektet. Det lages i stedet operasjoner for å hente, endre data etc. i et gitt objekt. ==> Data er uavhengig av lagringsstruktur. Ulike objektorienterte språk har ulik grad av informasjonsskjuling. Abstrakte datatyper Det kan defineres datatyper som ikke inneholder noen data fra applikasjonen som sådan. Andre objektklasser kan arve fra disse, og dermed få en rekke egenskaper gratis. Typiske eksempler er lister, køer, ulike former for trær etc. som har operasjoner som finn (.), finn_neste, settinn ( ), slett ( ) etc. Meldinger Et objekt kan be et annet objekt om å gjøre en av de operasjonene det andre objektet kan. Man får dermed kommunikasjon mellom objektene, samarbeide og et dynamisk system. Polymorfisme Det utføres ulike operasjoner avhengig av hvilken type objektet er. Eks: For alle A: Utfør operasjon_1. Da blir ulike operasjoner utført avhengig av om det konkrete objektet er av typen A, B eller C. Systemet vet ikke hvilken kode som skal utføres før programmet kjøres. Kalles sen binding (koden bindes ved kjøretid, ikke ved kompilering). Kraftfull egenskap, og av mange betraktet som det eneste helt nye i OO. OODB kort oversikt, 30.10.11. Edgar Bostrøm 2

Objektorienterte og objekt-relasjonelle databaser Mange mener at tradisjonelle relasjonsdatabaser har svakheter, bl.a. fordi strukturen er for enkel for å avspeile virkeligheten på en god måte. Dette gjelder bl.a. hvorledes behandle ting som er nesten like, men ikke helt like? Stikkord: arv. hvorledes strukturere og behandle komplekse data (bilder, grafer m.m.)? Stikkord: komplekse datatyper. Behandling av BLOB-er. hvorledes legge metoder/operasjoner nær knyttet til data inn på en naturlig måte? Stikkord: objektorientert tenkning. mulighet for navigering/rekkefølge i postene. Stikkord: Bør kunne gå til første, forrige, neste, siste etc., relativt til hvor en er i datamengden. Dessuten: mulighet for rekursjon. Tre retninger: Behold relasjonsmodellen Integrer de to Forkast relasjonsmodellen med noen få utvidelser modellene: Ny modell: (bl.a. komplekse datatyper) Objekt-relasjonell Objektorienterte databaser (ORDB) (OODB) OODB kort oversikt, 30.10.11. Edgar Bostrøm 3

OODB: Hvert objekt har identitet (typisk via en intern peker, OID = object identity), ikke via primærnøkler - systemgenerert. tilstand (verdier på variable) - dvs. som verdier en relasjonsdatabase oppførsel ("hva kan objektet gjøre") - triggere er noe av det samme, men ikke gjennomført. I stedet for domener defineres det objektklasser. Arv av objektklasser (sub- og supertyper) Sen bindig, polymorfisme etc. Fordeler: hastighet passer bedre med OO programmeringsspråk (slipper å konvertere mellom relasjonell organisering på disk og objektorientert organisering i programmet/minne). Kort sagt: data lagres også som objekter. bedre til å håndtere komplekse strukturer etc. Vesentlig utfordringer: er det logisk at en database skal innkapsle sine data????? hvorledes lagre objekter på disk, og hva skal være persistent og hva behøver ikke å være persistent. hvordan beholde entydige pekere mellom minne og (muligens flere store) disker. Ulike metoder finnes, bl.a. konverteringstabeller av ulikt slag. hvorledes håndtere transaksjoner hvorledes håndtere skjemaevolusjon (dvs. at metadata endres over tid), versjoner av de samme data og metadata. et godt spørrespråk, som mest mulig er det samme som SQL. OQL (Object Query Language) er foreslått og ser temmelig likt ut, men noe av dette er bare overflatisk likhet. Arbeides med samording SQL - OQL. hvorledes få en standard (OMG - Object Management Group har forslagene, men ikke implementert en allmenn standard). hvorledes få til en "god teori" Alternativet er bl.a. et objektorientert lag rundt RDBMS-et, f.eks. mellomvare. OODB kort oversikt, 30.10.11. Edgar Bostrøm 4

OODB lagringsmodell: Data kan lagres som sett (usortert, tillater ikke dublikater, a la relasjonsdatabaser) bags (usortert, tillater dublikater) lists (sortert, tillater dublikater) arrays (endimensjonal array med variabel lengde) dictionary (usortert sekvens av (nøkkel,verdi)-par). struktur (består av ulike elementer) Disse kan igjen brukes som byggestener for mer komplisert elementer, f.eks. et sett, hvor hvert element er en struktur. Egenskaper: Samme type Sortert Unik Indeksert / Nummerert Set Bag List Array Dictionary Navngitt De 5 første er spesialiteter av collections / kolleksjoner, og egenskaper som arves til de mer spesialiserte objektklassene: collection <T> cardinality() is_empty?() constains_element? ( ) is_ordered () allows_duplicates () create_iterator ( ) create_bidirectional_iterator ( ) insert_element ( ) remove_element ( ) set <T> is_subset_of? ( ) is_proper_subset_of? ( ) is_superset_of? ( ) is_proper_superset_of? ( ) union_with ( ) intersection_with ( ) difference_with ( ) OODB kort oversikt, 30.10.11. Edgar Bostrøm 5

1:mange, 1:1, mange:mange. En 1:mange kan f.eks. lagres som: Avdeling Ansatt 1 Ost 2 Kjøkken Altså: Fra 1 til mange: kolleksjon av pekere til objektene (ved å lagre det andre objektets OID). Evt. også fra mange til 1: peker til objektet på 1-siden (ved å lagre det andre objektets OID), stiplet over. 1:1 Toveis pekere direkte til hverandre. M:m Enten: liste på begge sider eller: "entitetisering" og behandling som to 1:mange. Viktig observasjon: Begrepene primærnøkkel og fremmednøkkel trengs ikke, derimot er entydighet og evt. nødvendighet/not null vesentlig. OODB kort oversikt, 30.10.11. Edgar Bostrøm 6

Datamodell m/ arv transformert til definisjon av OODB (Fra Connolly & Begg) OODB kort oversikt, 30.10.11. Edgar Bostrøm 7

ORDB: Utvidelse av relasjonsmodellen i objektorientert retning. == > kan beholde nåværende applikasjoner etc. Vesentlige momenter: komplekse datatyper ( objektklasser) med arv det betyr at en rad kan inneholde et komplekst, strukturert element. metoder utvidet SQL til å kunne takle dette (vesentlige ingredienser i SQL3), bl.a. for å behandle komplekse data, for å håndtere arv (skal man plukke data bare fra dette nivået i arven, eller skal alle underliggende også plukkes?) mulig å referere til et objekt direkte via en ref, ikke bare via primærnøkler. Tilsvarer OID-er i en OODB. kolleksjonstyper avanserte typer indekser (f.eks. som romlige data) Det lages automatisk for hvert attributt: en observator-funksjon/get-funksjon en mutator-funksjon/set-funksjon for hver tabell: en kontruktør (les verdien) (endre verdien). (lage nye verdier) Disse kan redefineres, og dermed skreddersy kontroller osv. for dens lesning hhv. endring hhv. for laging av nye instanser. OODB kort oversikt, 30.10.11. Edgar Bostrøm 8

ORDB - kort eksempel i Oracle, I: Generell syntaks - typer: [ ] er frivillige elementer. - rottyper: create [or replace] type <navn> as object ( <attributt- og metodedefinisjon>) ; - typer som arver: create type [or replace] <navn> under <tidligere definert objekttype> ( <attributt- og metodedefinisjon, evt. basert på tidligere definerte typer>) ; Mellom ) og ; kan man definere [[NOT] INSTANTIABLE] - kan/kan ikke lage instanser av denne. INSTANTIABLE er default. [[NOT] FINAL]] - kan/kan ikke la denne være grunnlag for videre arv. FINAL er default. Tabeller basert på typer: create table <navn> of <type> (evt. med flere attributer eller deklarasjoner, evt. basert på de definerte typene som datatyper). Array-typer: Enten som fast antall, array(<antall elementer>)) of <datatype> Eller som et variabelt antall varray(<max. antall elementer>) of <datatype> Vi ser at disse typene gjør at vi ikke lenger har atomiske verdier, vi har m.a.o. (NF) 2. OODB kort oversikt, 30.10.11. Edgar Bostrøm 9

ORDB - kort eksempel i Oracle, II: (bare små, utvalgte deler av mulighetene som finnes) Eksempel arv og sammensatte typer: _t blir ofte brukt som suffiks på objektklasser Create or replace type adresse_t as object (gateadresse varchar(30), postnr varchar(10)) not final instantiable; Create or replace type kunde_t as object (kundenr integer, kundenavn varchar (40), adresse adresse_t) not final instantiable; Create or replace type utenlandskunde_t under kunde_t (landsnavn varchar(40)) final instantiable; Create or replace type venner_t under adresse_t (vennid integer) final instantiable; Ny type som bruker en allerede definert type som type for en kolonne Ny type som arver alt fra en underliggende type (+ kan ha egne kolonner). allerede definert type som type for en kolonne ---------------------------------------------------------------------------- Eksempel - metoder: Create or replace type vare_t as object (varenr integer, paalager integer, ibestilling integer, Member function kanlevere (paalager integer,ibestilling integer) return integer) instantiable not final; Create or replace type body vare_t as Member function kanlevere return integer is Begin Return paalager + ibestilling; End; End; Eksempel på at adresse_t kan brukes i flere sammenhenger. Deklarasjon og innhold kan gjøres i samme, men ofte lurt å splitte, spesielt hvis flere funk/pros. Test: create table vare of vare_t; insert into vare values (1,54,100); insert into vare values (2,10,500); OODB kort oversikt, 30.10.11. Edgar Bostrøm 10

ORDB - kort eksempel i Oracle, III: ---------------------------------------------------------------------------- Eksempel array: Create type mndomsetning_t is array(12) of integer; - evt. varray Denne kan dermed brukes i create table omsforkunde (kundenr integer, mndomsetning mndomsetning_t); --------------------------------------------------------------- Eksempel - referanser: Create type varelevr_t under vare_t (levr_ref ref kunde_t); Vi refererer altså til en av våre kunder som leverandør av denne varen (ofte ligger kunder og leverandører sammen i en tabell). Merk forskjellen: create type varelevr_t under vare_t (levr_ref kunde_t); - da må vi sette inn data (alle verdier i en kunde/leverandør) for hver gang det er samme leverandør for en vare ==> redundans & inskonsistens. create type varelevr_t under vare_t (levr_ref ref kunde_t); - refererer til et kunde-objekt, dvs. vi setter inn en peker til en kunde, ingen redundans. NB! Skriver vi ut noe som er en instans av typen varelevr_t vil vi som levr bare få et stort tall, en systemgenerert «objektpeker»/oid. Skal vi ha fram verdiene som denne peker på, må vi skrive deref(levr_ref). NB! For andre Oracle-eksempler, se f.eks. http://download.oracle.com/docs/cd/b19306_01/appdev.102/b14260/adobjint.htm http://download.oracle.com/docs/cd/b10501_01/appdev.920/a96594/adobjbas.htm & OODB kort oversikt, 30.10.11. Edgar Bostrøm 11