• No results found

itf10306 21.5.19 til utskrift

N/A
N/A
Protected

Academic year: 2022

Share "itf10306 21.5.19 til utskrift"

Copied!
31
0
0

Laster.... (Se fulltekst nå)

Fulltekst

(1)

ITF10306 1 Databaser

1/10

Innledning

EKSAMEN

Emnekode: ITF10306 Emnenavn: Databaser Dato: 21.05.19

Eksamenstid: 09.00 - 13.00.

Hjelpemidler: Syntaksoversikt (vedlagt oppgaven).

Faglærer: Edgar Bostrøm/Ida K. Thoresen Sensurfrist: 11.06.19

Karakterene er tilgjengelige i Studentweb.

Om oppgavesettet

Oppgavesettet består av 3 tekstoppgaver og en flervalgsoppgave. Hver av de 4 oppgavene teller likt ved bedømningen.

Vedlegget består av 6 sider.

På flervalgsoppgaven er minst ett av svaralternativene korrekte, dette betyr at det kan være kun ett korrekt alternativ, men det kan også være flere eller alle.

For hvert korrekt alternativ gis det 1 poeng, mens det for galt svar gis -0,5 poeng.

Les gjennom hele oppgavesettet før du starter. Det vil kunne være informasjon underveis som er viktig for en senere oppgave. Være også svært nøye med å lese oppgaveteksten og kontrollere løsningen på hver

deloppgave!

Vedlagt er en syntaksoversikt, som finnes ved siden av oppgavearket.

Du kan benytte utleverte ark der du ønsker å lage illustrasjoner, modeller etc. Når du gjør det husk å skrive SE PAPIRARK som svar på de oppgavene dette gjelder, så er du sikker på at sensor ser hva du har skrevet i tillegg til det som leveres elektronisk.

Karakterene er tilgjengelige for studenter på studentweb senest 2 virkedager etter sensurfrist.

Bompenger.

Noen av dere blir kanskje i dårlig humør av det, men mye av dagens oppgave handler altså om bompenger.

Vent med å deppe til etter eksamen!

(2)

ITF10306 1 Databaser

2/10

(3)

ITF10306 1 Databaser

3/10 1 Oppgave 1. SQL’e vi betale så mye?

Oppgave 1. SQL’e vi betale så mye? Tid: 1 time.

Vi snakker om bommer eller bomstasjoner, selv om det jo egentlig er steder med elektronisk registrering av passeringen.

Dette svært forenklede systemet består av informasjon om bommene inkl. pris, dvs. hva en passering gjennom denne bommen koster, hvilke biler som passerer, og selve passeringen, inkl. tiden for passeringen.

Kjennetegn er det som vi mer folkelig kaller for bilnummer (f.eks. AA98765). Vi regner bare med norske kjøretøy.

Samme person (og firma) kan eie flere biler. For firmaer skrives firmanavnet inn som etternavn, mens fornavn-kolonnen ikke blir brukt. Tilsvarende bruker vi firmanr i fødselsnummer-kolonnen.

Tabellen Bil inneholder en Biltypekode, dette beskrives nærmere i oppgave 3.

De ulike bommene kan ha ulik pris for passering, men foreløpig regner vi at alle biltyper har samme pris for en gitt bom.

Passeringsnr i tabellen passering er en teller/løpenummer. Fremmednøklene i tabellen framkommer av korresponderende primærnøkler i de andre tabellene.

BIL

Kjennetegn Biltypekode Fødselsnr Etternavn Fornavn Adresse Postnr Poststed BOM

Bomnr Bomnavn Pris PASSERING

Passeringsnr Kjennetegn Bomnr Dag Måned År Tidspunkt

a. Skriv ut alt om bommer som inneholder ‘tunnell’ som en del av navnet sitt.

b. Skriv ut alle passeringer i 2019 for biler med kjennetegn som begynner på bokstavene AS og AA. Kjennetegn,

bomnr og -navn, samt dato og tidspunkt skal skrives ut. Det skal sorteres slik at de nyeste passeringene kommer først.

c. Skriv ut alt fra tabellen Bil for de bilene som ikke har noen passeringer i det hele tatt i 2019.

d. Hvilken bom er den dyreste å passere gjennom? Bomnr, -navn og pris skal være med. Det kan godt være flere som er like dyre, og i så tilfelle skal alle disse være med.

e. Skriv ut antall passeringer for hver bomstasjon. Bomnr, -navn og antall passeringer skal med.

f. Skriv ut kjennetegn på biler som har betalt over 10.000 i bompenger i 2019.

g. Skriv ut kjennetegn, bomnr og -navn på de bilene hvor alle passeringene har skjedd på samme bom.

Du kan bruke et eget ark hvis du ønsker å lage illustrasjoner, modeller etc. Hvis du gjør det, skriv SE PAPIRARK SE PAPIRARK for de oppgavene det gjelder, slik at du er sikker på at sensor ser hva du har skrevet i tillegg til det som leveres elektronisk.

Skriv ditt svar her...

(4)

ITF10306 1 Databaser

4/10 2 Oppgave 2. Mer SQL. Normalisering

Oppgave 2. Mer SQL. Normalisering Tid: 1 time.

a. Lag en CREATE TABLE-setning for å lage tabellen PASSERING. Tidspunkt kan du regne f.eks. som en streng eller du kan definere det med datatypen time. Det er en fordel hvis du får med at dato må være et tall fra 1 til 31, og måned må være et tall fra 1 til 12.

b. Definer fremmednøkler for PASSERING. Bruk ALTER TABLE-setninger. Ta med endringstyper, vi bruker RESTRICT for sletting og CASCDE for endring.

c. Bilen med kjennetegn AA12345 er byttet ut med en ny bil med kjennetegn AA98765. Vi skal legge inn kjennetegnet for den nye i stedet for den gamle. Bruk en UPDATE-setning for dette.

d. Skriv ut bomnr, -navn og antall passeringer for den bomstasjonen som har flest passeringer. Det kan godt være flere som har like mange passeringer.

e. Skriv ut kjennetegn på biler som har passert både bomnr 13 og bomnr 17 på samme dato.

f. Lag en liste med alle brudd på 2NF (2. normalform) som finnes i tabellen BIL. Alternativt kan du bruke et determineringsdiagram for å vise bruddene.

g. Foreslå ny tabellstruktur for BIL (evt. fordelt på flere tabeller) slik at det ikke bryter med 2NF

Du kan bruke et eget ark hvis du ønsker å lage illustrasjoner, modeller etc. Hvis du gjør det, skriv SE PAPIRARK SE PAPIRARK for de oppgavene det gjelder, slik at du er sikker på at sensor ser hva du har skrevet i tillegg til det som leveres elektronisk.

Skriv ditt svar her...

(5)

ITF10306 1 Databaser

5/10 3 Oppgave 3. Datamodellering

Oppgave 3. Datamodellering Tid: 1 time.

Vi skal gjøre en del utvidelser i forhold til det enkle systemet i oppgave 1.

Det finnes jo mange bomselskap i landet, og de har ansvar for de ulike bommene som finnes. Vi skal ha med informasjon om dette, med BomselskapID, BomselskapNavn, og hvilket bomselskap hver bom hører til.

Personer (og firmaer) kan opprette en avtale (bomavtale) med ett og bare ett bompengeselskap, man har i tilfelle et avtalenr og dato for når avtalen ble inngått. Denne avtalen kan gjelde flere biler. Det typiske er da at de får f.eks.

rabatt (f.eks. 30%) på passeringer for dette bompengeselskapets bommer, men denne kan variere litt fra avtale til avtale, noen er jo flinke til å forhandle!! De som er ekstra flinke til å forhandle kan også få prosenter hos et annet bomselskap enn den de har avtale med. Rabattprosenten(e) skal inkluderes i systemet.

I praksis har bommene ulike priser for ulike biltyper. For hver bom må det derfor finnes en oversikt over ulike biltyper med biltypekode og -betegnelse (f.eks. BB - Personbil, LA - Lastebil, EL – Elbil osv., og nye koder og - betegnelser må kunne legges inn). Dette må være knyttet til den enkelte bil. Vi antar at en bil kun er knyttet opp mot en biltypekode.

