Semesteroppgave INFO221 Vår 2007

Størrelse: px
Begynne med side:

Download "Semesteroppgave INFO221 Vår 2007"

Transkript

1 Semesteroppgave INFO221 Vår 2007 Sondre Tjugen Rivedal - studentnr Øyvind Barra Kvinge - studentnr. Bård Aksnes - studentnr

2 Innledning... 3 Om SSM-modellen... 3 Objektrelasjonelle databaser vs. Relasjonelle databaser... 4 Egendefinerte datatyper... 5 Varrays... 7 Nøstede tabeller... 7 Relasjoner Oracle InterMedia Medlemsfunksjoner Indekser Prosedyrer INSERT_TECH_EMPLOYEE INSERT_ITEM_IMAGE COMPARE_IMAGES Intern feil i databasen Spørringer Oppsummering Kildehenvisninger Vedlegg Directory Sequences Object types and nested types Tables Procedures INSERT_MUSEUM INSERT_GENERAL_EMPLOYEE INSERT_TECH_EMPLOYEE INSERT_SECURITY INSERT_ITEM INSERT_ITEM_DOCUMENTATION INSERT_ITEM_IMAGE COMPARE_IMAGES Index/index preferences Lexer preference Wordlist preference Index Testdata Museums General employees Technincal & Specialist employees Security Items Images Documentations Insert into ITEM_SECURITY_TBL Insert into EMPLOYEE_ITEM_TBL Insert into ITEM_DOCUMENTTION_TBL SSM modell

