SQL og Mengdelære. Oracle, MySQL, Access, bruker forskjellige syntaks.

Like dokumenter
Spørringer mot flere tabeller

Databaser: Relasjonsmodellen, del I

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

Databasedesign HVA? HVORDAN? E/R diagram. Begrepsmessig databasedesign. Logisk databasedesign. Fysisk databasedesign

Tabelldefinisjon og datamanipulering

Tabeller og enkle spørringer

INF3100 Databasesystemer

Utvikling fra kjernen og ut

IN2090 Introduksjon til databaser

INF1300 Introduksjon til databaser

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Normalisering. Partielle avhengigheter Transitive avhengigheter Normalformer: 1NF, 2NF, 3NF, BCNF Normaliseringsstegene Denormalisering

1. SQL datadefinisjon og manipulering

Avansert bruk av SQL. Avanserte spørringer Valguttrykk Spørring på spørring Unionspørringer Delspørringer, vekselvirkende delspørringer Kvantorer

INF212 - Databaseteori. Kursinnhold

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Repetisjon: Normalformer og SQL

Introduksjon til fagfeltet

INF1300 Relasjonsalgebra. Et matematisk fundament for å forstå SQL-setninger

UNIVERSITETET I OSLO. Relasjonsmodellen. Relasjoner og funksjonelle avhengigheter. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

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

Kunnskapsorganisasjon og gjenfinning 1. Relasjonsmodellen og -databaser

Innhold Forord Innledning Kapittel 1 Introduksjon til databaser og databasesystem

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

INF1300 SQL Structured Query Language del 1. Stoff som blir/ble forelest i oktober 2013

INF3100 Databasesystemer

1. Innføring i bruk av MySQL Query Browser

INF1300 Introduksjon til databaser

EKSAMEN 6102 / 6102N DATABASER

Utvikling fra kjernen og ut

EKSAMEN DATABASER

INF1300 Relasjonsalgebra og SQL, mengder og bager. Lysark for forelesning v. 2.1

FORORD... III KAPITTELOVERSIKT... VI INNHOLDSFORTEGNELSE... VII DEL I SQL OG RELASJONSDATABASER INTRODUKSJON...

INF1300 Introduksjon til databaser: SQL Structured Query Language. En første introduksjon Lysark til forelesning onsdag 22.

Databasesystemer, oversikt

INF1300 Introduksjon til databaser: SQL Structured Query Language. En første introduksjon Lysark til forelesning mandag 14.

Relasjonsalgebraen. Algebra

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

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

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

Relasjonsalgebra Kopi av lysark om relasjonsalgebra. Vi går igjennom denne for å lage et matematisk fundament for forståelsen av hvordan

INF1300 Introduksjon til databaser

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

Metaspråket for å beskrive grammatikk

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ragnar Normann

INF1300 Introduksjon til databaser

Dagens tema: Oppdateringsanomalier Normalformer

Datamodellering med E/R

Løsningsforslag eksamen i IN

Oppdateringsanomalier Normalformer

Relasjonsalgebra. Hva?

Sensorveiledning for IN2090 og INF desember :30 18:30 (4 timer)

Oppgaver Oppgave a: Sett opp mulige relasjoner

En liten rekap. Spørrespråk. I dag SELECT

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

INF1300 Introduksjon til databaser: SQL Structured Query Language

Oppdateringsanomalier. Normalformer. Institutt for informatikk INF

INF1300 Introduksjon til databaser

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas

Utvikling fra kjernen og ut

INF1300 Introduksjon til databaser

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

1. Relasjonsmodellen Kommentarer til læreboka

FORORD...III KAPITTELOVERSIKT... VI INNHOLDSFORTEGNELSE...VII DEL I SQL OG RELASJONSDATABASER INTRODUKSJON...

Spørsmålskompilering del 1

Oppgave: Finn navn og tittel på alle som har arbeidet på prosjektet «Vintersalg»

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet. Løsningsforslag

Notater: INF1300. Veronika Heimsbakk 8. januar 2013

Integritetsregler i SQL. Primærnøkler

UNIVERSITETET RELASJONSALGEBRA. Regning g med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

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

UNIVERSITETET I OSLO

Integritetsregler i SQL

INF1800 LOGIKK OG BEREGNBARHET

UNIVERSITETET I OSLO

1. SQL spørringer mot flere tabeller

Spørsmålskompilering del 1