Det må også finnes en oversikt over priser for hver Biltype på hver bomstasjon (f.eks. at det for passering gjennom bomstasjon nr. 2918 koster 25 kr. for BB, 60 kr. for LA, osv.). Dette vil dermed danne grunnlaget for å kunne ha ulike priser avhengig av hvilken biltype det er.

Lag en datamodell hvor du tar utgangspunkt i det som er sagt i oppgave 1 og 2, og du legger til (evt. endrer) ut fra det som er beskrevet over. Det er en fordel hvis både min. og max. er med i modellen, og tilsvernde med verb/roller der det kan klargjøre modellen.

Kommentér der du mener det kan være tvil om hvordan strukturen bør være.

(Det legges mest på modellen, men kommentarer vil også telle med.)

Du kan bruke et eget ark hvis du ønsker å lage illustrasjoner, modeller etc. Hvis du gjør det, skriv SE PAPIRARK SE PAPIRARK for de oppgavene det gjelder, slik at du er sikker på at sensor ser hva du har skrevet i tillegg til det som leveres elektronisk.

Skriv ditt svar her...

Oppgave 4 - Flervalgsoppgave

På hver oppgave er minst ett av svaralternativene korrekte, dette betyr at det kan være kun ett korrekt alternativ, men det kan også være flere eller alle.

For hvert korrekt svaralternativ gis det 1 poeng, mens det for galt svar gis -0,5 poeng.

(6)

ITF10306 1 Databaser

6/10 4 Oppgave 4.a

Hvilke strukturer av datamodeller har vi?

Velg ett eller flere alternativer

Fysisk nivå

Konseptuelt nivå Praktisk nivå Logisk nivå

5 Oppgave 4.b

Hva er galt om fremmednøkler?

Velg ett eller flere alternativer

Primærnøkkelen fra hovedtabellen blir fremmednøkkel i detaljeringstabellen

Uten fremmednøkler hadde vi ikke klart å koble informasjon fra forskjellige tabeller sammen Fremmednøklene må aldri settes på mangesiden i en relasjon

I en identifiserende struktur benyttes fremmednøkkelen som en del av primærnøkkelen i detaljeringstabellene

6 Oppgave 4.c

Vi kan gjøre flere typer kontroll av lovlige verdier. Hvilke?

Velg ett eller flere alternativer

Kontroll av maks antall Kontroll i flere dimensjoner Kontroll i relasjoner

Kontroll i ett nivå

(7)

ITF10306 1 Databaser

7/10 7 Oppgave 4.d

Hva er korrekt om nettverk?

Velg ett eller flere alternativer

Både rettede og urettede grafer er en type nettverk En relasjonsdatabase kan beskrive visse nettverk Et nettverk er et system av noder og kanter

En matrise kan benyttes for å beskrive et nettverk

8 Oppgave 4.e

Hva må være oppfylt for at en tabell skal være på, 2NF, 2. normalform?

Velg ett eller flere alternativer

Deler av nøkkelen skal ikke kunne determinere ikke-nøkkelattributter Alle attributter skal være atomiske

Enhver determinant er en kandidatnøkkel

Ikke-nøkkelattributter skal ikke være transitivt avhengige av primærnøkkelen

9 Oppgave 4.f

Hvordan kobler vi data i flere tabeller sammen i en relasjonsdatabase?

Velg ett eller flere alternativer

Vi kobler data sammen basert på kolonnenavnene

Vi kobler data sammen basert på hvordan dataene ser ut Vi kobler data sammen basert på likhet i verdier

Vi kobler data sammen basert på rekkefølgen av radene i tabellen

(8)

ITF10306 1 Databaser

8/10 10 Oppgave 4.g

Hvilke egenskaper regnes som faste egenskaper i en relasjonsdatabase?

Velg ett eller flere alternativer

Alle kolonner må inneholde en verdi En kolonne skal inneholde kun én verdi Relasjonsdatabaser består kun av tabeller Radene i tabellene er usorterte

11 Oppgave 4.h

Hva er korrekt om følgende relasjonsoperatorer i forbindelse med relasjonsdatabaser?

Velg ett eller flere alternativer

Ved en projeksjon oppretter vi en ny relasjon ut i fra bestemte attributter i en eksisterende relasjon

Ved en forening oppretter vi en ny relasjon ved å sette sammen hver tuppel i en relasjon med hver tuppel i en annen relasjon

Når vi benytter en seleksjon(restriksjon) oppretter vi en ny relasjon ut i fra bestemte tupler i en eksisterende relasjon

Ved et produkt oppretter vi en ny relasjon med sammensetting av tupler fra to relasjoner på et felles attributt.

12 Oppgave 4.i

Hva er ikke korrekt når vi snakker om en visning(view)?

Velg ett eller flere alternativer

En visning kalles gjerne en virtuell tabell Det lagres data i en visning

En visning er et søkbart objekt i en database som defineres av en spørring

Man kan ikke spørre mot en visning likt som man kan mot en tabell

(9)

ITF10306 1 Databaser

9/10 13 Oppgave 4.j

Hva er korrekt når vi snakker om alias i database sammenheng?

Velg ett eller flere alternativer

Et alias benyttes for å gi en tabell et midlertidig navn Aliaset eksisterer kun så lenge spørringen benyttes Et alias er et annet navn på en tabell

Alias benyttes gjerne for å gi kolonner et mer forståelig navn

14 Oppgave 4.k

Hva stemmer om følgende måter å gjenfinne data på?

Velg ett eller flere alternativer

Ved å benytte indekser oppretter vi en hjelpetabell som inneholder indeksverdiene og som benyttes for raskt oppslag i grunntabellen som er indeksert.

Ved et full søk (lineær søk) har vi sorterte data og halverer datamengden vi i søker i hver gang vi søker.

Vi vet verdien vi leter etter, sjekker verdien midt i søkemengden og fortsetter søket i den delen av mengden vi vet vår data befinner seg i.

Ved et binærsøk har vi usorterte data og må derfor søke gjennom alle radene i tabellen for å finne den dataen vi leter etter.

Hashing er en metode som benytter en hashingfunksjon for å gi alle mulige verdier et resultat innenfor et ønsket intervall. Hensikten med dette er å enkelt finne data med like eller ulike verdier.

15 Oppgave 4.l

Hvilke egenskaper kan en transaksjon ha?

Velg ett eller flere alternativer

Consistency - databasen må være konsistent før og etter en endt transaksjon

Isolation - transaksjoner kan ikke arbeide med data som allerede er i midlertidig endret tilstand Atomicity - alt eller ingenting blir gjennomført

Durability - resultatet av den utførte transaksjonen er endelig/vil ikke forsvinne

(10)

ITF10306 1 Databaser

10/10 16 Oppgave 4.m

Hva er korrekt om en delt lås, leselås?

Velg ett eller flere alternativer

En delt lås benyttes kun ved lesing

Forutsetter at det ikke er andre låser på objektet

Godtar at andre transaksjoner kan lese, men ikke endre dataene dersom en transaksjon holder delt lås på et objekt.

En leselås godtar at flere transaksjoner leser de samme dataene

17 Oppgave 4.n

Hvilke måter kan vi gjenopprette en database på?

Velg ett eller flere alternativer

Foroverrulling RAID

Bakoverrulling

Fjerne låser

(11)

Question 1

Attached

(12)

1

SQL-syntaks – noen elementer

o Syntaksoversikten gjelder SQL2.

o Oversikten er ikke fullstendig og heller ikke helt presis, men er forhåpentligvis til hjelp.

o [ ] brukes om frivillige elementer, det er altså ikke med i SQL-språket.

o ¦ brukes som eller, det er altså ikke med i SQL-språket.

o { ….. } start, hhv. slutt, ” ”.

o < ….> brukes for å beskrive et språkelement. Disse beskrives eller er beskrevet tidligere i syntaksbeskrivelsen eller følger av det generelle mønsteret fra andre.

o Fet skrift brukes om faste språkelementer

Create / alter / drop table-setning Create table

CREATE TABLE <tabellnavn> (<kommaseparert tabelldefinisjonsliste>);

<kommaseparert tabelldefinisjonsliste>:

• liste med en eller flere elementer som er enten <kolonnedefinisjon> eller <skrankedefinisjon>