3 Innledning Vi har våren 2007 lært om implementering av objektrelasjonelle databaser i Oracle. I denne semesteroppgaven vil vi vise hvordan vi har implementert vår database. Målet er å skape en database for å holde oversikt over museer med tilhørende gjenstander, bilder, ansatte med mer. De ansatte skal lett kunne hente ut relevant informasjon om disse objektene ved tekst- og bildesøk. Om SSM-modellen Vi begynte med å utarbeide en SSM-modell for å skape oss en oversikt over databasen sin struktur (vedlegg #). I modellen vår har vi tatt med alle entitetene vi trenger og relasjonene mellom disse. Vi har gjort en del antagelser for vår SSM-modell basert på oppgaveteksten. Vi har blant annet delt entiteten ansatte i to subklasser: en for generelle ansatte kalt Employee_general og en for teknisk/spesialist-ansatte kalt Employee_tech. Med generelle ansatte mener vi ansatte som f.eks. jobber som renholdsarbeider. Med teknisk/spesialist menes ansatte med en faglig bakgrunn/spesialitet innefor museumsfaget. Vi antar at det er bare de ansatte i Employee_tech-klassen som vil ha ansvar eller forbindelse med en museumsgjenstand. Dette går fram av mange-til-mangerelasjonen Employee_item mellom subklassen Employee_tech og entiteten Item. Disse ansatte kan være tilknyttet flere gjenstander og en gjenstand kan ha null til flere ansatte tilknyttet seg. Vi antar at en museumsgjenstand, entiteten item, kan ha flere tekstdokumenter som gjenstandsbeskrivelse. Det vil si at det kan stå informasjon om en gjenstand i ulike tekstdokumenter. Det kan tenkes at et tekstdokument omhandler en klasse av objekter, f.eks. redskaper. Innenfor klassen redskaper finner man informasjon om ulike enkeltobjekter som f.eks. en spesifikk hammer eller sag. Det kan også eksistere et annet dokument som kun omhandler denne spesifikke hammeren. Derfor kan en gjenstand være tilknyttet flere ulike tekstdokumenter. Dette viser vi gjennom relasjonen 3

4 item_documentation. Det kan lagres flere bilder per gjenstand i databasen. Et bilde kan bare være tilknyttet en gjenstand. Vi har løst dette ved å legge bildene i en egen entitet der hvert bilde har en referanse til gjenstanden den avbilder. Vi har valgt å modellere sikkerhetstiltak som en egen entitet kalt Security. Dersom vi hadde definert sikkerhetstiltak som en attributt i Item -entiteten ville det kunne oppstått mange null-verdier ved innsetting av gjenstander som ikke har sikkerhetstiltak. I Security legger man inn alle enkelte sikkerhetstiltak man har tilgjengelig, og med mange-til-mange-relasjonen Item_security lagrer man alle sammenhengene mellom museumsgjenstander og de sikkerhetstiltakene som gjelder for hver gjenstand. I implementeringen av databasen har vi brukt endelsen _TP i navnene til alle typene vi har opprettet, og _TBL i alle tabellnavn. Vi har også brukt NT_ i starten av alle nøstede tabeller sine navn, og VA_ for alle varrays. Objektrelasjonelle databaser vs. Relasjonelle databaser Oracle Database is an object relational database management system. This means that in addition to its traditional role in the safe and efficient management of relational data, it provides support for the definition of object types, including the data associated with objects and the operations (methods) that can be performed on them. Object relational technology includes integral support for BLOBs to provide the basis for adding complex objects, such as digitized audio, image, and video, to databases. (Pelski 2005: 19) Fordi det skal kunne legges inn bilder og større objekter i databasen må databasen implementeres som en objektrelasjonell database. Objektrelasjonelle databaser og databasehåndteringssystemer har blitt utviklet som følge av at etterspørselen etter systemer med god støtte for multimedia har økt. Man ønsker i større grad enn før å lagre store mengder binære data som dokumenter, lyd, bilde og video i databaser, ofte for presentasjon gjennom webgrensesnitt slik som for eksempel YouTube (www.youtube.com). Dette har nok sammenheng med en generell økning i både 4

5 overføringshastighet og maskinvareytelser som tillater høyere overføringshastigheter og mer effektiv behandling av tunge multimediefiler. Med objektrelasjonelle databaser og databasehåndteringssystemer har man støtte for BLOBs (Binary Large Objects), og man kan dermed lagre binære datatyper som lyd, bilde og video, i tillegg til at man kan definere egne datatyper (UDT), funksjoner (UDF) og objekter. Tradisjonelle relasjonelle databasehåndteringssystemer fungerer best til behandling av tekst og tall, lagret som atomiske datatyper (for eksempel varchar2 eller integer) i rader av attributter i tabeller. Slike databasehåndteringssystemer kommer til kort når det gjelder å behandle lyd- bilde- og video- datatyper. Egendefinerte datatyper Egendefinerte datatyper er objekter man oppretter selv i databasen, bestående av atomiske datatyper eller andre egendefinerte datatyper, samt metoder. Man kan lette forståeligheten av databasens struktur ved å benytte egendefinerte datatyper med navn og egenskaper som ligner de man finner i den virkelige verden. I vår database har vi for eksempel definert et EMPLOYEE_TP -objekt med et tilhørende attributt av typen NAME_TP. NAME_TP består igjen av to attributter first_name og last_name av typen varchar2. Andre fordeler med å benytte egendefinerte datatyper er at man kan bruke de samme typene om igjen, og på denne måten redusere mengden kode man trenger å skrive og lette databaseimplementeringen. Dette medvirker også til å standardisere innholdet i objektene. Egendefinerte typer kan også inneholde metoder. Disse er del av kroppen til objektet, og kun gjennom objektet kan man få tilgang til metodene. Med metoder kan man blant annet utlede data fra andre lagrede data i objektet. Dersom man for eksempel har lagret fødselsdato til et personobjekt gir det ingen mening å lagre alder, for dette er data man kan utlede med en enkel matematisk metode som trekker fødselsdato fra nåværende tid. 5

6 Det ville også ha vært frustrerende å måtte oppdatere alderattributtet for hvert år. Med metoder kan man flytte en god del av applikasjonskoden over i selve databasen som før måtte implementeres i nivået over databasen, for eksempel i PHP- eller JAVA- koden. Vi har flere egendefinerte typer i vår database, som NAME_TP, ADDRESS_TP og EMPLOYEE_TP for å nevne noen. Disse er like på mange måter, med unntak av antallet attributter og tilhørende datatyper og metoder. ADRESS_TP består av tre attributter kalt street (varchar2), postal_code (integer) og city (varchar2). Alle atomiske datatyper. Måten vi har opprettet ADRESS_TP på er som følger: create or replace type ADDRESS_TP as object ( street varchar2 (50), postal_code integer (4), city varchar2 (50) ); I EMPLOYEE_TP kan man se hvordan vi har brukt egendefinerte typer inni en annen egendefinert type: create or replace type EMPLOYEE_TP as object ( employee_id integer, employee_name NAME_TP, employee_address ADDRESS_TP, employee_phone NT_EMPLOYEE_PHONE_TP, employee_ NT_EMPLOYEE_ _TP, employee_job_title varchar2 (50), employed_since date, employer ref MUSEUM_TP )not final; 6

7 I eksempelet over ser man at vi har brukt de nevnte egendefinerte typene NAME_TP og ADDRESS_TP inni den egendefinerte typen EMPLOYEE_TP. Ellers har vi et attributt employee_id av typen integer som skal fungere som primærnøkkel i tabellen vi senere skal opprette basert på EMPLOYEE_TP, vi har employee_phone og employee_ som er nøstede tabeller av telefonnummer og epost-adresser, employee_job_title av typen varchar2, employed_since av typen date, og employer som er en referanse til det museum den ansatte jobber for. Varrays Vi har brukt en såkalt VARRAY en plass i databasen. Det er i typen EMPLOYEE_TECH_TP som er en subtype av EMPLOYEE_TP. VARRAYen har vi kalt expertise VA_EXPERTISE_TP og den er en datatype for attributten expertise i subklassen. You should limit varying arrays to one column. If you need to use multiple columns in an array, consider using nested tables (Loney 2004: 622). Som Loney her påpeker, er noe av det som kjennetegner VARRAYs er at de bare kan lagre et bestemt antall rader, og helst bør de ikke ha mer enn en kolonne. Nøstede tabeller En nøstet tabell kan forståes som en tabell inni en annen tabell, og har ingen begrensninger på hvor mange rader man kan lagre i den (Loney 2004: 628). Nøstede tabeller kan brukes i stedet for å opprette en egen tabell med fremmednøkler til en annen tabell. I eksempelet over ser man at EMPLOYEE_TP har et tilhørende attributt av typen NT_EMPLOYEE_PHONE_TP, som er en nøstet tabell av typen PHONE_TP. Dette betyr at hvert EMPLOYEE_TP -objekt vi legger inn i databasen har en nøstet tabell med PHONE_TP -objekter. Hvert PHONE_TP -objekt består av to attributter kalt phone_type og phone_number, henholdsvis av de atomiske datatypene integer og varchar2. Oppsummert betyr dette at hver ansatt vi legger inn i databasen kan ha en telefonliste med flere rader, og hver rad inneholder en beskrivelse av nummeret og selve nummeret. Man kan for eksempel tenke seg at en ansatt har to registrerte telefonnummer 7

8 av typene privat og jobb. Koden for å opprette den nøstede tabellen NT_EMPLOYEE_PHONE_TP er som følger: create or replace type PHONE_TP as object ( phone_type varchar2 (50), phone_number integer (8) ); create or replace type NT_EMPLOYEE_PHONE_TP as table of PHONE_TP; Tabeller For å kunne sette inn data i databasen, altså lagre dataene, må det opprettes tabeller. I et ORDBMS er det ikke mulig å lagre data i en objekttype. Dette er fordi det er en egendefinert datatype, og denne stiller på lik linje med andre datatyper som varchar2 og number. Det er ikke mulig å lagre noen data i en varchar2, men det er mulig å lagre verdier i varchar2-format i en tabell. Vi har laget totalt ni tabeller. Av disse er seks tabeller laget av objekttyper mens tre tabeller er laget som vanlige relasjonelle tabeller. For å opprette disse to ulike typene av tabeller, er det ulik syntaks. For å opprette en objekttype-tabell er syntaksen slik: CREATE TABLE <table_name> OF <object_type_tp> ([...]); For opprettelse av en vanlig relasjonell tabell er syntaksen: CREATE TABLE <table_name> ([list of attributes, constraints]); Den største forskjellen på disse er at i en tabell av objekttyper må det brukes primærnøkkelbegrensninger eller constraints, mens i en tradisjonell relasjonell tabell bruker vi primærnøkler og fremmednøkler. 8

9 Vi vil vise et eksempel på en tabell som er laget av objekttyper, siden dette er et ORDBMS. Som eksempel viser vi tabellen EMPLOYEE_TBL. Den inneholder også en nøstet tabell: create table EMPLOYEE_TBL of EMPLOYEE_TP( Her gir vi tabellen navnet EMPLOYEE_TBL og sier at vi skal lage en tabell av objekttypen EMPLOYEE_TP. EMPLOYEE_TP er en UDT, en egendefinert type. Denne typen har også to subklasser, spesialiseringer av hvilken type ansatt det er, EMPLOYEE_GENERAL_TP og EMPLOYEE_TECH_TP. CONSTRAINT PK_employee_id primary key (employee_id)) Her gir vi en begrensning (constraint) for tabellen. Vi sier at begrensningen heter PK_employee_id og er primærnøkkelen i tabellen. Det er den ansattes id, som automatisk genereres av en sekvens når man legger til en ny ansatt i databasen, som fungerer som primærnøkkel. nested table employee_phone store as EMPLOYEE_PHONE_NTAB( (primary key (nested_table_id, phone_type)) organization index compress) Vi har her opprettet en nøstet tabell i tabellen EMPLOYEE_TBL. Dette er en liste over de ansattes telefonnumre. Grunnen til at vi bruker en nøstet tabell her er at en ansatt kan ha flere enn ett telefonnummer, og et ukjent antall telefonnummer. De kan ha et hjemmenummer, et mobilnummer, et jobbnummer osv. Som tidligere nevnt er det også anbefalt å benytte nøstede tabeller i tilfeller der man trenger å lagre data i flere kolonner. Vi har først opprettet en type som heter PHONE_TP. Denne inneholder to attributter: phone_type og phone_number. Denne typen PHONE_TP kan så gjenbrukes alle 9

10 plasser det trengs å lagre telefonnummer. Ved å lage en ny type som er en nøstet tabell av PHONE_TP, kan man opprette en tabell som man kan sette inn i en overordnet tabell. Det er dette vi har gjort i EMPLOYEE_TBL. Vi har her brukt NT_EMPLOYEE_PHONE_TP som er en nøstet tabell av PHONE_TP. Ved å skrive store as har vi omnavnet den nøstede tabellen til EMPLOYEE_PHONE_NTAB. Dette navnet kan være hva som helst, men for å vite hva tabellen inneholder er det greit å gi den et relevant navn. Man kan enkelt se at dette er en nøstet tabell med ansattes telefonnumre ved å se på navnet. EMPLOYEE_PHONE_NTAB trenger også å ha en primærnøkkel, da det er en tabell. Ved å gi den nøstede tabellen en nested_table_id, vil hver rad i EMPLOYEE_TBL ha sin egen kolonne med unike nøstede tabeller for telefonnummer. Nested_table_id er en nøkkel som forbinder rader i den nøstede tabellen med rader i foreldretabellen (Oracle9i Application Developer's Guide, nettartikkel). Vi har definert at primærnøkkelen for EMPLOYEE_PHONE_NTAB er phone_type. Dette har vi gjort med hensyn til at en ansatt kanskje vil benytte det samme nummeret for flere ulike telefontyper. Man kan tenke seg at en ansatt i et slikt tilfelle ønsker å presisere at både jobb - og privat - telefontypene bruker det samme nummeret. Vi anser det også som lite sannsynlig at en ansatt vil lagre samme verdien i phone_type flere ganger (for eksempel legge inn privat to ganger), og phone_type vil da fint kunne fungere som primærnøkkel i dette tilfellet. Ved å tilføre klausulen organization_index_compress gjør man den nøstede tabellen til en IOT (index-organized table) (Oracle9i Application Developer's Guide, nettartikkel). Alt dette i kombinasjon med nested_table_id gjør at Oracle fysisk vil samle ( cluster ) de nøstede tabellene som hører til den samme foreldretabellen for mer effektiv tilgang (Oracle9i Application Developer's Guide, nettartikkel). nested table employee_ store as EMPLOYEE_ _NTAB( (primary key (nested_table_id, _type)) 10

11 organization index compress); Den siste delen av EMPLOYEE_TBL ser slik ut. Dette er en nøstet tabell for de ansattes -adresser. Det samme gjelder for denne nøstede tabellen som det som er beskrevet for EMPLOYEE_PHONE_NTAB. Vi har brukt _type som primærnøkkel av samme årsaker som for phone_type i EMPLOYEE_PHONE_NTAB, som beskrevet ovenfor. Tabellen EMPLOYEE_TBL vil lagre alle ansatte. Vi har modellert denne ansatt-entiteten som en superklasse med to subklasser: EMPLOYEE_GENERAL_TP og EMPLOYEE_TECH_TP. Disse subklassene arver attributtene fra superklassen, samtidig som de har attributter som er særegne for hver enkelt av dem. EMPLOYEE_TECH_TP har attributten expertise i tillegg til de arvede, og EMPLOYEE_GENERAL_TP har workarea. Når man skal sette inn ansatte som tilhører de to subklassene vil disse bli satt inn i EMPLOYEE_TBL. Dette gjøres ved hjelp av to prosedyrer: INSERT_GENERAL_EMPLOYEE og INSERT_TECH_EMPLOYEE. Disse blir nærmere beskrevet i egne avsnitt. Superklassen EMPLOYEE_TP er NOT FINAL, mens subklassene er UNDER EMPLOYEE_TP og FINAL. At typen EMPLOYEE_TP er NOT FINAL indikerer at man har en spesialisering, altså subklasser. Relasjoner De stedene i databasen vår vi har en-til-mange-relasjoner har vi benyttet datatypen REF. REF er en referanse til en annen rad i samme tabellen som den befinner seg i, eller til en rad i en annen tabell. Blant annet har vi brukt REF i EMPLOYEE_TP, som er beskrevet tidligere i denne teksten. EMPLOYEE_TP har et attributt som er kalt employer, som er en referanse til et objekt av typen MUSEUM_TP (museet den ansatte jobber for). Andre steder vi har brukt REF er i typene ITEM_TP (til MUSEUM_TP, museet en gjenstand er utstilt på) og IMAGE_TP (til ITEM_TP, gjenstanden den avbilder). 11

12 Vi har tre mange-til-mange-relasjoner implementert i vår database, ITEM_DOCUMENTATION, ITEM_SECURITY og EMPLOYEE_ITEM. Disse har vi implementert ved å opprette egne tabeller der primærnøkkelen er sammensatt av to fremmednøkler som peker til hver sin respektive tabell. Som et eksempel har ITEM_DOCUMENTATION to attributter kalt item_id og documentation_id, som er fremmednøkler som henholdsvis peker til tabellene ITEM_TBL og SECURITY_TBL. Disse to attributtene utgjør til sammen primærnøkkelen i ITEM_DOCUMENTATION ved at kombinasjonen av de to alltid vil være unik i denne tabellen. Oracle InterMedia Oracle intermedia is a feature that enables Oracle Database to store, manage, and retrieve images, audio, video, or other heterogeneous media data in an integrated fashion with other enterprise information. Oracle intermedia extends Oracle Database reliability, availability, and data management to multimedia content in traditional, Internet, electronic commerce, and media-rich applications (Pelski 2005: 1). Vi har benyttet oss av ORDImage klassen i Oracle InterMedia. InterMedia er en utvidelse av Oracle som tilbyr støtte for multimedia som lyd, bilde og video med mer. Ulike lagringsmetoder støttes, for eksempel kan man lagre multimedieobjekter i selve databasen, slik vi har gjort, eller man kan bare lagre pekere til eksterne objekter. InterMedia har også innebygde metoder for å hente ut og lagre metadata fra multimediefiler som filstørrelse, kompresjonsteknikk, filformat osv. samt støtte for indeksering av slike data for dermed å kunne søke i dem (se Pelski 2005: 24). I og med at vår database skal lagre bilder av museumsgjenstander trenger vi funksjonaliteten som InterMedia tilbyr, og bildeformatet JPG som vi benytter er et av de mange som her er støttet. Koden vår for opprettelse av en bildetype er som følger: create or replace type IMAGE_TP as object ( image_id integer, keywords varchar2 (100), 12

13 description varchar2 (300), item ref ITEM_TP, image ORDSYS.ORDImage, image_sign ORDSYS.ORDImageSignature ); I eksempelet over viser vi at typen vår kalt IMAGE_TP har attributtene image_id av typen integer som identifiserer bildet, keywords av typen varchar2 som er relevante nøkkelord for bildet, description av typen varchar2 som er en kort beskrivelse av bildet, item som er en referanse til den museumsgjenstanden av typen ITEM_TP som er avbildet, image som er et tomt bilde av typen ORDSYS.ORDImage, og image_sign som er en tom signatur av typen ORDSYS.ORDImageSignature. Medlemsfunksjoner En medlemsfunksjon (member function) er en funksjon som tilhører et objekt, og som er innebygd i objektet sin kropp (body). Funksjonen er kun tilgjengelige gjennom objektet det tilhører. I vår database har vi en medlemsfunksjon kalt calc_age, som er del av kroppen til objekttypen ITEM_TP. Denne tar ingen parametere, men returnerer en kalkulert verdi age, som er museumsgjenstanden sin alder, basert på en lagret verdi dated i ITEM_TP, som er årstallet gjenstanden er datert. Ved å trekke dated fra nåværende årstall får man alderen til museumsgjenstanden. Følgende er koden for denne metoden: create or replace type body ITEM_TP as member function calc_age return number is age number(4); today number(4); begin select extract(year from sysdate) into today from dual; age:=today-self.dated; 13

14 return(age); end; end; Her definerer vi først at funksjonen skal hete calc_age, og at den skal returnere en verdi av datatypen number. Vi oppretter så to variabler age og today, også av datatypen number at de skal stemme overens med datatypen til returverdien. Vi setter lengden av disse til 4 siffer ettersom de skal inneholde årstall. Vi henter så ut nåværende årstall fra sysdate, som er tidspunktet satt på tjenermaskinen databasen kjører på, og denne verdien blir så mellomlagret i dual (en innebygd tabell i Oracle som vanligvis benyttes til korte tester og kalkuleringer (Loney 2004: 210, fritt oversatt)). Verdien blir så overført til today variabelen. Utregningen av gjenstanden sin alder skjer så ved at verdien i dated -attributtet til objektet denne metoden tilhører (man refererer til eierobjektet ved å skrive self ) trekkes fra nåværende årstall, altså verdien som er lagret i today - variabelen, og svarverdien blir tilordnet age variabelen. Variabelen age blir så returnert og metoden avsluttet. Sekvenser Vi har opprettet seks sekvenser for databasen vår. Poenget med en sekvens er å kunne generere en id automatisk når man gjør en insert-operasjon på en tabell. Dersom man skal legge til en ny ansatt, vil den ansatte automatisk få tildelt en id, som er et tall. For eksempel dersom man legger inn en ny ansatt av typen EMPLOYEE_TECH_TP, er det en prosedyre som tar seg av insert-operasjonen. Prosedyren INSERT_TECH_EMPLOYEE kaller på sekvensen «seq_employee_id». Vi skriver seq_employee_id.nextval i prosedyren, som sier at sekvensen skal tilegne den asnatte den neste verdien ettter den forrige ansatte som ble registrert. Sekvensen er satt til å øke verdien med 1 for hver gang. Det vil si at den første ansatte får id nr 1, den neste nr 2 osv. En oversikt over sekvensene våre finnes i vedlegget. 14

15 Indekser Når man skal søke i en tekst/tekstdokument for å finne informasjon, har man ulike muligheter å gjøre dette på. Man kan søke gjennom teksten sekvensielt, altså lese ord for ord gjennom hele teksten. Det sier seg selv at dette er tungvint og tidkrevende. En annen mulighet man har er å konstruere datastrukturer eller indekser. Disse vil øke farten på søket siden man ikke trenger å søke gjennom hele teksten. «A database index is a data structure that improves the speed of operations in a table.» (Index (database)- Wikipedia nettartikkel). Indekser er et enkelt konsept som har blitt brukt i lang tid. Et eksempel er i bøker der man finner en indeks bakerst. Hvis man ønsker å finne ut hvilken side det står om «fugler» på f.eks., kan man slå opp ordet «fugler» i indeksen som også er ordnet i alfabetisk rekkefølge, bakerst i boken. Der finner man ut på hvilke sider i boken man finner ordet «fugler». Man kunne funnet den samme informasjonen om «fugler» ved å lese gjennom boken fra perm til perm. Men dette tar selvfølgelig mye lenger tid enn å finne de konkrete sidetallene hvor informasjon om «fugler» finnes. Det finnes ulike teknikker for indeksering. De vanligste er inverterte filer, suffix arrays og signatur-filer. I Oracle gjelder de samme prinsippene for indeksering som for en bok. Dersom man søker etter et søkeord, og dette ikke er indeksert, må Oracle lete gjennom alle tabeller for å oppfylle kondisjonen i spørringen. I spørringen: SELECT * FROM fugler WHERE art='måke' er WHERE-klausulen en kondisjon som må oppfylles for at man skal få ut de rette dataene. Her sier man at man skal skrive ut alle rader fra arten måke. Dersom fugler ikke 15

16 har en indeks på art-kolonnen, må Oracle søke gjennom alle radene i tabellene til den finner de radene som oppfyller WHERE-klausulen. Ved å indeksere vil Oracle søke mye fortere gjennom tabellene. En indeks vil gi en peker til hvor på disken den eksakte raden er lagret og hvor i tabellen den befinner seg. «The standard type of index in Oracle is called a B*-tree index, matching column values to their related rowids». (Loney 2004: 354) For at det skal være mulig å søke i innholdet i store tekstdokumenter som ligger lagret i en Oracle-database er det nødvendig å opprette såkalte tekst-indekser på kolonnen der teksten er lagret. En tekst-indeks kan være et forvirrende begrep: «[I]t is actually a collection of tables and indexes that store information about the text stored in the column». (Loney, 479:2004) Det finnes ulike måter å indeksere tekst på i Oracle. Det er f.eks. ctxcat-indeks, ctxruleindeks og context-indeks. I oppgaveteksten for denne oppgaven står det beskrevet at vi skal opprette såkalte CONTEXT-indekser. En slik indeks passer best for vår database fordi den kan brukes til å indeksere ustrukturert tekst og store mengder tekst. Eksempler på store tekstfiler er doc., pdf, rene tekstfiler, html og xml. En CONTEXT-indeks muliggjør stemming, thesaurus- og fuzzy-søk. Stemming er en prosess der man reduserer et ord til stammen av ordet: «Stemming is the process for reducing inflected (or sometimes derived) words to their stem, base or root form generally a written word form.» (Stemming Wikipedia, nettartikkel). Man kan altså søke etter ord og stemming-prosessen vil generere mulige former av ordet. Spørringen vil utføres på alle mulige former av ordet slik at når man søker etter et ord kan spørringen returnere treff på alle tekster der ulike ord med den samme stammen finnes. 16

17 Før man kan opprette en tekst-indeks må man opprette en lexer. En lexer bestemmer bl.a. hvordan tekst blir brutt opp for indeksering og man kan fastsette hvilket språk indeksen skal forholde seg til. I vår oppgave trenger vi bare en lexer for engelsk, siden alle tekstdokumentene er på engelsk og alt vi skriver inn i databasen gjøres på engelsk. Ved å bruke CREATE_PREFERENCE-prosedyren, oppretter vi en lexer: BEGIN ctx_ddl.create_preference('english_lexer','basic_lexer'); ctx_ddl.set_attribute('english_lexer','index_themes','yes'); ctx_ddl.set_attribute('english_lexer', 'theme_language', 'english'); END; Vi har gitt lexeren navnet «english_lexer». Dette er en basic_lexer som tilbys av Oracle og den støtter de fleste Vest-Europeiske språk. Vi har satt parameteret «index_themes» slik at vi kan gjøre søk innen et tema. Vi har opprettet en CONTEXT-indeks som heter «documentation_index på kolonnen «documentation» i tabellen «documentation_tbl». Det er i «documentation»-kolonnen vi lagrer tekstdokumentene som omhandler gjenstandene i museene. CREATE index documentation_index on documentation_tbl(documentation) indextype is ctxsys.context parameters ('datastore ctxsys.default_datastore filter ctxsys.inso_filter lexer english_lexer memory 1M'); 17

18 Ved å bruke parameter-klausulen sammen med CREATE index, kan man tilpasse context-indeksen. Her sier parameteret datastore at indeksen skal lagres ved preferansen ctxsys.default_datastore. Dette vil si at indeksen lagres i et objekt som heter direct_datastore. Det neste parameteret er filter. Her har vi satt preferansen ctxsys.inso_filter. Dette gjøres for at det skal være mulig å indeksere formaterte dokumenter. Inso_filter filtererer de fleste formattyper til tekst. Lexer-parameteret sier at vi ønsker å bruke lexeren vi har opprettet, english_lexer. Parameteret memory sier hvor mye plass som skal settes av til minne for en indeks. Vi har satt det til 1M. Dette er det minimum som kan spesifiseres/er tillatt. Vi mener dette er nok til en såpass liten database vi skal implementere. Dersom databasen skulle blitt brukt i en reel museums-drift, ville denne verdien ha måtte bli satt høyere. Prosedyrer Vi har til sammen åtte prosedyrer i vår database. Prosedyrer benyttes for eksempel til å lette innsettingen av data i tabeller, men også for å utføre beregninger, sammenligninger av bilder med mer. Med prosedyrer har man muligheten til å implementere mye av funksjonaliteten som før måtte ligge i applikasjonskoden direkte i databasen. Dette gjør at man kan levere en database mer som en full pakke, i stedet for å spre store deler av koden over flere lag i datasystemet. INSERT_TECH_EMPLOYEE Videre vil prosedyren INSERT_TECH_EMPLOYEE gjennomgåes i detalj. Dette er en prosedyre som vi har opprettet for å lette innsetting av data om ansatte i tabellen EMPLOYEE_TBL. Koden for prosedyren er som følger: create or replace procedure INSERT_TECH_EMPLOYEE( te_first_name varchar2, te_last_name varchar2, 18

19 te_street varchar2, te_postal_code integer, te_city varchar2, te_phone_type varchar2, te_phone_number integer, te_ _type varchar2, te_ _address varchar2, te_job_title varchar2, te_employed_since date, te_employer varchar2, te_expertise varchar2 ) as begin insert into EMPLOYEE_TBL values( EMPLOYEE_TECH_TP( seq_employee_id.nextval, NAME_TP(te_first_name,te_last_name), ADDRESS_TP(te_street,te_postal_code,te_city), NT_EMPLOYEE_PHONE_TP(PHONE_TP(te_phone_type,te_phone_number)), NT_EMPLOYEE_ _TP( _TP(te_ _type,te_ _address)), te_job_title, te_employed_since, (SELECT TREAT (REF(b) AS REF MUSEUM_TP) FROM MUSEUM_TBL b WHERE museum_name = te_employer), VA_EXPERTISE_TP(te_expertise) ) ) ; 19

20 commit; dbms_output.put_line('an employee is added'); end; Prosedyren INSERT_TECH_EMPLOYEE tar 13 innparametere. Dette er dataverdiene som skal settes inn i tabellen EMPLOYEE_TBL som en rad av objekttypen EMPLOYEE_TECH_TP, altså data om en ansatt med tekniske egenskaper eller spesialiseringer innenfor visse fagfelt. Disse er blant annet navn, adresse, telefonnummer, e-post, jobbtittel og så videre, og er av de samme datatypene (varchar2, integer osv.) som man finner igjen i EMPLOYEE_TECH_TP og EMPLOYEE_TP. Ved å skrive begin definerer man stedet prosedyren starter, og utsagnet insert into EMPLOYEE_TBL values betyr at det er i tabellen for ansatte, EMPLOYEE_TBL, man nå skal begynne å sette inn verdiene fra innparametrene. Deretter bestemmer man at det er et objekt av typen EMPLOYEE_TECH_TP som skal settes inn. Som tidligere nevnt i avsnittet om tabeller om er EMPLOYEE_TECH_TP en subtype av EMPLOYEE_TP, som tabellen EMPLOYEE_TBL er basert på, og det går dermed fint å sette inn objekter av typen EMPLOYEE_TECH_TP i EMPLOYEE_TBL tabellen. Videre må verdiene i innparametrene settes inn i rett rekkefølge i forhold til hvordan objektene som skal opprettes er definert. Et objekt av typen EMPLOYEE_TECH_TP arver alle attributtene til EMPLOYEE_TP, samt at det har et eget attributt av typen VARRAY kalt expertise. Prosedyren legger derfor først inn en identifikatorverdi ved å kalle sekvensen seq_employee_id og øke denne med 1 vha. tilhørende funksjon NEXTVAL. Så legges verdiene for navn inn, og ansattes navn skal være av den egendefinerte typen NAVN_TP. Denne har igjen en bestemt rekkefølge av sine to attributter der fornavn kommer før etternavn. Innparametrene må legges inn i denne rekkefølgen separert med komma og omsluttet av parenteser. Samme fremgangsmåte gjelder for ADDRESS_TP, som tar gatenavn, postkode og by. 20

Datamodellering og databaser http://www.aitel.hist.no/fag/_dmdb/ SQL, del 2

Datamodellering og databaser http://www.aitel.hist.no/fag/_dmdb/ SQL, del 2 http://www.aitel.hist.no/fag/_dmdb/ SQL, del 2 Eksempelbase side 2 Virtuelle tabeller (views) side 3-6 NULL-verdier side 7-14 UPDATE-setningen side 15-16 INSERT-setningen side 17 DELETE-setningen side

Detaljer

1. SQL datadefinisjon og manipulering

1. SQL datadefinisjon og manipulering Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag SQL datadefinisjon og manipulering Tore Mallaug 7.10.2008 Lærestoffet er utviklet for faget Databaser 1. SQL datadefinisjon og manipulering

Detaljer

Databaser & objektorientering.

Databaser & objektorientering. Databaser & objektorientering. Noen grunnbegreper innen objektorientering. Klasser og forekomster klasser beskriver strukturen for noe. Beskrivelsen inneholder: et navn attributter /egenskaper / tilstander

Detaljer

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet.

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet. TDT445 Øving 4 Oppgave a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet. Nøkkel: Supernøkkel: Funksjonell avhengighet: Data i en database som kan unikt identifisere (et sett

Detaljer

Oppgaver Oppgave a: Sett opp mulige relasjoner

Oppgaver Oppgave a: Sett opp mulige relasjoner Løsningsforslag til øving 4: Relasjonsmodellen Kjell Toft Hansen 18.09.2008 Opphavsrett: Forfatter og AITeL Lærestoffet er utviklet for faget LO151D Informatikk 1: databaser Oppgaver Oppgave a: Sett opp

Detaljer

Metaspråket for å beskrive grammatikk

Metaspråket for å beskrive grammatikk 1 SQL-syntaks Korrekt språkbruk bygger på et sett av regler. Eksempler: En SQL utvalgsspørring inneholder alltid ordene SELECT og FROM, mens WHERE og tilhørende betingelse er valgfri. Etter SELECT kan

Detaljer

DATAUTFORSKNING I EG, EG 7.1 OG EGENDEFINERTE FUNKSJONER SAS FANS I STAVANGER 4. MARS 2014, MARIT FISKAAEN

DATAUTFORSKNING I EG, EG 7.1 OG EGENDEFINERTE FUNKSJONER SAS FANS I STAVANGER 4. MARS 2014, MARIT FISKAAEN DATAUTFORSKNING I EG, EG 7.1 OG EGENDEFINERTE FUNKSJONER SAS FANS I STAVANGER 4. MARS 2014, MARIT FISKAAEN 2 INNLEDNING TEMA I SAS Enterprise Guide versjon 5.1 (februar 2012) kom det et nytt datautforskingsverktøy,

Detaljer

En lett innføring i foreninger (JOINs) i SQL

En lett innføring i foreninger (JOINs) i SQL En lett innføring i foreninger (JOINs) i SQL Noen ord om forening (JOIN)! 2 JOINs til gjennomgang! 3 1. INNER JOIN! 3 Eksempel på [INNER] JOIN! 4 NATURAL JOIN! 5 Eksempel på NATURAL JOIN! 5 2. LEFT [OUTER]

Detaljer

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

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

Detaljer

Tilkobling og Triggere

Tilkobling og Triggere Tilkobling og Triggere Lars Vidar Magnusson October 12, 2011 Lars Vidar Magnusson () Forelesning i DAS 11.10.2011 October 12, 2011 1 / 25 Tilkobling med PHP PHP bruker databasespesifike moduler til å koble

Detaljer

Høgskolen i Telemark EKSAMEN 6102 DATABASER 10.12.2015. Tid: 10-14. Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

Høgskolen i Telemark EKSAMEN 6102 DATABASER 10.12.2015. Tid: 10-14. Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1 Høgskolen i Telemark EKSAMEN 6102 DATABASER 10.12.2015 Tid: 10-14 Målform: Sidetall: Hjelpemidler: Merknader: Bokmål/nynorsk 13 med forside Ingen Ingen Vedlegg: Eksempeldata til oppgave 1 Eksamensresultater

Detaljer

9. ASP med databasekopling, del II

9. ASP med databasekopling, del II Else Lervik 23.03.2004 Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LV192D Web-programmering med ASP 9. Resymé: I forrige leksjon så vi hvordan ASP kunne brukes til å vise

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

Detaljer

SAS FANS NYTT & NYTTIG FRA VERKTØYKASSA TIL SAS 4. MARS 2014, MIKKEL SØRHEIM

SAS FANS NYTT & NYTTIG FRA VERKTØYKASSA TIL SAS 4. MARS 2014, MIKKEL SØRHEIM SAS FANS NYTT & NYTTIG FRA VERKTØYKASSA TIL SAS 4. MARS 2014, MIKKEL SØRHEIM 2 TEMA 1 MULTIPROSESSERING MED DATASTEGET Multiprosessering har lenge vært et tema i SAS Stadig ny funksjonalitet er med på

Detaljer

Quotes (forespørsler)

Quotes (forespørsler) Quotes (forespørsler) Quotes (forespørsler) Quotes uten vedlegg Quotes med vedlegg 2 Quotes (forespørsler) Quotes uten vedlegg Quotes med vedlegg 3 Quotes, forespørsler uten vedlegg Benyttes til forespørsler

Detaljer

Datamodellering 101 En tenkt høgskoledatabase

Datamodellering 101 En tenkt høgskoledatabase Datamodellering 101 En tenkt høgskoledatabase Spesifikasjoner for databasen vi skal modellere: Oversikt over studenter med: Fullt navn Klasse Studium Avdeling Brukernavn Fødselsdag Adresse Telefonnummer

Detaljer

Feilmelding Årsak Løsning

Feilmelding Årsak Løsning Request for the permission of type 'System.Security.Permissions.EnvironmentPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed Feil oppstod i Window.DialogWindow:

Detaljer

of color printers at university); helps in learning GIS.

of color printers at university); helps in learning GIS. Making a Home Page Why a Web Page? Easier to submit labs electronically (lack of color printers at university); Easier to grade many labs; Provides additional computer experience that helps in learning