INF130 INF130. INF130:Repetisjon INF130:Repetisjon 1. Tabeller og enkle spørringer. Repetisjon

Plenum: Nøkler, normalformer og funksjonelle avhengigheter

Løsningsforslag til eksamen i IN2090 Databaser og datamodellering og INF1300 Introduksjon til databaser 6. desember :30 18:30 (4 timer)

Databaser. - Introduksjon til SQL med Microsoft SQL Server - Olav Dæhli Databaser - høsten

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

5602 DATABASER Bokmål/nynorsk. 17 (inkludert denne forsiden) Eksamensresultatene blir offentliggjort på Studentweb.

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

Databaser. - Normalisering -

Utvikling fra kjernen og ut

Utvikling fra kjernen og ut

Relasjonsdatabasedesign

OM DATABASER DATABASESYSTEMER

SQL Structured Query Language

Løsningsforslag for Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Relasjonsdatabasedesign

Mengdelære INF1800 LOGIKK OG BEREGNBARHET FORELESNING 2: MENGDELÆRE. Læreboken. Mengder. Definisjon (Mengde) Roger Antonsen

SQL Introduksjonskurs. Oversikt

Integritetsregler i SQL

Datamodellering og databaser SQL, del 2

Databaser kort intro. Tom Heine Nätt

Oppgave 1 ER- og relasjonsmodell 10 %

Transkript:

SQL og Mengdelære Oracle, MySQL, Access, bruker forskjellige syntaks. Kan vi beskrive, hva SQL er og hva man kan gjøre med SQL, uavhengig av konkret syntaks!!! Hvilke universale formelle språk har vi til disposisjon? Logikk Mengdelære (Kategori teori) (Type teori) Pensum: Kapittel 6 Databaser Leksjon 5: Relasjonsmodellen - 1

Tabeller som Mengder Hva er tabell med navn Vare for noe? Rekkefølge er uten betydning. Ingen duplikater. VNr Betegnelse Pris Kategori Antall 90693 Marsipantang 57.00 Konditor 0 44939 Malerskrin 115.00 Hobby 2 10830 Nisseskjegg 57.50 Dukker 42 64551 Hengebegonia 118.00 Blomster 206 15217 Kram tørrfluekorker 32.00 Fiske 213 Tabell Vare er (per i dag) en mengde av fem rader! Vare = r1, r2, r3, r4, r5 Databaser Leksjon 5: Relasjonsmodellen - 2

Mengde notasjon Hvor mange forskjellige mengder beskriver vi med følgende 10 mengde uttrykk? OBS! a, a, b, c, b, a, b, c, a, c, b, a, a, a, a, a, a, b, b, a, a, c, b, c, c, c, c, c, b, b, c, a, a, Bruk av krøllparenteser i mengdelære betyr at vi abstraherer fra rekkefølge og antall! Databaser Leksjon 5: Relasjonsmodellen - 3

Rader som Tupler Hvordan beskriver vi rader i tabellen Vare i mengdelære? De er 5-tupler! VNr Betegnelse Pris Kategori Antall 90693 Marsipantang 57.00 Konditor 0 44939 Malerskrin 115.00 Hobby 2 10830 Nisseskjegg 57.50 Dukker 42 64551 Hengebegonia 118.00 Blomster 206 15217 Kram tørrfluekorker 32.00 Fiske 213 Vare = r1, r2, r3, r4, r5 r1 = 90693, Marsipantang, 57.00, Konditor, 0 r2 = 44939, Malerskrin, 115.00, Hoppy, 2 Databaser Leksjon 5: Relasjonsmodellen - 4

Kartesisk produkt - Eksempel 5-tuppel 90693, Marsipantang, 57.00, Konditor, 0 tilhører hvilken mengde? Hva sier tabelldefinisjon? CREATE TABLE Vare ( VNr CHAR(5), Betegnelse VARCHAR(30), Pris DECIMAL(8,2), Kategory VARCHAR(20), Antall INTEGER ) r1 = 90693, Marsipantang, 57.00, Konditor, 0 is element av Kartesisk produkt (kryssprodukt) C(5) VC(30) D(8,2) VC(20) Int Vi bruker forkortelser C(5) for CHAR(5), VC(30) for VARCHAR(30), D(8,2) for DECIMAL(8,2), Databaser Leksjon 5: Relasjonsmodellen - 5