• hvis listen består av flere elementer, er det komma mellom disse.

• listen må ha minst en <kolonnedefinisjon>, har som regel også minst en <skrankedefinisjon>

<kolonnedefinisjon>:

• <kolonnenavn> <datatype> [OT ULL] [DEFAULT <verdi>] , samt eventuell <skrankedefinisjon>, men uten (den første) kommaseparerte kolonnelisten.

<skrankedefinisjon> (det finnes noen flere enn de som er omtalt her)

• [COSTRAIT <skrankenavn>] PRIMARY KEY (<kommaseparert kolonneliste>)

• [COSTRAIT <skrankenavn>] FOREIG KEY (<kommaseparert kolonneliste>) REFERECES

<tabell> (<kommaseparert kolonneliste>) [O UPDATE <ref.oper.>] [O DELETE <ref.oper.>]

• [COSTRAIT <skrankenavn>] UIQUE (<kommaseparert kolonneliste>)

• [COSTRAIT <skrankenavn>] CHECK (<betingelse>)

<kommaseparert kolonneliste>:

• en eller flere kolonner. Hvis det er flere kolonner er disse adskilt med komma

<ref.oper.>: (dvs. referanseintegritetsoperasjon)

• {RESTRICT ¦ O ACTIO ¦ CASCADE ¦ SET ULL}

Alter table

ALTER TABLE <tabellnavn>

{ADD

¦

DROP} {[COLUM]1 <kolonnedefinisjon>¦ <skrankedefinisjon>};

Noen systemer mangler DROP.

Drop table

DROP TABLE <tabellnavn>;

1 Skal være med for noen systemer, skal utelates for andre.

(13)

2

Select-setninger.

Select-setning uten gruppering

SELECT [DISTICT] <kommaseparert resultatiste>

FROM <kommaseparert tabellliste>

[WHERE <betingelse>]

[ORDER BY <ordnet kolonneliste med sortering>];

<kommaseparert resultatliste>:

• kommaseparert liste, hvor hvert element er en av o en kolonne

o en beregning m.m.

o en select-setninger som returnerer en verdi for hver verdi av de andre i listen.

• et element kan gis et eget navn (alias). Mest vanlig for å gi resultatet av en beregning et folkelig navn. Skrives

<kolonne> / <beregning> AS <NyttNavn>.

<kommaseparert tabelliste>:

• enkleste form er en enkelt tabell eller en liste av tabeller med komma mellom

• et element i denne kan også være alias, på formen <tabellnavn> [AS] <aliasnavn>. Alias må brukes hvis man trenger to eller flere benevnelser for samme tabell.

• elemenene i denne kan være IER JOI, LEFT [OUTER] JOI eller RIGHT [OUTER] JOI . Eks.: <tabell1> LEFT OUTER JOI <tabell2> O <tabell1>.<kolonne1> = <tabell2>.<kolonne2>

• inner, left og right join kan også nestes i flere nivåer.

<betingelse>:

• består av en eller flere <enkeltbetingelse> evt. med AD eller OR mellom.

• paranteser brukes på vanlig måte, AD binder sterkere enn OR

<enkeltbetingelse>:

• er et utsagn som, for en gitt rad i from-setningen, resulterer i enten sant eller usant.

• ofte <kolonnenavn> = <verdi>, men kan også være >, >=, <>, <=

• hvis du ikke bruker INNER / LEFT / OUTER JOIN er det viktig å ha med <tabell1>.PK = <tabell2>.FK

BETWEE <startverdi> AD <sluttverdi>

• søking i starten av en streng (trunkert søking): <kolonne> LIKE ’<startstreng>%’

• søking i om delstrengen finnes i kolonnen: <kolonne> LIKE ’%<delstreng>%’

OT brukes til å negere en enkeltbetingelse eller sammensatt betingelse. Binder sterkere enn AD og OR.

• <kolonne> IS [OT] ULL brukes for å sjekke om en kolonne er NULL, evt. ikke er NULL.

• delspørringer med IN / NOT IN:

<kolonne> [OT] I

(SELECT <enkeltkolonne> …………)

• delspørringer med EXISTS / NOT EXISTS:

[OT] EXISTS

(SELECT …………)

ALL og AY brukes på resultatet av en delspørring.

o ALL er sann hvis alle i delspørringen oppfyller kriteriet. Usant hvis delspørringen er tom.

o

AY er sann hvis noen (en eller flere) oppfyller kravet. Sant hvis delspørringen er tom. SOME er ekvivalent med ANY.

o

Tips: WHERE <kolonne> >= ALL (SELECT <kolonneliste> …… ) er det samme som WHERE <kolonne> = (SELECT max(<kolonne>) ……….)

<ordnet kolonneliste med sortering>:

• som kolonneliste, men i sorteringsprioritet, og hver kolonne kan etterfølges av ASC eller DESC.

• hvis det ikke oppgis sortering, blir sorteringen i stigende rekkefølge.

(14)

3

Select-setning med gruppering / aggregering

For det som er felles for alle select-setning henvises det til 0.

SELECT <kommaseparert resultat- eller aggregeringsliste>

FROM <kommaseparert tabelliste>

[WHERE <betingelser>]

[GROUP BY <kommaseparert resultatliste>]

[HAVIG <betingelse for gruppe>]

[ORDER BY <ordnet kolonneliste med sortering>];

<kommaseparert resultat- eller aggregeringsliste>:

• NB! hvert element er enten et element fra group by-listen eller en <aggregeringsfunksjon>.

<aggregeringsfunksjon>:

• {count(*)

¦

count(<kolonne>)

¦

sum(<kolonne>)

¦

max(<kolonne>)

¦

min(<kolonne>)

¦

avg(<kolonne>)

¦

mfl.}

• <kolonne> kan også være en beregning

• noen systemer har også mulighet for count (distinct <kolonne>)), teller altså opp antall ulike.

• hvis vi ikke har med GROUP BY gjelder aggregeringen for hele tabellen

<betingelse for gruppe>:

• bare aktuelt dersom man har GROUP BY.

• betingelse som gjelder gruppen, innholder ofte en aggregeringsfunksjon, f.eks. count(*) > 1, sum(<kolonne>)