Detaljer

if-tester Funksjoner, løkker og iftester Løkker og Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS

if-tester Funksjoner, løkker og iftester Løkker og Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS Løkker og if-tester Gløer Olav Langslet Sandvika VGS 29.08.2011 Informasjonsteknologi 2 Funksjoner, løkker og iftester Læreplansmål Eleven skal kunne programmere med enkle og indekserte variabler eller

Detaljer

1. Introduksjon til Oracle Express Edition

1. Introduksjon til Oracle Express Edition Kjell Toft Hansen 22.06.2010 Opphavsrett: Forfatter og AITeL Lærestoffet er utviklet for faget LO177D Databaseprogrammering med PL/SQL 1. Dette notatet skal gi deg en kort innføring i bruken av Oracle

Detaljer

EXAM TTM4128 SERVICE AND RESOURCE MANAGEMENT EKSAM I TTM4128 TJENESTE- OG RESSURSADMINISTRASJON

EXAM TTM4128 SERVICE AND RESOURCE MANAGEMENT EKSAM I TTM4128 TJENESTE- OG RESSURSADMINISTRASJON Side 1 av 5 NTNU Norges teknisk-naturvitenskapelige universitet Institutt for telematikk EXAM TTM4128 SERVICE AND RESOURCE MANAGEMENT EKSAM I TTM4128 TJENESTE- OG RESSURSADMINISTRASJON Contact person /