Kartesisk produkt - Eksempel CREATE TABLE Vare ( VNr CHAR(5), Betegnelse VARCHAR(30), Pris DECIMAL(8,2), Kategory VARCHAR(20), Antall INTEGER ) OBS! Innhold av tabell Vare varierer med tiden! Men tabelldefinisjon sier at tabell Vare er, til hver tidspunkt, en delmengde av kryssprodukt C 5 VC 30 D 8,2 VC 20 Int Delmengde notasjon: Vare C 5 VC 30 D 8,2 VC 20 Int Databaser Leksjon 5: Relasjonsmodellen - 6

Kartesisk produkt og funksjoner For n mengder S 1,, S n er kartesisk produkt (kryssproduk) definert som mengde av ordnede n-tupler: S S = x,, x x S x S En funksjon f: A B fra mengde A til mengde B gir oss for hvert element a A et entydig resultat f a B. Introduserer vi (implisitt) funksjoner hvis vi konstruerer kryssprodukt C 5 VC 30 D 8,2 VC 20 Int? Peker spørringer som SELECT VNr FROM Vare på funksjoner? projeksjoner Π : C 5 VC 30 D 8,2 VC 20 Int C(5) Π 90693, Marsipantang, 57.00, Konditor, 0 =90693 Π 44939, Malerskrin, 115.00, Hobby, 2 =44939 Databaser Leksjon 5: Relasjonsmodellen - 7

Projeksjoner Hvordan kan vi beskrive resultatet av spørring SELECT VNr FROM Vare? Det er bildet av delmengde Vare C(5) VC 30 D 8,2 VC 20 Int mht projeksjon Π : C 5 VC 30 D 8,2 VC 20 Int C5 Π Vare = Π r,, Π (r ) = 90692,44939,10830,64551,15217 C(5) Databaser Leksjon 5: Relasjonsmodellen - 8

Projeksjoner Resultatet av spørring SELECT VNr,Antall FROM Vare? Det er bildet av delmengde Vare mht projeksjon Π, : C 5 VC 30 D 8,2 VC 20 Int C(5) Int VNr Betegnelse Pris Kategori Antall 90693 Marsipantang 57.00 Konditor 0 44939 Malerskrin 115.00 Hobby 2 10830 Nisseskjegg 57.50 Dukker 42 64551 Hengebegonia 118.00 Blomster 206 15217 Kram tørrfluekorker 32.00 Fiske 213 Databaser Leksjon 5: Relasjonsmodellen - 9

Projeksjoner Resultatet av spørring SELECT VNr,Antall FROM Vare? Π, Vare = Π, r,, Π, (r ) = 90693,0, 44939,2, 10830,42, 64551,206, (15217,213) C(5) Int VNr Betegnelse Pris Kategori Antall 90693 Marsipantang 57.00 Konditor 0 44939 Malerskrin 115.00 Hobby 2 10830 Nisseskjegg 57.50 Dukker 42 64551 Hengebegonia 118.00 Blomster 206 15217 Kram tørrfluekorker 32.00 Fiske 213 Databaser Leksjon 5: Relasjonsmodellen - 10

Tabellene V(are) og K(ategori) KNr Kategori 1 Blomster 2 Bøker 3 Konditor Fremmednøkkel Unngår skrivefeil. Sparer lagringsplass. VNr... KNr... 90693... 3... 64551... 1... 90164... 3... 33045... 1... 55130... 2... Hvilke betingelser for fremmednøkkel? KNr is primærnøkkel i tabell Kategori Hver verdi in kolonne V.KNr forekommer også i kolonne K.KNr! Det vil si at vi har en inklusjon av bilder: Π. (Vare) Π. (Kategori) Diskusjon av diagrammer i notater! Databaser Leksjon 5: Relasjonsmodellen - 11

Likekobling og fremmednøkkler KNr Kategori 1 Blomster 2 Bøker 3 Konditor VNr... KNr... 90693... 3... 64551... 1... 90164... 3... 33045... 1... 55130... 2... SELECT VNr, V.KNr, Kategori FROM Vare INNER JOIN Kategori ON V.KNr = K.KNr Hvor blir fremmednøkkel av? Fremmednøkkel blir transformert til en funksjonell avhengighet i resultat tabellen! Motsatt veien, kan vi dekomponere en tabell hvis vi har funksjonell avhengighet i tabellen! Databaser Leksjon 5: Relasjonsmodellen - 12