= (select sum( ……)

• kan inneholde AD, OR, OT osv., på samme måte som <betingelse>

ISERT / UPDATE / DELETE INSERT-setning

ISERT ITO <tabell> [(<kommaseparert kolonneliste>)]

{ VALUES (<kommaseparert verdiliste>)

¦

<select-setning> } ;

UPDATE-setning

UPDATE <tabell>

SET <kommaseparert kolonne/verdi-liste>

[WHERE <betingelse>];

• I noen systemer kan <tabell> i stedet være en begrenset form for <kommaseparert tabellliste>

<kommaseparert kolonne/verdi-liste>:

• hvert element består av <kolonne> = <konstant> eller <kolonne> = <beregninget verdi, f.eks. på grunnlag av tidligere verdi>

• oftest bare en slik kolonne/verdi-kombinasjon, men kan være flere.

DELETE-setning

DELETE FROM <tabell>

[WHERE <betingelse>];

(15)

4

Create / drop view Create view

CREATE VIEW <utsnittsnavn> [(<kommaseparert kolonneliste>)]

AS

<select-setning>;

• kolonnelisten er nødvendig hvis det ikke er fullt samsvar mellom kolonnenavn i select-setningen og utsnittet.

Drop view

DROP VIEW <utsnittsnavn>;

Indekser

CREATE [UIQUE] IDEX <indeksnavn> O <tabell> (<ordnet kolonneliste med sortering>);

DROP IDEX <indeksnavn>;

Noen systemer har andre mekanismer i tillegg.

Gi / frata rettigheter til tabeller, laging av brukere, databaser m.m.

GRAT <rettigheter> O <tabell el.l.> TO <bruker/gruppeliste> [WITH GRAT OPTIO];

REVOKE [<rettigheter>

¦

GRAT OPTIO] FROM <tabell el.l.> TO <bruker/gruppeliste>;

<rettigheter>:

kommasepartert liste med en eller flere av SELECT, ISERT, UPDATE (<kolonnenavn>), DELETE, ALL m.fl..

<bruker/gruppeliste>:

kommasepart liste med en eller flere brukere eller grupper. I tillegg finnes ofte noen standardgrupper, som PUBLIC og DBA.

Noen variasjoner og begrensninger fra et system til et annet.

Annet:

Muligheter for å lage / ta bort brukere etc., CREATE USER, gjerne sammen med IDETIFIED BY <passord>.

Tilsvarende DROP USER.

Muligheter for å lage nye databaser, CREATE DATABASE <databasenavn>

I noen systemer: laging av typer, domener etc.

(16)

5

D a ta m o d el ln o ta sj o n i 3 d ia le k te r: C h en , k k ef o t o g n ed sk a le rt U M L . E n d el d et al je r o g v ar ia sj o n er e r u te la tt . C h en s E R K k ef o t n ed sk a le rt U M L G ru n n le g g en d e. F o r al le d ia le k te r: • at tr ib u tt er k an t as m ed e ll er u te la te s (a v h . av h v o r la n g t i p ro se ss en o g h v o r st o r m o d el le n b li r) • d it to f o r d o m en er /d at at y p er • d et f in n es v ar ia n te r fo r å v is e m in ./ m ax .

1 m

Begrep: Entitet(styper), relasjon(styper), attributter. Begrep: Entitet(styper), relasjon(styper), attributter.

1 er arbeidssted for jobber i

* Begrep: Entitet(styper) eller objektklasser, (multiplisitets)assosiasjoner, attributter.

E r re p et is jo n e r ti ll a tt ? Ja , p å k o n se p tu el t n iv å N ei – s p li tt es u t i eg n e en ti te ts ty p er Ja , p å k o n se p tu el t n iv å E v en tu el le p ri m æ r- o g fr em m ed n ø k le r T as g je rn e ik k e m ed H v is d et t as m ed : M ar k er es f .e k s. m ed p ri m æ rn ø k k el : u n d er st re k in g fr em m ed n ø k k el : p ri k k et l in je , * , el .l .

H v is d et t as m ed : m ar k er es g je rn e m ed { P K } h h v . { F K } b ak a tt ri b u tt n av n et . H v is ( d el a v ) b eg g e d el er : { P K ,F K } E n ti te ti se ri n g K an g jø re s, m en v an li g v is s et te s d et b ar e p å at tr ib u tt er p å re la sj o n en . B ar e n ø d v en d ig v ed 2 . o rd en s en ti te ti se ri n g ( en ti te ti se ri n g a v n o e so m a ll er ed e er e n ti te ti se rt e ll er k u n n e v æ rt e n ti te ti se rt ).

G jø re s d er so m ” re la sj o n en s k al i n n eh o ld e at tr ib u tt er ”.

evt. med attributter

K an g jø re s, m en b ar e n ø d v en d ig v ed d et so m e ll er s v il le v æ rt 2 . o rd en s en ti te ti se ri n g . A ss o si at iv e en ti te ts ty p er m / at tr ib u tt er k an l eg g es p å: * *

arbeids sted

Avdeling Person PersID :::::::::

Avdeling jobber i

Avdeling Person PersID :::::::::

Verbal beskrivelse. Kan evt. settes på begge sider. Alternativt brukes en rolle som ”relasjonsnavn”

Rollenavn / relasjonsnavn Max. nærmest entitets- typen, evt. min. lenger unna

1 er (og kan skrives) 1..1 0..1 må skrives 0..1 * er (og kan skrives) 0..* 1..* betegner 1..m.

Verbal beskrivelse. På en eller begge sider. Pil viser retningPersonnr PersonKurs PersonDeltagelseKurs

Personnavn

Person PersonKurs Deltagelse PersID ::::::::::

Eksempel med attributter min. 0, dvs. Avd. kan ha person

(17)

6

Ordrelinje

Ordre

n re r el a sj o n st y p e / a ss o si a sj o n er ( n > 2 ) In n eb y g d t i n o ta sj o n en , in g en f o rs k je ll p å b in æ re o g n -æ re . E v t. e n ti te ti se ri n g g jø re s fø rs t, d er et te r h en g es n y e en ti te ts ty p er p å d en n y e en ti te ts ty p en . B ru k f o r å k n y tt e d em s am m en . A ss o si at iv e e n ti te ts ty p er k an b ru k es A v h en g ig h et a v a n d re en ti te ts ty p e r (e n e n ti te t er a v h en g ig a v ek si st en se n a v e n a n n en en ti te t) k al le s sv ak e n ti te t / w ea k e n ti ty

M ar k er es v ed a t fr em m ed n ø k k el en e r en d el av p ri m æ rn ø k k el en ( p å m an g e- si d en ) k al le s k o m p o si sj o n . F in n es o g så e n m in d re st er k k o b li n g s o m k al le s ag g re g er in g ( m ar k er es m ed i s te d et f o r ) . A rv F in n es i k k e, m å i ti lf el le b es k ri v es so m 1 :1 , m en g ir i k k e eg en tl ig a rv . F in n es i k k e, m å i ti lf el le b es k ri v es s o m 1 : 1 , m en g ir i k k e eg en tl ig a rv .

{Mandatory, Or}

I ti ll eg g : k an b es k ri v e k o m b in as jo n er a v m an d at o ry /o p ti o n al o g o m e n o v er o rd n et k an k o b le s ti l m ax . 1 e ll er t il f le re u n d er o rd n ed e (o r el le r an d ), s e o v er . K an o g så v æ re a rv m ed ”e tt b ar n ”, f .e k s. b ar e ”K u n d e” o g ” U te n la n d sk u n d e” . F o rh o ld t il n o rm a li se ri n g M å ev t. g jø re u ts p li tt in g er a v re p et is jo n er E r n o rm al is er t M å g jø re e v t. u ts p li tt in g er a v r ep et is jo n er O v er ri n g t il re la sj o n sd a ta b a se r O v er fø re s ti l k rå k ef o t el .l . fø rs t (f ra k o n se p tu el t ti l lo g is k n iv å) A lt er n at iv t: L eg g p å p ri m æ r- o g f re m m ed n ø k le r E v t. r ep et is jo n er m å ta s b o rt . E n ti te ts ty p er b li r ti l ta b el le r. R el as jo n er s o m g je ld er 1 :m t as b o rt , re la sj o n er s o m g je ld er m :m b li r eg n e ta b el le r.

E v t. m an g e- ti l- m an g e m å en ti te ti se re s. E ll er s: en ti te ts ty p er b li r ti l ta b el le r E v t. r ep et is jo n er m å ta s b o rt . E n ti et st y p er /o b je k tk la ss er b li r ti l ta b el le r. A ss o si as jo n sa tt ri b u tt er i m :m b li r eg n e ta b el le r, a n d re m :m e n ti te ti se re s. H ø y er e o rd en s re la sj o n st y p er b li r ti l ta b el le r. A rv m å o m fo rm u le re s (f le re a lt er n at iv er fi n n es , in g en e r h el t g o d e) . D er so m m an b ru k er O R D B -u tv id el se r i sy st em er s o m h ar d et te , k an a rv i m p le m en te re s.

Ordrelinje

Ordre Kunde Utenlands kundeInnenlands kunde

(18)

Question 2

Attached

(19)

1

SQL-syntaks – noen elementer

o Syntaksoversikten gjelder SQL2.

o Oversikten er ikke fullstendig og heller ikke helt presis, men er forhåpentligvis til hjelp.

o [ ] brukes om frivillige elementer, det er altså ikke med i SQL-språket.

o ¦ brukes som eller, det er altså ikke med i SQL-språket.

o { ….. } start, hhv. slutt, ” ”.

o < ….> brukes for å beskrive et språkelement. Disse beskrives eller er beskrevet tidligere i syntaksbeskrivelsen eller følger av det generelle mønsteret fra andre.

o Fet skrift brukes om faste språkelementer

Create / alter / drop table-setning Create table

CREATE TABLE <tabellnavn> (<kommaseparert tabelldefinisjonsliste>);

<kommaseparert tabelldefinisjonsliste>:

• liste med en eller flere elementer som er enten <kolonnedefinisjon> eller <skrankedefinisjon>

• hvis listen består av flere elementer, er det komma mellom disse.

• listen må ha minst en <kolonnedefinisjon>, har som regel også minst en <skrankedefinisjon>

<kolonnedefinisjon>:

• <kolonnenavn> <datatype> [OT ULL] [DEFAULT <verdi>] , samt eventuell <skrankedefinisjon>, men uten (den første) kommaseparerte kolonnelisten.

<skrankedefinisjon> (det finnes noen flere enn de som er omtalt her)

• [COSTRAIT <skrankenavn>] PRIMARY KEY (<kommaseparert kolonneliste>)

• [COSTRAIT <skrankenavn>] FOREIG KEY (<kommaseparert kolonneliste>) REFERECES

<tabell> (<kommaseparert kolonneliste>) [O UPDATE <ref.oper.>] [O DELETE <ref.oper.>]

• [COSTRAIT <skrankenavn>] UIQUE (<kommaseparert kolonneliste>)

• [COSTRAIT <skrankenavn>] CHECK (<betingelse>)

<kommaseparert kolonneliste>:

• en eller flere kolonner. Hvis det er flere kolonner er disse adskilt med komma

<ref.oper.>: (dvs. referanseintegritetsoperasjon)

• {RESTRICT ¦ O ACTIO ¦ CASCADE ¦ SET ULL}

Alter table

ALTER TABLE <tabellnavn>

{ADD

¦

DROP} {[COLUM]1 <kolonnedefinisjon>¦ <skrankedefinisjon>};

Noen systemer mangler DROP.

Drop table

DROP TABLE <tabellnavn>;

1 Skal være med for noen systemer, skal utelates for andre.

(20)

2

Select-setninger.

Select-setning uten gruppering

SELECT [DISTICT] <kommaseparert resultatiste>

FROM <kommaseparert tabellliste>

[WHERE <betingelse>]

[ORDER BY <ordnet kolonneliste med sortering>];

<kommaseparert resultatliste>:

• kommaseparert liste, hvor hvert element er en av o en kolonne

o en beregning m.m.

o en select-setninger som returnerer en verdi for hver verdi av de andre i listen.

• et element kan gis et eget navn (alias). Mest vanlig for å gi resultatet av en beregning et folkelig navn. Skrives

<kolonne> / <beregning> AS <NyttNavn>.

<kommaseparert tabelliste>:

• enkleste form er en enkelt tabell eller en liste av tabeller med komma mellom

• et element i denne kan også være alias, på formen <tabellnavn> [AS] <aliasnavn>. Alias må brukes hvis man trenger to eller flere benevnelser for samme tabell.

• elemenene i denne kan være IER JOI, LEFT [OUTER] JOI eller RIGHT [OUTER] JOI . Eks.: <tabell1> LEFT OUTER JOI <tabell2> O <tabell1>.<kolonne1> = <tabell2>.<kolonne2>

• inner, left og right join kan også nestes i flere nivåer.

<betingelse>:

• består av en eller flere <enkeltbetingelse> evt. med AD eller OR mellom.

• paranteser brukes på vanlig måte, AD binder sterkere enn OR

<enkeltbetingelse>:

• er et utsagn som, for en gitt rad i from-setningen, resulterer i enten sant eller usant.

• ofte <kolonnenavn> = <verdi>, men kan også være >, >=, <>, <=

• hvis du ikke bruker INNER / LEFT / OUTER JOIN er det viktig å ha med <tabell1>.PK = <tabell2>.FK

BETWEE <startverdi> AD <sluttverdi>

• søking i starten av en streng (trunkert søking): <kolonne> LIKE ’<startstreng>%’

• søking i om delstrengen finnes i kolonnen: <kolonne> LIKE ’%<delstreng>%’

OT brukes til å negere en enkeltbetingelse eller sammensatt betingelse. Binder sterkere enn AD og OR.

• <kolonne> IS [OT] ULL brukes for å sjekke om en kolonne er NULL, evt. ikke er NULL.

• delspørringer med IN / NOT IN:

<kolonne> [OT] I

(SELECT <enkeltkolonne> …………)

• delspørringer med EXISTS / NOT EXISTS:

[OT] EXISTS

(SELECT …………)

ALL og AY brukes på resultatet av en delspørring.

o ALL er sann hvis alle i delspørringen oppfyller kriteriet. Usant hvis delspørringen er tom.

o

AY er sann hvis noen (en eller flere) oppfyller kravet. Sant hvis delspørringen er tom. SOME er ekvivalent med ANY.

o

Tips: WHERE <kolonne> >= ALL (SELECT <kolonneliste> …… ) er det samme som WHERE <kolonne> = (SELECT max(<kolonne>) ……….)

<ordnet kolonneliste med sortering>:

• som kolonneliste, men i sorteringsprioritet, og hver kolonne kan etterfølges av ASC eller DESC.

• hvis det ikke oppgis sortering, blir sorteringen i stigende rekkefølge.

(21)

3

Select-setning med gruppering / aggregering

For det som er felles for alle select-setning henvises det til 0.

SELECT <kommaseparert resultat- eller aggregeringsliste>

FROM <kommaseparert tabelliste>

[WHERE <betingelser>]

[GROUP BY <kommaseparert resultatliste>]

[HAVIG <betingelse for gruppe>]

[ORDER BY <ordnet kolonneliste med sortering>];

<kommaseparert resultat- eller aggregeringsliste>:

• NB! hvert element er enten et element fra group by-listen eller en <aggregeringsfunksjon>.

<aggregeringsfunksjon>:

• {count(*)

¦

count(<kolonne>)

¦

sum(<kolonne>)

¦

max(<kolonne>)

¦

min(<kolonne>)

¦

avg(<kolonne>)

¦

mfl.}

• <kolonne> kan også være en beregning

• noen systemer har også mulighet for count (distinct <kolonne>)), teller altså opp antall ulike.