Detaljer

SQL 3: Opprette tabeller, datainnsetting og utsnitt

SQL 3: Opprette tabeller, datainnsetting og utsnitt SQL 3: Opprette tabeller, datainnsetting og utsnitt Læreboka kap. 4 03.11.2008 Kjell Toft Hansen 1 Datainnsetting Legg til en ny leverandor i tabellen leverandor INSERT INTO leverandor (lev_nr, lev_navn,

Detaljer

Vanlige spørsmål om EndNote (april 2013)

Vanlige spørsmål om EndNote (april 2013) Vanlige spørsmål om EndNote (april 2013) Her er svar på en del vanlig spørsmål og problemer som kan dukke opp når du arbeider med EndNote. Innhold Import av referanser... 1 Hvis EndNote låser seg:... 2

Detaljer

JavaScriptbibliotek. Introduksjon MVVC. Informasjonsteknologi 2. Gløer Olav Langslet Sandvika VGS

JavaScriptbibliotek. Introduksjon MVVC. Informasjonsteknologi 2. Gløer Olav Langslet Sandvika VGS MVVC JavaScriptbibliotek Gløer Olav Langslet Sandvika VGS Knockout.js Informasjonsteknologi 2 Introduksjon I dag skal vi se nærmere på et JavaScriptbibliotek som heter Knockout. Knockout og andre biblioteker,

Detaljer

Vanlige spørsmål om EndNote (mars 2015)

Vanlige spørsmål om EndNote (mars 2015) Vanlige spørsmål om EndNote (mars 2015) Her er svar på en del vanlig spørsmål og problemer som kan dukke opp når du arbeider med EndNote. Innhold Import av referanser... 1 Hvis EndNote låser seg... 2 Hvordan

Detaljer

1. Relasjonsmodellen. 1.1. Kommentarer til læreboka

1. Relasjonsmodellen. 1.1. Kommentarer til læreboka Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag Relasjonsmodellen Tore Mallaug 2.9.2013 Lærestoffet er utviklet for faget Databaser 1. Relasjonsmodellen Resymé: Denne leksjonen gir en kort

Detaljer

MySQL-database, php. Innhold. 8 MySQL-database, php. 8.1 Databasen MySQL

MySQL-database, php. Innhold. 8 MySQL-database, php. 8.1 Databasen MySQL Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag Helge Hafting 16.10.2007 Lærestoffet er utviklet for faget LV476D/LN476D Linux systemdrift Innhold 8 1 8.1 Databasen MySQL.............................

Detaljer

Oppgavesett for NVivo 10

Oppgavesett for NVivo 10 Oppgavesett for NVivo 10 Oppgave 1: Nytt prosjekt Det første du ser når du åpner NVivo er en liste over de siste prosjektene du har jobbet med i programmet. I dag lager vi et nytt prosjekt. Klikk på New

Detaljer

Primus Brukerveiledning for masseimport av bilder. Primus 5.6.5

Primus Brukerveiledning for masseimport av bilder. Primus 5.6.5 Primus Brukerveiledning for masseimport av bilder Primus 5.6.5 Primus Brukerveiledning for masseimport av bilder 2 Innholdsfortegnelse Innholdsfortegnelse... 2 Brukerveiledning for masseimport av bilder

Detaljer

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

Databaser. Relasjonsmodellen 1 Læreboka: Kap. 2 Relasjonsmodellen Faglærere: Tore Mallaug, Kjell Toft Hansen Databaser Relasjonsmodellen 1 Læreboka: Kap. 2 Relasjonsmodellen Faglærere: Tore Mallaug, Kjell Toft Hansen Tema for dagen Relasjonsmodellen Hvorfor relasjoner? Fra ER diagram til relasjoner 22.09.2008

Detaljer

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer Institutt for datateknikk og informasjonsvitenskap Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer Eksamensdato: 23. mai 2013 Eksamenstid (fra-til): 09:00-13:00 Hjelpemiddelkode/Tillatte

Detaljer

Oppgave 1 1. Spørring: Resultattabell: 2. Spørring: Resultattabell: 3. Spørring:

Oppgave 1 1. Spørring: Resultattabell: 2. Spørring: Resultattabell: 3. Spørring: Kjell Toft Hansen 02.10.2008 Opphavsrett: Forfatter og AITeL Lærestoffet er utviklet for faget LO151D Informatikk 1: databaser Oppgave 1 1. Spørring: SELECT oh.*, delnr, kvantum FROM ordrehode oh, ordredetalj

Detaljer

1. Profiler og variabler

1. Profiler og variabler Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag Profiler og variabler Stein Meisingseth 26.05.2014 Lærestoffet er utviklet for faget IDRI3005 PowerShell 1. Profiler og variabler Resymé:

Detaljer

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer Institutt for datateknikk og informasjonsvitenskap Eksamensoppgave i TDT4145 Datamodellering og databasesystemer Faglig kontakt under eksamen: Svein Erik Bratsberg: 99539963 Roger Midtstraum: 99572420

Detaljer

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

TDT4102 Prosedyre og Objektorientert programmering Vår 2014 Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyre og Objektorientert programmering Vår 2014 Øving 10 Frist: 2014-04-11 Mål for denne øvinga:

Detaljer

Utvikling fra kjernen og ut

Utvikling fra kjernen og ut Utvikling fra kjernen og ut PHP-arkitektur Brukergrensesnitt! inn ut Dynamisk web-side bygges opp på grunnlag av spørring mot databasen Utviklingsretning Applikasjon Virkelighetsmodell Plattform Bruker

Detaljer

OM DATABASER DATABASESYSTEMER

OM DATABASER DATABASESYSTEMER OM DATABASER DATABASESYSTEMER Begrepet database brukes på flere måter, og det er ikke uvanlig å bruke det for å angi en total samling av data (i dette tilfellet lagrede opplysninger) uavhengig av hvordan

Detaljer

Vanlige spørsmål om EndNote (september 2015)

Vanlige spørsmål om EndNote (september 2015) Vanlige spørsmål om EndNote (september 2015) Her er svar på en del vanlig spørsmål og problemer som kan dukke opp når du arbeider med EndNote. Innhold Import av referanser... 1 Hvis EndNote låser seg...

Detaljer

SPORTDiscus søkehjelp

SPORTDiscus søkehjelp SPORTDiscus søkehjelp SPORTDiscus er en internasjonal idrettsdatabase som inneholder referanser og fulltekstdokumenter fra tidsskrifter, bøker, konferanser og avhandlinger. Den dekker alle sider av fagområdene

Detaljer

Monitoring water sources.

Monitoring water sources. Monitoring water sources. Generell Informasjon Versjon 2 Url http://com.mercell.com/permalink/38336681.aspx Ekstern anbuds ID 223314-2013 Konkurranse type: Tildeling Dokument type Kontraktstildeling Prosedyre

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - Kandidatnr: AITeL Eksamensdato: 2.desember 2009 Varighet: 0900-1300 Emnekode: Emnenavn: Klasse(r): LO191D / LC191D LO191D Videregående programmering

Detaljer

Oppgavesett videregående kurs i NVivo 9

Oppgavesett videregående kurs i NVivo 9 Oppgavesett videregående kurs i NVivo 9 Oppgave 1 Alt i en mappe Når man skal kode på lyd og video er det lurt å ha disse filene i samme mappa som NVivo-prosjektfila. Opprett en mappe på skrivebordet.

Detaljer

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Programmering i C++ Løsningsforslag Eksamen høsten 2005 Programmering i C++ Eksamen høsten 2005 Simen Hagen Høgskolen i Oslo, Avdeling for Ingeniørutdanning 7. desember 2005 Generelt Denne eksamensoppgaven består av tre oppgaver, pluss en ekstraoppgave. Det

Detaljer

Database security. Kapittel 14 Building Secure Software. Inf329, Høst 2005 Isabel Maldonado st10900@student.uib.no

Database security. Kapittel 14 Building Secure Software. Inf329, Høst 2005 Isabel Maldonado st10900@student.uib.no Database security Kapittel 14 Building Secure Software Inf329, Høst 2005 Isabel Maldonado st10900@student.uib.no Kort introduksjon Database er en organisert samling av data. SQL(Structured Query Language)

Detaljer

som blanker skjermen (clear screen). Du får en oversikt over alle kommandoene ved å skrive,

som blanker skjermen (clear screen). Du får en oversikt over alle kommandoene ved å skrive, 1. Last ned og installer XAMPP. 2. Sjekk at alt fungerer. 3. MySQL. Vi begynner med databaseserveren, MySQL. Gå til DOS klarmelding eller ledetekst (finnes under tilbehør på startmenyen om du ikke som

Detaljer

Object interaction. Innhold. Abstraksjon 03.09.2007. Grunnleggende programmering i Java Monica Strand 3. september 2007.

Object interaction. Innhold. Abstraksjon 03.09.2007. Grunnleggende programmering i Java Monica Strand 3. september 2007. Object interaction Grunnleggende programmering i Java Monica Strand 3. september 2007 1 Innhold Til nå: Hva objekter er og hvordan de implementeres I klassedefinisjonene: klassevariable (fields), konstruktører

Detaljer

Å lage Noark 4 uttrekk selv. Thomas Sødring thomas.sodring@jbi.hio.no 22452610/99570472

Å lage Noark 4 uttrekk selv. Thomas Sødring thomas.sodring@jbi.hio.no 22452610/99570472 Å lage Noark 4 uttrekk selv Thomas Sødring thomas.sodring@jbi.hio.no 22452610/99570472 Prosjektet IKA Kongsberg / HiOA Kan vi lage et Noark 4 uttrekk for en av IKA Kongsbergs kommuner? Uformell samarbeid

Detaljer

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

UNIVERSITETET. Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Hashliknende strukturer. UNIVERSITETET IOSLO Indeksering Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Treliknende strukturer Hashliknende strukturer Bitmapindekser Institutt for Informatikk INF30 22.2.2011

Detaljer

Brukerdokumentasjon. Webservices og webklient for kodeverk/ kodeverdi verifisering

Brukerdokumentasjon. Webservices og webklient for kodeverk/ kodeverdi verifisering Brukerdokumentasjon Webservices og webklient for kodeverk/ kodeverdi verifisering Innholdsfortegnelse... 3... 3... 3... 3... 4... 4... 4... 4... 8... 9... 10!... 10 "... 11 # $... 11 1. Om systemet 1.1.

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1300 Introduksjon til databaser Eksamensdag: 1. desember 2014 Tid for eksamen: 09.00 15.00 Oppgavesettet er på 5 sider. Vedlegg:

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring Kandidatnr: Eksamensdato: 6.desember 2010 Varighet: 0900-1200 Fagnummer: Fagnavn: Klasse(r): LC238D Datamodellering og databaser HING2009HA

Detaljer

Python: Oppslagslister (dictionaries) og mengder 3. utgave: Kapittel 9

Python: Oppslagslister (dictionaries) og mengder 3. utgave: Kapittel 9 Python: Oppslagslister (dictionaries) og mengder 3. utgave: Kapittel 9 TDT4110 IT Grunnkurs Professor Guttorm Sindre Læringsmål og pensum Mål Forstå prinsippene for, og kunne bruke i praksis Mengder (sets)

Detaljer

Beskrivelse av programmeringsspråket Simpila INF5110 - Kompilatorteknikk Våren 2012

Beskrivelse av programmeringsspråket Simpila INF5110 - Kompilatorteknikk Våren 2012 Beskrivelse av programmeringsspråket Simpila INF5110 - Kompilatorteknikk Våren 2012 Her beskrives syntaksen og den statiske semantikken (hva som skal sjekkes av kompilatoren) til språket Simpila. Den dynamiske

Detaljer

Oppdatering av person/studentforekomster i FS mot folkeregisteret

Oppdatering av person/studentforekomster i FS mot folkeregisteret Oppdatering av person/studentforekomster i FS mot folkeregisteret Det forutsettes at tillatelse til oppdatering av FS mot folkeregisteret er innhentet og at man er registrert som kunde hos EVRY. Mal for

Detaljer

NKKN typeforslag versjon 2.0.1. Definisjon av grunntypene

NKKN typeforslag versjon 2.0.1. Definisjon av grunntypene NKKN typeforslag versjon 2.0.1 For å lette innsamling av typedata er det laget en importrutine i NKKN som muliggjør automatisering. Foreløpig kan en kun sende forslag via email, en webservice er planlagt

Detaljer

>>12 Arbeide med MySQL

>>12 Arbeide med MySQL 106 Snarveien til MySQL og Dreamweaver CS5 >>12 Arbeide med MySQL I dette kapittelet vil du lære hvordan du installerer MySQL Workbench å opprette prosjekter å lage tabeller hvordan du ser på innholdet

Detaljer

SQL Server guide til e-lector

SQL Server guide til e-lector LES LETTERE, LES RASKERE, FÅ LESELYST! SQL Server guide til e-lector Innhold 1 Innledning... 2 2 SQL Express 2008 R2 installasjon... 2 3 Etter installasjon... 4 3.1 SQL Express... 4 3.1.1 Nettverksoppsett

Detaljer

Shellscripting I. Innhold

Shellscripting I. Innhold Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag Shellscripting I Tor Halsan 19.08.2010 Lærestoffet er utviklet for faget LN199D Scripting av Servere Resymé: Leksjonen er første innføring

Detaljer

Migrering av databaser - rapport og dokumentasjon av prosjektet. Kjetil Johnsen Sept. 7, 2003

Migrering av databaser - rapport og dokumentasjon av prosjektet. Kjetil Johnsen Sept. 7, 2003 Migrering av databaser - rapport og dokumentasjon av prosjektet Kjetil Johnsen Sept. 7, 2003 Dept. of Information Science University of Bergen, Norway Reference# TR-VED-KJ: 7.9.03 1.0 Målsettinger for

Detaljer

buildingsmart Norge seminar Gardermoen 2. september 2010 IFD sett i sammenheng med BIM og varedata

buildingsmart Norge seminar Gardermoen 2. september 2010 IFD sett i sammenheng med BIM og varedata buildingsmart Norge seminar Gardermoen 2. september 2010 IFD sett i sammenheng med BIM og varedata IFD International Framework for Dictionaries Hvordan bygges en BIM? Hva kan hentes ut av BIM? Hvordan

Detaljer

Antall oppgaver: 6. Alle trykte og skrevne hjelpemidler

Antall oppgaver: 6. Alle trykte og skrevne hjelpemidler "..{ ~ høgskolen i oslo t:mne:--dtstribuerte informasjonssystemer Emnekode:SO I 34A ~,6ruppe(r):3AA.3AB,3AC,3AD,3AE,3Af I Dato:08. I 2.2003 Faglig veileder: Frode Eika Sandnes Eksamenstid:9-14 Eksamensoppgaven

Detaljer

Håndbok om bruk av avansert søk i EUR-Lex

Håndbok om bruk av avansert søk i EUR-Lex Kommende EU-forskrifter Håndbok om bruk av avansert søk i EUR-Lex Komme i gang Gå til nettstedet EUR-Lex: http://eur-lex.europa.eu/homepage.html. Velg "Home" på den horisontale menyen og gå deretter til

Detaljer

SLUTTPRØVE 5602 DATABASER I 5.12.2008. 17 (inkludert vedlegg og denne forsida) Vedlegg: A: Eksempeldata og B: Svarark til oppgave 4

SLUTTPRØVE 5602 DATABASER I 5.12.2008. 17 (inkludert vedlegg og denne forsida) Vedlegg: A: Eksempeldata og B: Svarark til oppgave 4 Høgskolen i Telemark SLUTTPRØVE 5602 DATABASER I 5.12.2008 Tid: 9-14 Målform: Sidetal: Hjelpemiddel: Merknader: Bokmål og nynorsk 17 (inkludert vedlegg og denne forsida) Ingen Ingen Vedlegg: A: Eksempeldata

Detaljer

Plan for dagen. Vprg 4. Dagens tema - filbehandling! Strømmer. Klassen FilLeser.java. Tekstfiler

Plan for dagen. Vprg 4. Dagens tema - filbehandling! Strømmer. Klassen FilLeser.java. Tekstfiler Plan for dagen Vprg 4 LC191D Videregående programmering Høgskolen i Sør-Trøndelag Avdeling for informatikk og e-læring Anette Wrålsen Del: Intro til tekstfiler Del II: Mer om tekstfiler, Scanner-klassen

Detaljer

EGENDEFINERTE FUNKSJONER I SAS OG LITT OM OPEN SOURCE INTEGRASJON SAS FANS I STAVANGER 21.10.2015, MARIT FISKAAEN (SAS INSTITUTE)

EGENDEFINERTE FUNKSJONER I SAS OG LITT OM OPEN SOURCE INTEGRASJON SAS FANS I STAVANGER 21.10.2015, MARIT FISKAAEN (SAS INSTITUTE) EGENDEFINERTE FUNKSJONER I SAS OG LITT OM OPEN SOURCE INTEGRASJON SAS FANS I STAVANGER 21.10.2015, MARIT FISKAAEN (SAS INSTITUTE) EGENDEFINERTE FUNKSJONER INNLEDNING 2 På FANS 4. mars 2015 ble det vist

Detaljer

Del 3: Noark 5-basert databasestruktur

Del 3: Noark 5-basert databasestruktur Del 3: Noark 5-basert databasestruktur Oppgaven består av en CREATE-del, en INSERT-del og en SELECT-del. CREATEdelen går ut på å lage en databasestruktur etter spesifikasjonene i Noark 5. Strukturen er

Detaljer

versjon 1.1 Brukermanual

versjon 1.1 Brukermanual Side 1 05.11.2004 versjon 1.1 Brukermanual Side 2 05.11.2004 Beskrivelse av IKT-verktøy for strukturering og organisering av referanser til store mengder informasjon. GrandView er et program for strukturering

Detaljer

Brukermanual. Trio Visit Web. Trio Enterprise 5.0

Brukermanual. Trio Visit Web. Trio Enterprise 5.0 Brukermanual Trio Visit Web Trio Enterprise 5.0 COPYRIGHT NOTICE: No part of this document may be reproduced, distributed, stored in a retrieval system or translated into any language, including but not

Detaljer

Eksamen i Internetteknologi Fagkode: IVA1379

Eksamen i Internetteknologi Fagkode: IVA1379 Høgskolen i Narvik Side 1 av 5 Eksamen i Internetteknologi Fagkode: IVA1379 Tid: Mandag, 07.06.04, 9:00-12:00 Tillatte hjelpemidler: Alle trykte og skrevne hjelpemidler tillatt. Eksamen består av 4 oppgaver

Detaljer

Hvorfor ikke bruke Word?

Hvorfor ikke bruke Word? XML-basert dokumentasjon Erfaringer med innføring av xmlbasert dokumentasjonsverktøy hos Kongsberg Seatex Sissel Kolvik Tidligere IBRUK as nå SK Teknisk Dokumentasjon sissel@kolvik.priv.no 1 Hvorfor ikke

Detaljer

Dette er vår første obligatoriske oppgave i kurset Moderne Databaseteknologi.

Dette er vår første obligatoriske oppgave i kurset Moderne Databaseteknologi. Innledning Dette er vår første obligatoriske oppgave i kurset Moderne Databaseteknologi. Oppgaven går ut på å implementer en database. Vi skal utforske og implementere noen av de mer avanserte mulighetene

Detaljer

Innføring i bruk av CGI4VB

Innføring i bruk av CGI4VB Innføring i bruk av CGI4VB Her kommer en enkel innføring i bruk av modulen CGI4VB som kan benyttes for å lage CGI programmer i Visual Basic. CGI er en forkortelse for Common Gateway Interface den kommunikasjonsprotokollen

Detaljer

E-post: info@pipfrog.com Tel.: +372 6480111. Hurtigkurs for nybegynnere

E-post: info@pipfrog.com Tel.: +372 6480111. Hurtigkurs for nybegynnere Hurtigkurs for nybegynnere Innhold Forutsetninger...3 Prosess...3 Transport...4 Kategorier...5 Produkter...6 Forutsetninger Brukeren har tilgang til administratorens konto. Brukeren har på forhånd ikke

Detaljer

Trio Visit Security Manager

Trio Visit Security Manager Brukermanual Trio Visit Security Manager Trio Enterprise 4.1 COPYRIGHT NOTICE: No part of this document may be reproduced, distributed, stored in a retrieval system or translated into any language, including

Detaljer

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

TDT4102 Prosedyre og Objektorientert programmering Vår 2015 Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyre og Objektorientert programmering Vår 2015 Øving 3 Frist: 2014-02-07 Mål for denne øvinga:

Detaljer

INF1000 HashMap. Marit Nybakken marnybak@ifi.uio.no 2. november 2003

INF1000 HashMap. Marit Nybakken marnybak@ifi.uio.no 2. november 2003 INF1000 HashMap Marit Nybakken marnybak@ifi.uio.no 2. november 2003 Dette dokumentet skal tas med en klype salt og forfatteren sier fra seg alt ansvar. Dere bør ikke bruke definisjonene i dette dokumentet

Detaljer

EKSAMEN I FAG TDT4180 - MMI Lørdag 11. august 2012 Tid: kl. 0900-1300

EKSAMEN I FAG TDT4180 - MMI Lørdag 11. august 2012 Tid: kl. 0900-1300 Side 1 av 8 NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP Faglig kontakt under eksamen: Dag Svanæs, Tlf: 73 59 18 42 EKSAMEN I FAG TDT4180 - MMI Lørdag

Detaljer

TDT4300 Datavarehus og datagruvedri3, Våren 2014

TDT4300 Datavarehus og datagruvedri3, Våren 2014 TDT4300 Datavarehus og datagruvedri3, Våren 2014 23/1 2014 Trond Aalberg 1 Dagens tema MulAdimensjonale data Dimensjoner og hierarkier revisited Fra modellering Al OLAP implementasjon Vi ser på eksempler

Detaljer

Miniverden og ER- modell

Miniverden og ER- modell TDT4145 Datamodellering og databasesystemer SQL- oppgave 1 Miniverden og ER- modell Vi tar utgangspunkt i en enkel modell for en pizza- restaurant, der følgende ER- diagram beskriver databasen: Relasjonsdatabase-

Detaljer

Feilsøking i BO. Olav Syse, konsulent. Jan Terje Hansen, service manager. Be business intelligent

Feilsøking i BO. Olav Syse, konsulent. Jan Terje Hansen, service manager. Be business intelligent Feilsøking i BO Olav Syse, konsulent Jan Terje Hansen, service manager Hovedfokus: Business Intelligence 900 ansatte i Norge, Sverige, Danmark, Finland, Estland, Latvia, Litauen og Polen 135 ansatte i

Detaljer

Forsvunnet katt webside

Forsvunnet katt webside Lesson 3 Forsvunnet katt webside All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/18cplpy to find out what

Detaljer

MUS2830 - Interaktiv Musikk

MUS2830 - Interaktiv Musikk MUS2830 - Interaktiv Musikk Oppsummering 13 november 2014 Hvorfor studere interaktiv musikk? Oppdage nye musikalske uttrykk (F.eks. har flere laptop- og mobilorkestre oppstått de siste årene) Gjøre musisering

Detaljer

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL. 09.00 13.00

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL. 09.00 13.00 Side 1 av 6 NTNU Norges teknisk-naturvitenskapelige universitet BOKMÅL Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap EKSAMEN I FAG

Detaljer

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs BOKMÅL Side 1 av 7 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap KONTINUASJONSEKSAMEN

Detaljer

Beskrivelse for hvordan en kan digitalisere og importere musikk inn i Variations på TEST server EINER.UIB.NO (for installasjonen 17.

Beskrivelse for hvordan en kan digitalisere og importere musikk inn i Variations på TEST server EINER.UIB.NO (for installasjonen 17. Beskrivelse for hvordan en kan digitalisere og importere musikk inn i Variations på TEST server EINER.UIB.NO (for installasjonen 17. april 2012) Utgangspunktet er følgende sak: https://prosjekt.uib.no/issues/1976

Detaljer

>>21 Datamodellering i MySQL Workbench

>>21 Datamodellering i MySQL Workbench 21 MYSQL WORKBENCH 207 >>21 Datamodellering i MySQL Workbench I dette kapittelet vil du lære hvordan man lager datamodeller i MySQL Workbench hvordan man overfører en modell til MySQL I tillegg til å være

Detaljer

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4105 Informasjonsteknologi, grunnkurs (ITGK) 1 TDT4105 Informasjonsteknologi, grunnkurs (ITGK) Introduksjon til programmering i Matlab Rune Sætre satre@idi.ntnu.no 2 Læringsmål og pensum Mål Lære om programmering og hva et program er Lære å designe

Detaljer

Løse reelle problemer

Løse reelle problemer Løse reelle problemer Litt mer om løkker, metoder med returverdier og innlesing fra fil INF1000, uke4 Geir Kjetil Sandve Repetisjon fra forrige uke: while Syntaks: while (condition) do1; do2;... Eksempel:

Detaljer

SmartPass Mini User Manual BBNORGE.NO

SmartPass Mini User Manual BBNORGE.NO SmartPass Mini User Manual BBNORGE.NO Intro Welcome to the usermanual for your SmartPass Mini system. The first time you start the SmartPass you have to request a License. This is to regiser your license

Detaljer

Transaksjoner og flerbrukerproblematikk. Transaksjoner

Transaksjoner og flerbrukerproblematikk. Transaksjoner LC238D http://www.aitel.hist.no/fag/_dmdb/ Transaksjoner og flerbrukerproblematikk Transaksjoner side 2-4 Låseteknikker side 5 Isolasjonsnivåer side 6-7 Flerbrukerproblemer i fbm utførelse av transaksjoner

Detaljer

Norsk informatikkolympiade 2014 2015 1. runde

Norsk informatikkolympiade 2014 2015 1. runde Norsk informatikkolympiade 2014 2015 1. runde Sponset av Uke 46, 2014 Tid: 90 minutter Tillatte hjelpemidler: Kun skrivesaker. Det er ikke tillatt med kalkulator eller trykte eller håndskrevne hjelpemidler.

Detaljer

Debugging. Tore Berg Hansen, TISIP

Debugging. Tore Berg Hansen, TISIP Debugging Tore Berg Hansen, TISIP Innhold Innledning... 1 Å kompilere og bygge et program for debugging... 1 Når debugger er i gang... 2 Symbolene i verktøylinjen... 3 Start på nytt... 3 Stopp debugging...

Detaljer

Art & Architecture Complete

Art & Architecture Complete Art & Architecture Complete Søkeveiledning Norsk versjon Logg inn via http://www.khib.no/norsk/omkhib/biblioteket/elektroniske-ressurser-og-databaser/ Brukernavn: ns147057main Passord: main Brukernavn

Detaljer

Utviklingssak/ID Resume Endring (g2) Rettet i versjon (g1) Rettet i versjon

Utviklingssak/ID Resume Endring (g2) Rettet i versjon (g1) Rettet i versjon Utviklingssak/ID Resume Endring (g2) Rettet i versjon (g1) Rettet i versjon Går inte att spara typ tid "ingen beräkning" i Legg till zon Beskrivning av resultatintjäning" Denna raden behövs när man använder

Detaljer

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Mandag 6. august 2012, kl. 15:00-19:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikrer Rune Sætre. Kontaktperson under

Detaljer

Innføring i bruk av CGI4VB

Innføring i bruk av CGI4VB Innføring i bruk av CGI4VB Her kommer en enkel innføring i bruk av modulen CGI4VB som kan benyttes for å lage CGI programmer i Visual Basic. CGI er en forkortelse for Common Gateway Interface den kommunikasjonsprotokollen

Detaljer

www.lakselvdal.no Brukerkurs 16.februar 2012

www.lakselvdal.no Brukerkurs 16.februar 2012 Brukerkurs 16.februar 2012 Kort introduksjon til world wide web og struktur der. Forskjellige måter å lage seg en hjemmeside på. Hvordan vi i Lakselvdal gjør det. Og viktigst av alt, utdanne flere til

Detaljer

Juridiske aspekter ved publisering i åpne institusjonelle arkiv

Juridiske aspekter ved publisering i åpne institusjonelle arkiv Juridiske aspekter ved publisering i åpne institusjonelle arkiv Professor dr juris Olav Torvund Publisering i åpne institusjonelle arkiv Førstegangspublisering Masteroppgaver Doktoravhandlinger (?) Grålitteratur

Detaljer