Funksjonelle avhengigheter Vi sier det er en funksjonell avhengighet i en tabell T fra A til B, skrevet A B, hvis to rader med samme verdi i kolonne A må ha samme verdi i kolonne B. Hvorfor heter det «funksjonell»? Hvilken funksjon har/krever vi? fa: Π (T) Π (T) Diskuter kommutative diagrammer! Vi kan også snakke om funksjonelle avhengigheter fra en samling kolonner X til en samling kolonner Y: X Y. Vi krever da en funksjon fa: Π (T) Π (T) ANr Navn PNr 12 Lise 7 17 Ola 8 12 Lise 23 21 Kari 26 Her gjelder ANr Navn. Databaser Leksjon 5: Relasjonsmodellen - 13

Relasjonsmodellen Relasjonsmodellen er en matematisk teori for hvordan man kan representere informasjon i «tabeller», og danner et teoretisk fundament for dagens relasjonsdatabaser. E. F. Codd (1970) A Relational Model of Data for Large Shared Data Banks. Communication of the ACM, 13 (6). Relasjonsmodellen består av tre deler: Datastruktur: Hva er en tabell? Tabeller er relasjoner Integritetsregler: Hva er lovlige data? Primærnøkler og fremmednøkler Datamanipulering: Hvordan kan data behandles? Relasjonsalgebra (kan gjøre det samme som SQL) Motivasjon for relasjonsmodellen: Representasjonsuavhengighet Hvis programmer er uavhengige av fysisk representasjon så kan strukturen endres uten at koden må endres. Pensum: Kapittel 6 Databaser Leksjon 5: Relasjonsmodellen - 14

Representasjonsuavhengighet Disse to tabellene inneholder samme informasjon: En databasetabell ser ut som et «regneark», men det er noen forskjeller. 5 regler følger Databaser Leksjon 5: Relasjonsmodellen - 15

Unike kolonner uten rekkefølge Kolonnenavn må være unike innen en tabell. AnsattNr Etternavn Fornavn AnsattDato Stilling Lønn 1 Veum Varg 01.01.1991 Løpegutt kr 123 000,00 2 Stein Trude 10.10.1994 DBA kr 270 000,00 Rekkefølge er uten betydning. Vi peker på en kolonne med kolonnenavn og ikke med posisjon! Databaser Leksjon 5: Relasjonsmodellen - 16

En mengde av rader ProsjektNr Budsjett Leder Start Slutt 1001 kr 15 000,00 20 12.01.2002 12.03.2002 1002 kr 750 000,00 8 23.06.2002 23.07.2002 1007 kr 125 000,00 2 12.06.2003 1009 kr 500 000,00 20 01.01.2003 1012 kr 10 000,00 4 10.07.2003 1020 kr 900 000,00 8 23.07.2002 01.09.2003 Rekkefølge er uten betydning. Det finnes ikke to like rader. Databaser Leksjon 5: Relasjonsmodellen - 17

Atomære verdier ProsjektNr Ansatte 1001 1 1002 4, 8, 13, 20 Ikke tillatt! Verdier er «enkle» (tall, tekster, datoer). Vi tillater ikke «repeterende» verdier. Vi tillater ikke «tabeller i tabeller». Nyere objektrelasjonelle databaser tillater mer kompliserte verdier. Databaser Leksjon 5: Relasjonsmodellen - 18

Primærnøkler Gitt en tabell T. En supernøkkel for T er en samling kolonner X slik at X A gjelder for alle kolonner A, dvs. X T: Vi krever en funksjon sn: Π (T) T som kommuterer! En kandidatnøkkel er en minimal supernøkkel. DB-designeren velger en av kandidatnøklene som primærnøkkel. Alle tabeller skal ha nøyaktig 1 primærnøkkel. Bestem kandidatnøkler og primærnøkkel for disse tabellene: Ansatt( AnsNr, PersonNr, Fornavn, Etternavn, Stilling ) Vielse( BrudPNr, BrudgomPNr, Kirkenavn, Dato ) Databaser Leksjon 5: Relasjonsmodellen - 19