• hvis vi ikke har med GROUP BY gjelder aggregeringen for hele tabellen

<betingelse for gruppe>:

• bare aktuelt dersom man har GROUP BY.

• betingelse som gjelder gruppen, innholder ofte en aggregeringsfunksjon, f.eks. count(*) > 1, sum(<kolonne>)

= (select sum( ……)

• kan inneholde AD, OR, OT osv., på samme måte som <betingelse>

ISERT / UPDATE / DELETE INSERT-setning

ISERT ITO <tabell> [(<kommaseparert kolonneliste>)]

{ VALUES (<kommaseparert verdiliste>)

¦

<select-setning> } ;

UPDATE-setning

UPDATE <tabell>

SET <kommaseparert kolonne/verdi-liste>

[WHERE <betingelse>];

• I noen systemer kan <tabell> i stedet være en begrenset form for <kommaseparert tabellliste>

<kommaseparert kolonne/verdi-liste>:

• hvert element består av <kolonne> = <konstant> eller <kolonne> = <beregninget verdi, f.eks. på grunnlag av tidligere verdi>

• oftest bare en slik kolonne/verdi-kombinasjon, men kan være flere.

DELETE-setning

DELETE FROM <tabell>

[WHERE <betingelse>];

(22)

4

Create / drop view Create view

CREATE VIEW <utsnittsnavn> [(<kommaseparert kolonneliste>)]

AS

<select-setning>;

• kolonnelisten er nødvendig hvis det ikke er fullt samsvar mellom kolonnenavn i select-setningen og utsnittet.

Drop view

DROP VIEW <utsnittsnavn>;

Indekser

CREATE [UIQUE] IDEX <indeksnavn> O <tabell> (<ordnet kolonneliste med sortering>);

DROP IDEX <indeksnavn>;

Noen systemer har andre mekanismer i tillegg.

Gi / frata rettigheter til tabeller, laging av brukere, databaser m.m.

GRAT <rettigheter> O <tabell el.l.> TO <bruker/gruppeliste> [WITH GRAT OPTIO];

REVOKE [<rettigheter>

¦

GRAT OPTIO] FROM <tabell el.l.> TO <bruker/gruppeliste>;

<rettigheter>:

kommasepartert liste med en eller flere av SELECT, ISERT, UPDATE (<kolonnenavn>), DELETE, ALL m.fl..

<bruker/gruppeliste>:

kommasepart liste med en eller flere brukere eller grupper. I tillegg finnes ofte noen standardgrupper, som PUBLIC og DBA.

Noen variasjoner og begrensninger fra et system til et annet.

Annet:

Muligheter for å lage / ta bort brukere etc., CREATE USER, gjerne sammen med IDETIFIED BY <passord>.

Tilsvarende DROP USER.

Muligheter for å lage nye databaser, CREATE DATABASE <databasenavn>

I noen systemer: laging av typer, domener etc.

(23)

5

D a ta m o d el ln o ta sj o n i 3 d ia le k te r: C h en , k k ef o t o g n ed sk a le rt U M L . E n d el d et al je r o g v ar ia sj o n er e r u te la tt . C h en s E R K k ef o t n ed sk a le rt U M L G ru n n le g g en d e. F o r al le d ia le k te r: • at tr ib u tt er k an t as m ed e ll er u te la te s (a v h . av h v o r la n g t i p ro se ss en o g h v o r st o r m o d el le n b li r) • d it to f o r d o m en er /d at at y p er • d et f in n es v ar ia n te r fo r å v is e m in ./ m ax .

1 m

Begrep: Entitet(styper), relasjon(styper), attributter. Begrep: Entitet(styper), relasjon(styper), attributter.

1 er arbeidssted for jobber i

* Begrep: Entitet(styper) eller objektklasser, (multiplisitets)assosiasjoner, attributter.

E r re p et is jo n e r ti ll a tt ? Ja , p å k o n se p tu el t n iv å N ei – s p li tt es u t i eg n e en ti te ts ty p er Ja , p å k o n se p tu el t n iv å E v en tu el le p ri m æ r- o g fr em m ed n ø k le r T as g je rn e ik k e m ed H v is d et t as m ed : M ar k er es f .e k s. m ed p ri m æ rn ø k k el : u n d er st re k in g fr em m ed n ø k k el : p ri k k et l in je , * , el .l .

H v is d et t as m ed : m ar k er es g je rn e m ed { P K } h h v . { F K } b ak a tt ri b u tt n av n et . H v is ( d el a v ) b eg g e d el er : { P K ,F K } E n ti te ti se ri n g K an g jø re s, m en v an li g v is s et te s d et b ar e p å at tr ib u tt er p å re la sj o n en . B ar e n ø d v en d ig v ed 2 . o rd en s en ti te ti se ri n g ( en ti te ti se ri n g a v n o e so m a ll er ed e er e n ti te ti se rt e ll er k u n n e v æ rt e n ti te ti se rt ).

G jø re s d er so m ” re la sj o n en s k al i n n eh o ld e at tr ib u tt er ”.

evt. med attributter

K an g jø re s, m en b ar e n ø d v en d ig v ed d et so m e ll er s v il le v æ rt 2 . o rd en s en ti te ti se ri n g . A ss o si at iv e en ti te ts ty p er m / at tr ib u tt er k an l eg g es p å: * *

arbeids sted

Avdeling Person PersID :::::::::

Avdeling jobber i

Avdeling Person PersID :::::::::

Verbal beskrivelse. Kan evt. settes på begge sider. Alternativt brukes en rolle som ”relasjonsnavn”

Rollenavn / relasjonsnavn Max. nærmest entitets- typen, evt. min. lenger unna

1 er (og kan skrives) 1..1 0..1 må skrives 0..1 * er (og kan skrives) 0..* 1..* betegner 1..m.

Verbal beskrivelse. På en eller begge sider. Pil viser retningPersonnr PersonKurs PersonDeltagelseKurs

Personnavn

Person PersonKurs Deltagelse PersID ::::::::::

Eksempel med attributter min. 0, dvs. Avd. kan ha person

(24)

6

Ordrelinje

Ordre

n re r el a sj o n st y p e / a ss o si a sj o n er ( n > 2 ) In n eb y g d t i n o ta sj o n en , in g en f o rs k je ll p å b in æ re o g n -æ re . E v t. e n ti te ti se ri n g g jø re s fø rs t, d er et te r h en g es n y e en ti te ts ty p er p å d en n y e en ti te ts ty p en . B ru k f o r å k n y tt e d em s am m en . A ss o si at iv e e n ti te ts ty p er k an b ru k es A v h en g ig h et a v a n d re en ti te ts ty p e r (e n e n ti te t er a v h en g ig a v ek si st en se n a v e n a n n en en ti te t) k al le s sv ak e n ti te t / w ea k e n ti ty

M ar k er es v ed a t fr em m ed n ø k k el en e r en d el av p ri m æ rn ø k k el en ( p å m an g e- si d en ) k al le s k o m p o si sj o n . F in n es o g så e n m in d re st er k k o b li n g s o m k al le s ag g re g er in g ( m ar k er es m ed i s te d et f o r ) . A rv F in n es i k k e, m å i ti lf el le b es k ri v es so m 1 :1 , m en g ir i k k e eg en tl ig a rv . F in n es i k k e, m å i ti lf el le b es k ri v es s o m 1 : 1 , m en g ir i k k e eg en tl ig a rv .

{Mandatory, Or}

I ti ll eg g : k an b es k ri v e k o m b in as jo n er a v m an d at o ry /o p ti o n al o g o m e n o v er o rd n et k an k o b le s ti l m ax . 1 e ll er t il f le re u n d er o rd n ed e (o r el le r an d ), s e o v er . K an o g så v æ re a rv m ed ”e tt b ar n ”, f .e k s. b ar e ”K u n d e” o g ” U te n la n d sk u n d e” . F o rh o ld t il n o rm a li se ri n g M å ev t. g jø re u ts p li tt in g er a v re p et is jo n er E r n o rm al is er t M å g jø re e v t. u ts p li tt in g er a v r ep et is jo n er O v er ri n g t il re la sj o n sd a ta b a se r O v er fø re s ti l k rå k ef o t el .l . fø rs t (f ra k o n se p tu el t ti l lo g is k n iv å) A lt er n at iv t: L eg g p å p ri m æ r- o g f re m m ed n ø k le r E v t. r ep et is jo n er m å ta s b o rt . E n ti te ts ty p er b li r ti l ta b el le r. R el as jo n er s o m g je ld er 1 :m t as b o rt , re la sj o n er s o m g je ld er m :m b li r eg n e ta b el le r.

E v t. m an g e- ti l- m an g e m å en ti te ti se re s. E ll er s: en ti te ts ty p er b li r ti l ta b el le r E v t. r ep et is jo n er m å ta s b o rt . E n ti et st y p er /o b je k tk la ss er b li r ti l ta b el le r. A ss o si as jo n sa tt ri b u tt er i m :m b li r eg n e ta b el le r, a n d re m :m e n ti te ti se re s. H ø y er e o rd en s re la sj o n st y p er b li r ti l ta b el le r. A rv m å o m fo rm u le re s (f le re a lt er n at iv er fi n n es , in g en e r h el t g o d e) . D er so m m an b ru k er O R D B -u tv id el se r i sy st em er s o m h ar d et te , k an a rv i m p le m en te re s.

Ordrelinje

Ordre Kunde Utenlands kundeInnenlands kunde

(25)

Question 3

Attached

(26)

1

SQL-syntaks – noen elementer

o Syntaksoversikten gjelder SQL2.

o Oversikten er ikke fullstendig og heller ikke helt presis, men er forhåpentligvis til hjelp.

o [ ] brukes om frivillige elementer, det er altså ikke med i SQL-språket.

o ¦ brukes som eller, det er altså ikke med i SQL-språket.

o { ….. } start, hhv. slutt, ” ”.

o < ….> brukes for å beskrive et språkelement. Disse beskrives eller er beskrevet tidligere i syntaksbeskrivelsen eller følger av det generelle mønsteret fra andre.

o Fet skrift brukes om faste språkelementer

Create / alter / drop table-setning Create table

CREATE TABLE <tabellnavn> (<kommaseparert tabelldefinisjonsliste>);

<kommaseparert tabelldefinisjonsliste>:

• liste med en eller flere elementer som er enten <kolonnedefinisjon> eller <skrankedefinisjon>

• hvis listen består av flere elementer, er det komma mellom disse.

• listen må ha minst en <kolonnedefinisjon>, har som regel også minst en <skrankedefinisjon>

<kolonnedefinisjon>:

• <kolonnenavn> <datatype> [OT ULL] [DEFAULT <verdi>] , samt eventuell <skrankedefinisjon>, men uten (den første) kommaseparerte kolonnelisten.

<skrankedefinisjon> (det finnes noen flere enn de som er omtalt her)

• [COSTRAIT <skrankenavn>] PRIMARY KEY (<kommaseparert kolonneliste>)

• [COSTRAIT <skrankenavn>] FOREIG KEY (<kommaseparert kolonneliste>) REFERECES

<tabell> (<kommaseparert kolonneliste>) [O UPDATE <ref.oper.>] [O DELETE <ref.oper.>]

• [COSTRAIT <skrankenavn>] UIQUE (<kommaseparert kolonneliste>)

• [COSTRAIT <skrankenavn>] CHECK (<betingelse>)

<kommaseparert kolonneliste>:

• en eller flere kolonner. Hvis det er flere kolonner er disse adskilt med komma

<ref.oper.>: (dvs. referanseintegritetsoperasjon)

• {RESTRICT ¦ O ACTIO ¦ CASCADE ¦ SET ULL}

Alter table

ALTER TABLE <tabellnavn>

{ADD

¦

DROP} {[COLUM]1 <kolonnedefinisjon>¦ <skrankedefinisjon>};

Noen systemer mangler DROP.

Drop table

DROP TABLE <tabellnavn>;

1 Skal være med for noen systemer, skal utelates for andre.

(27)

2

Select-setninger.

Select-setning uten gruppering

SELECT [DISTICT] <kommaseparert resultatiste>

FROM <kommaseparert tabellliste>

[WHERE <betingelse>]

[ORDER BY <ordnet kolonneliste med sortering>];

<kommaseparert resultatliste>:

• kommaseparert liste, hvor hvert element er en av o en kolonne

o en beregning m.m.

o en select-setninger som returnerer en verdi for hver verdi av de andre i listen.

• et element kan gis et eget navn (alias). Mest vanlig for å gi resultatet av en beregning et folkelig navn. Skrives

<kolonne> / <beregning> AS <NyttNavn>.

<kommaseparert tabelliste>:

• enkleste form er en enkelt tabell eller en liste av tabeller med komma mellom

• et element i denne kan også være alias, på formen <tabellnavn> [AS] <aliasnavn>. Alias må brukes hvis man trenger to eller flere benevnelser for samme tabell.

• elemenene i denne kan være IER JOI, LEFT [OUTER] JOI eller RIGHT [OUTER] JOI . Eks.: <tabell1> LEFT OUTER JOI <tabell2> O <tabell1>.<kolonne1> = <tabell2>.<kolonne2>

• inner, left og right join kan også nestes i flere nivåer.

<betingelse>:

• består av en eller flere <enkeltbetingelse> evt. med AD eller OR mellom.

• paranteser brukes på vanlig måte, AD binder sterkere enn OR

<enkeltbetingelse>:

• er et utsagn som, for en gitt rad i from-setningen, resulterer i enten sant eller usant.

• ofte <kolonnenavn> = <verdi>, men kan også være >, >=, <>, <=

• hvis du ikke bruker INNER / LEFT / OUTER JOIN er det viktig å ha med <tabell1>.PK = <tabell2>.FK

BETWEE <startverdi> AD <sluttverdi>

• søking i starten av en streng (trunkert søking): <kolonne> LIKE ’<startstreng>%’

• søking i om delstrengen finnes i kolonnen: <kolonne> LIKE ’%<delstreng>%’

OT brukes til å negere en enkeltbetingelse eller sammensatt betingelse. Binder sterkere enn AD og OR.

• <kolonne> IS [OT] ULL brukes for å sjekke om en kolonne er NULL, evt. ikke er NULL.

• delspørringer med IN / NOT IN:

<kolonne> [OT] I

(SELECT <enkeltkolonne> …………)

• delspørringer med EXISTS / NOT EXISTS:

[OT] EXISTS

(SELECT …………)

ALL og AY brukes på resultatet av en delspørring.

o ALL er sann hvis alle i delspørringen oppfyller kriteriet. Usant hvis delspørringen er tom.

o

AY er sann hvis noen (en eller flere) oppfyller kravet. Sant hvis delspørringen er tom. SOME er ekvivalent med ANY.

o

Tips: WHERE <kolonne> >= ALL (SELECT <kolonneliste> …… ) er det samme som WHERE <kolonne> = (SELECT max(<kolonne>) ……….)

<ordnet kolonneliste med sortering>:

• som kolonneliste, men i sorteringsprioritet, og hver kolonne kan etterfølges av ASC eller DESC.

• hvis det ikke oppgis sortering, blir sorteringen i stigende rekkefølge.

(28)

3

Select-setning med gruppering / aggregering

For det som er felles for alle select-setning henvises det til 0.

SELECT <kommaseparert resultat- eller aggregeringsliste>

FROM <kommaseparert tabelliste>

[WHERE <betingelser>]

[GROUP BY <kommaseparert resultatliste>]

[HAVIG <betingelse for gruppe>]

[ORDER BY <ordnet kolonneliste med sortering>];

<kommaseparert resultat- eller aggregeringsliste>:

• NB! hvert element er enten et element fra group by-listen eller en <aggregeringsfunksjon>.

<aggregeringsfunksjon>:

• {count(*)

¦

count(<kolonne>)

¦

sum(<kolonne>)

¦

max(<kolonne>)

¦

min(<kolonne>)

¦

avg(<kolonne>)

¦

mfl.}

• <kolonne> kan også være en beregning

• noen systemer har også mulighet for count (distinct <kolonne>)), teller altså opp antall ulike.