Operatorer i relasjonsalgebra Relasjonsalgebra er et matematisk spørrespråk. Projeksjon: PNr, Tittel ( Prosjekt ) Seleksjon: Budsjett<100000 ( Prosjekt ) Kryssprodukt: Prosjekt Ansatt Likekobling: Prosjekt Prosjekt.Leder=Ansatt.AnsNr Ansatt Union: Startdato (Prosjekt) Sluttdato (Prosjekt) Differanse: AnsattNr (Ansatt) AnsattNr (Arbeid) Snitt: AnsattNr (Arbeid) Leder (Prosjekt) Divisjon: AnsattNr, PNr (Arbeid) PNr (Prosjekt) Noen operatorer kan uttrykkes fra andre: R S = R (R S) Databaser Leksjon 5: Relasjonsmodellen - 20

Operatorer i relasjonsalgebra Tabell Prosjekt Tabell Ansatt Tabell Arbeid PNr Budsjett Leder Start Slutt ANr Etternavn Fornavn AnsattDato Stilling Lønn PNr ANr AntTimer Projeksjon: PNr, Budsjett ( Prosjekt ) SELECT PNr, Budsjett FROM Prosjekt Seleksjon: Budsjett<100000 ( Prosjekt ) SELECT * FROM Prosjekt WHERE Budsjett < 100000 SELECT PNr, Budsjett FROM Prosjekt WHERE Budsjett < 100000? To ekvivalente muligheter: PNr, Budsjett ( Budsjett<100000 (Prosjekt) ) Budsjett<100000 ( PNr, Budsjett ( Prosjekt) ) Databaser Leksjon 5: Relasjonsmodellen - 21

Operatorer i relasjonsalgebra Tabell Prosjekt Tabell Ansatt Tabell Arbeid PNr Budsjett Leder Start Slutt ANr Etternavn Fornavn AnsattDato Stilling Lønn PNr ANr AntTimer Kryssprodukt: Prosjekt Ansatt SELECT * FROM Prosjekt, Ansatt Likekobling: Prosjekt Prosjekt.Leder=Ansatt.ANr Ansatt SELECT * FROM Prosjekt, Ansatt WHERE Prosjekt.Leder = Ansatt.ANr SELECT * FROM Prosjekt INNER JOIN Ansatt ON Prosjekt.Leder = Ansatt.ANr Databaser Leksjon 5: Relasjonsmodellen - 22

Operatorer i relasjonsalgebra Tabell Prosjekt Tabell Ansatt Tabell Arbeid PNr Budsjett Leder Start Slutt ANr Etternavn Fornavn AnsattDato Stilling Lønn PNr ANr AntTimer Union: Start (Prosjekt) Slutt (Prosjekt) SELECT Start FROM Prosjekt UNION SELECT Slutt FROM Prosjekt Differanse: ANr (Ansatt) ANr (Arbeid) SELECT ANr FROM Ansatt MINUS SELECT ANr FROM Arbeid Databaser Leksjon 5: Relasjonsmodellen - 23

Operatorer i relasjonsalgebra Tabell Prosjekt Tabell Ansatt Tabell Arbeid PNr Budsjett Leder Start Slutt ANr Etternavn Fornavn AnsattDato Stilling Lønn PNr ANr AntTimer Differanse: ANr (Ansatt) ANr (Arbeid) SELECT ANr FROM Ansatt MINUS SELECT ANr FROM Arbeid Snitt: ANr (Arbeid) Leder (Prosjekt) SELECT ANr FROM Ansatt INTERSECT SELECT ANr FROM Arbeid Noen operatorer kan uttrykkes fra andre: R S = R (R S) Databaser Leksjon 5: Relasjonsmodellen - 24

Operatorer i relasjonsalgebra Tabell Prosjekt Tabell Ansatt Tabell Arbeid PNr Budsjett Leder Start Slutt ANr Etternavn Fornavn AnsattDato Stilling Lønn PNr ANr AntTimer Divisjon: ANr, PNr (Arbeid) PNr (Prosjekt) Resultat er ansattnummerer til de ansatte som deltar på alle prosjekter. I analogi til heltall divisjon, beregner vi den største deltabellen D av tabellen ANr (Arbeid) slik at D Π (Prosjekt) ANr, PNr (Arbeid) SELECT ANr FROM Arbeid AS A1 WHERE NOT EXISTS ( SELECT PNr FROM Prosjekt MINUS SELECT PNr FROM Arbeid AS A2 WHERE A1.Anr = A2.Anr ) Databaser Leksjon 5: Relasjonsmodellen - 25

Relasjonsalgebra og SQL Et spørrespråk sies å være relasjonelt komplett hvis det er like kraftig som relasjonsalgebra. SQL er relasjonelt komplett. A, B, C ( R X=Y S ) er det samme som SELECT A, B, C FROM R, S WHERE X=Y Relasjonsalgebra er dermed en slags «målestokk» for konkrete spørrespråk (som f.eks. SQL). Relasjonsmodellen var en «arkitekttegning» for konkrete relasjonsdatabasehåndteringssystemer (RDBHS). Databaser Leksjon 5: Relasjonsmodellen - 26

SQL-standarden Kan deles inn i tre deler: Data Definition Language (DDL): definere tabeller, indekser og valideringsregler Data Manipulation Language (DML): legge inn nye data, endre data, slette data, hente ut data Data Control Language (DCL): brukeradministrasjon Standarder: SQL:86, SQL:89, SQL:92, SQL:1999, SQL:2003, SQL:2008 Databaseprogrammering Ikke alle programmeringsoppgaver lar seg løse med SQL. Databaseapplikasjoner består både av SQL og kode skrevet i et generelt programmeringsspråk. Programmeringsgrensesnitt mot SQL er standardisert. Databaser Leksjon 5: Relasjonsmodellen - 27

Databasesystemer Sluttbruker SQL Databasesystem Applikasjon Utvikler Prog.verktøy SQL DBHS Database DBA SQL SQL-editor Databaser Leksjon 5: Relasjonsmodellen - 28

Brukere og arbeidsoppgaver Sluttbruker Ajourhold Spørringer og rapporter Databaseadministrator Brukeradministrasjon Overvåke, optimalisere Utvikler Definere tabellstruktur og forretningsregler Utvikle applikasjoner (menyer, skjermbilder, rapporter) De aller fleste arbeidsoppgavene kan gjøres ved hjelp av SQL, men blir ofte utført med egne verktøy. Rapporteringsverktøy, modelleringsverktøy, Databaser Leksjon 5: Relasjonsmodellen - 29

Verktøy som genererer SQL - I Datamodellering innebærer å planlegge tabellstrukturen i en database. Eksempel på datamodell i E/R: Modelleringsverktøyet har en funksjon for å generere databaser (for ulike DBHS). Verktøyet logger seg på databasesystemet. Analyserer datamodellen. Sender en serie med CREATE TABLE setninger til DBHS. Tolker eventuelle feilmeldinger fra databasesystemet og viser dem for brukeren av modelleringsverktøyet. Databaser Leksjon 5: Relasjonsmodellen - 30

Verktøy som genererer SQL II Applikasjonsutvikling innebærer blant annet å definere skjermbilder og rapporter. Typiske funksjoner i et skjermbilde: Navigering Gå til første/forrige/neste/siste rad Søk og filtrering Gå til vare med varenr=1003 Vis kun varer i kategori A Legge til / slette / oppdatere Utviklingsverktøy genererer kode «bak» brukergrensesnittet. Databaser Leksjon 5: Relasjonsmodellen - 31

Systemarktitekturer Sentralisert databasesystem Personlige databaser Klient Klient DBHS Database Database for en avdeling på et lokalnett Virksomhetsdatabase (enterpris) Distribuert databasesystem Klient Klient Nettverk Klient Klient Flere databasetjenere geografisk spredt Database i skyen Web-løsning Web-server og databaseserver på 1 maskin Flerlagsarkitektur Nettleser Web-tjener Applikasjonstjener Databasesystem Databaser Leksjon 5: Relasjonsmodellen - 32

Web-databaser med HTML-klient Brukergrensesnittet består av HTML-sider, der HTML Forms brukes for å lese inndata fra bruker. 1. Bruker fyller ut skjema og bekrefter. 2. Inndata sendes over internett til web-tjeneren som parameter/verdi-par ( varenr=1003, dato=01.10.2003 ). 3. Web-tjeneren bygger opp (parameter)spørring og sender til databasetjeneren ( SELECT ). 4. Databasetjeneren utfører spørringen og sender resultat tilbake til web-tjeneren ( «resultset» ). 5. Web-tjeneren produserer utdata i form av HTML-kode. Bruker 1 6 Nettleser 2 3 5 Web-tjener 4 Databasetjener Databaser Leksjon 5: Relasjonsmodellen - 33

Slutt på del I Dermed setter vi strek for del I om SQL og tabeller. Neste tema er databasedesign (datamodellering). Databaser Leksjon 5: Relasjonsmodellen - 34