• hvis vi ikke har med GROUP BY gjelder aggregeringen for hele tabellen

<betingelse for gruppe>:

• bare aktuelt dersom man har GROUP BY.

• betingelse som gjelder gruppen, innholder ofte en aggregeringsfunksjon, f.eks. count(*) > 1, sum(<kolonne>)

= (select sum( ……)

• kan inneholde AD, OR, OT osv., på samme måte som <betingelse>

ISERT / UPDATE / DELETE INSERT-setning

ISERT ITO <tabell> [(<kommaseparert kolonneliste>)]

{ VALUES (<kommaseparert verdiliste>)

¦

<select-setning> } ;

UPDATE-setning

UPDATE <tabell>

SET <kommaseparert kolonne/verdi-liste>

[WHERE <betingelse>];

• I noen systemer kan <tabell> i stedet være en begrenset form for <kommaseparert tabellliste>

<kommaseparert kolonne/verdi-liste>:

• hvert element består av <kolonne> = <konstant> eller <kolonne> = <beregninget verdi, f.eks. på grunnlag av tidligere verdi>

• oftest bare en slik kolonne/verdi-kombinasjon, men kan være flere.

DELETE-setning

DELETE FROM <tabell>

[WHERE <betingelse>];

(29)

4

Create / drop view Create view

CREATE VIEW <utsnittsnavn> [(<kommaseparert kolonneliste>)]

AS

<select-setning>;

• kolonnelisten er nødvendig hvis det ikke er fullt samsvar mellom kolonnenavn i select-setningen og utsnittet.

Drop view

DROP VIEW <utsnittsnavn>;

Indekser

CREATE [UIQUE] IDEX <indeksnavn> O <tabell> (<ordnet kolonneliste med sortering>);

DROP IDEX <indeksnavn>;

Noen systemer har andre mekanismer i tillegg.

Gi / frata rettigheter til tabeller, laging av brukere, databaser m.m.

GRAT <rettigheter> O <tabell el.l.> TO <bruker/gruppeliste> [WITH GRAT OPTIO];

REVOKE [<rettigheter>

¦

GRAT OPTIO] FROM <tabell el.l.> TO <bruker/gruppeliste>;

<rettigheter>:

kommasepartert liste med en eller flere av SELECT, ISERT, UPDATE (<kolonnenavn>), DELETE, ALL m.fl..

<bruker/gruppeliste>:

kommasepart liste med en eller flere brukere eller grupper. I tillegg finnes ofte noen standardgrupper, som PUBLIC og DBA.

Noen variasjoner og begrensninger fra et system til et annet.

Annet:

Muligheter for å lage / ta bort brukere etc., CREATE USER, gjerne sammen med IDETIFIED BY <passord>.

Tilsvarende DROP USER.

Muligheter for å lage nye databaser, CREATE DATABASE <databasenavn>

I noen systemer: laging av typer, domener etc.

(30)

5

D a ta m o d el ln o ta sj o n i 3 d ia le k te r: C h en , k k ef o t o g n ed sk a le rt U M L . E n d el d et al je r o g v ar ia sj o n er e r u te la tt . C h en s E R K k ef o t n ed sk a le rt U M L G ru n n le g g en d e. F o r al le d ia le k te r: • at tr ib u tt er k an t as m ed e ll er u te la te s (a v h . av h v o r la n g t i p ro se ss en o g h v o r st o r m o d el le n b li r) • d it to f o r d o m en er /d at at y p er • d et f in n es v ar ia n te r fo r å v is e m in ./ m ax .

1 m

Begrep: Entitet(styper), relasjon(styper), attributter. Begrep: Entitet(styper), relasjon(styper), attributter.

1 er arbeidssted for jobber i

* Begrep: Entitet(styper) eller objektklasser, (multiplisitets)assosiasjoner, attributter.

E r re p et is jo n e r ti ll a tt ? Ja , p å k o n se p tu el t n iv å N ei – s p li tt es u t i eg n e en ti te ts ty p er Ja , p å k o n se p tu el t n iv å E v en tu el le p ri m æ r- o g fr em m ed n ø k le r T as g je rn e ik k e m ed H v is d et t as m ed : M ar k er es f .e k s. m ed p ri m æ rn ø k k el : u n d er st re k in g fr em m ed n ø k k el : p ri k k et l in je , * , el .l .

H v is d et t as m ed : m ar k er es g je rn e m ed { P K } h h v . { F K } b ak a tt ri b u tt n av n et . H v is ( d el a v ) b eg g e d el er : { P K ,F K } E n ti te ti se ri n g K an g jø re s, m en v an li g v is s et te s d et b ar e p å at tr ib u tt er p å re la sj o n en . B ar e n ø d v en d ig v ed 2 . o rd en s en ti te ti se ri n g ( en ti te ti se ri n g a v n o e so m a ll er ed e er e n ti te ti se rt e ll er k u n n e v æ rt e n ti te ti se rt ).

G jø re s d er so m ” re la sj o n en s k al i n n eh o ld e at tr ib u tt er ”.

evt. med attributter

K an g jø re s, m en b ar e n ø d v en d ig v ed d et so m e ll er s v il le v æ rt 2 . o rd en s en ti te ti se ri n g . A ss o si at iv e en ti te ts ty p er m / at tr ib u tt er k an l eg g es p å: * *

arbeids sted

Avdeling Person PersID :::::::::

Avdeling jobber i

Avdeling Person PersID :::::::::

Verbal beskrivelse. Kan evt. settes på begge sider. Alternativt brukes en rolle som ”relasjonsnavn”

Rollenavn / relasjonsnavn Max. nærmest entitets- typen, evt. min. lenger unna

1 er (og kan skrives) 1..1 0..1 må skrives 0..1 * er (og kan skrives) 0..* 1..* betegner 1..m.

Verbal beskrivelse. På en eller begge sider. Pil viser retningPersonnr PersonKurs PersonDeltagelseKurs

Personnavn

Person PersonKurs Deltagelse PersID ::::::::::

Eksempel med attributter min. 0, dvs. Avd. kan ha person

(31)

6

Ordrelinje

Ordre

n re r el a sj o n st y p e / a ss o si a sj o n er ( n > 2 ) In n eb y g d t i n o ta sj o n en , in g en f o rs k je ll p å b in æ re o g n -æ re . E v t. e n ti te ti se ri n g g jø re s fø rs t, d er et te r h en g es n y e en ti te ts ty p er p å d en n y e en ti te ts ty p en . B ru k f o r å k n y tt e d em s am m en . A ss o si at iv e e n ti te ts ty p er k an b ru k es A v h en g ig h et a v a n d re en ti te ts ty p e r (e n e n ti te t er a v h en g ig a v ek si st en se n a v e n a n n en en ti te t) k al le s sv ak e n ti te t / w ea k e n ti ty

M ar k er es v ed a t fr em m ed n ø k k el en e r en d el av p ri m æ rn ø k k el en ( p å m an g e- si d en ) k al le s k o m p o si sj o n . F in n es o g så e n m in d re st er k k o b li n g s o m k al le s ag g re g er in g ( m ar k er es m ed i s te d et f o r ) . A rv F in n es i k k e, m å i ti lf el le b es k ri v es so m 1 :1 , m en g ir i k k e eg en tl ig a rv . F in n es i k k e, m å i ti lf el le b es k ri v es s o m 1 : 1 , m en g ir i k k e eg en tl ig a rv .

{Mandatory, Or}

I ti ll eg g : k an b es k ri v e k o m b in as jo n er a v m an d at o ry /o p ti o n al o g o m e n o v er o rd n et k an k o b le s ti l m ax . 1 e ll er t il f le re u n d er o rd n ed e (o r el le r an d ), s e o v er . K an o g så v æ re a rv m ed ”e tt b ar n ”, f .e k s. b ar e ”K u n d e” o g ” U te n la n d sk u n d e” . F o rh o ld t il n o rm a li se ri n g M å ev t. g jø re u ts p li tt in g er a v re p et is jo n er E r n o rm al is er t M å g jø re e v t. u ts p li tt in g er a v r ep et is jo n er O v er ri n g t il re la sj o n sd a ta b a se r O v er fø re s ti l k rå k ef o t el .l . fø rs t (f ra k o n se p tu el t ti l lo g is k n iv å) A lt er n at iv t: L eg g p å p ri m æ r- o g f re m m ed n ø k le r E v t. r ep et is jo n er m å ta s b o rt . E n ti te ts ty p er b li r ti l ta b el le r. R el as jo n er s o m g je ld er 1 :m t as b o rt , re la sj o n er s o m g je ld er m :m b li r eg n e ta b el le r.

E v t. m an g e- ti l- m an g e m å en ti te ti se re s. E ll er s: en ti te ts ty p er b li r ti l ta b el le r E v t. r ep et is jo n er m å ta s b o rt . E n ti et st y p er /o b je k tk la ss er b li r ti l ta b el le r. A ss o si as jo n sa tt ri b u tt er i m :m b li r eg n e ta b el le r, a n d re m :m e n ti te ti se re s. H ø y er e o rd en s re la sj o n st y p er b li r ti l ta b el le r. A rv m å o m fo rm u le re s (f le re a lt er n at iv er fi n n es , in g en e r h el t g o d e) . D er so m m an b ru k er O R D B -u tv id el se r i sy st em er s o m h ar d et te , k an a rv i m p le m en te re s.

Ordrelinje

Ordre Kunde Utenlands kundeInnenlands kunde

Referanser

RELATERTE DOKUMENTER

segmenter. Et annet poeng er at digrafene &lt;kh&gt; og &lt;dh&gt; ikke finnes i norsk, og ingen av.. 107 digrafene som finnes i norsk, f.eks. Polygrafemer som har flere enn to

It was concluded that the high CO 2 concentration itself caused the growth reduction and not the air pollutants, and the very low O 2 concentrations in the growth medium could

Det skal ikke fremkomme hvilken avdeling som er best eller dårligst eller annen rangering.. Den enkelte deltaker skal frivillig velge å være med/ ikke være med samt evt trekke

Dette er vi meget positive til og vi støtter deg på

Posten tar nå opptil en uke fra Oslo til vår nabokommune Oppegård... Hvilken utvikling kan vi forvente med redusert

Høring - Forskrift om kommunens myndighet i mindre vannkraftsaker Fylkesmannen i Nord-Trøndelag har ingen merknader til framlagte forslag til

Kopi: Gundersen Silje; Rogstad Anne; Langset Tore; Flataker Ove Emne: Vedrørende høring - EU-kommisjonens forslag til forordning om. kapasitetsfastsettelse og

Tiltak rettet mot barn og unge og barnehage og skole, må være tidsbegrenset og ikke vare lenger enn tiltak i samfunnet for øvrig.. Samtidig er det et stort behov for forutsigbarhet