Utvikling fra kjernen og ut

Like dokumenter
Utvikling fra kjernen og ut

Utvikling fra kjernen og ut

Utvikling fra kjernen og ut

Utvikling fra kjernen og ut

SQL. ISO SQL-standardene. Structured Query Language. Bruk av SQL. En innledende kommentar SQL-89 SQL-92 SQL:1999

1. SQL datadefinisjon og manipulering

Databaser: Relasjonsmodellen, del I

Datamodellering med UML

Systemutvikling fra kjernen og ut, fra skallet og inn

The Unified Modeling Language - UML

INF1300 Introduksjon til databaser

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

Datamodellering med UML. Modellenes to formål. The Unified Modeling Language - UML

1. Innføring i bruk av MySQL Query Browser

Integritetsregler i SQL. Primærnøkler

SQL 3: Opprette tabeller, datainnsetting og utsnitt

Datamodellering og databaser SQL, del 2

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

INF212 - Databaseteori. Kursinnhold

Integritetsregler i SQL

Datamodellering med UML. Modellenes to formål. The Unified Modeling Language - UML

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

Skranker og avledninger

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

Introduksjon til fagfeltet

Datamodellering og databaser SQL, del 2

IN2090 Introduksjon til databaser

Databasesystemer, oversikt

Databaser kort intro. Tom Heine Nätt

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

Kursregistrering bruksmønstermodell

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

INF1300 Introduksjon til databaser

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

Datamodellering og databaser SQL, del 2

INF1300 Introduksjon til databaser

Læringsmål. INF1050 dagsorden 14. jan Formålet med prosjektet. Den obligatoriske prosjektoppgaven

Integritetsregler i SQL

IN2090 Introduksjon til databaser

Arne Maus, Ifi. delvis lån av gamle foiler

Oppgaver Oppgave a: Sett opp mulige relasjoner

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

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

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

Metaspråket for å beskrive grammatikk

Oppgave 1 (Opprett en database og en tabell)

INF1300 Introduksjon til databaser

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

SQL: Integritetsregler, triggere og views

IN2090 Databaser og datamodellering 07 Datamanipulering

Skranker og avledninger

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

INF1300 Introduksjon til databaser

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

Persistens. Erik Arisholm. Institutt for informatikk Erik Arisholm INF1050-persistens-1

Dagens tema. Den redundansfri datamodellen. Modellenes to formål. Den grunnleggende konstruksjonen det elementære utsagnet

Satsvise, interaktive, sanntids/innbakte systemer. Arne Maus, Ifi. Oppdeling av både program og data på flere maskiner

Intermesso. Visjonen... samling av trådene. Veivalget. Et bedre bilde av visjonen?

Tilkobling og Triggere

INF1300 Introduksjon til databaser

SQL Introduksjonskurs. Oversikt

Modellenes to formål. Datamodellering med UML (forts.) Ugrupperte og grupperte modeller. Figur 5-2. Ogdens trekant

INF1300 Introduksjon til databaser: SQL Structured Query Language

INF1300 Introduksjon til databaser

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

IN2090 Databaser og datamodellering 07 Datamanipulering

HØGSKOLEN I SØR-TRØNDELAG

Modellenes to formål. Datamodellering med UML (forts.) Ugrupperte og grupperte modeller. Figur 5-2. Ogdens trekant

Miniverden og ER- modell

Modellenes to formål. Datamodellering med UML (forts.) Fra naturlig språk til datamodell. Figur 5-2. Ogdens trekant

INF3100 Databasesystemer

INF3100 Databasesystemer

Applikasjonsutvikling med databaser

Hva vi i alle fall bør huske fra INF1050

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Datamodellering med UML (forts.)

Repetisjon: Normalformer og SQL

Sikkerhet og tilgangskontroll i RDBMS-er

EKSAMEN 6102 / 6102N DATABASER

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

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

Historisk tidslinje. Resource Description Framework (RDF) Web Ontology Language (OWL) Object-Role Modeling (ORM) Entity Relationship Model (ER)

OM DATABASER DATABASESYSTEMER

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

Informasjonssystemer, DBMSer og databaser

Komplisert eksempel. IN2090 Databaser og datamodellering 07 Datamanipulering. Flere eksempler: Kombinere aggregater. Komplisert eksempel med WITH

Normalisering. Hva er normalisering?

SQL Structured Query Language

SQL: Systemaspekter. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Systemaspekter V18 1 / 21

Datamodellering med ORM

Relasjoner terminologi

UNIVERSITETET. triggere og views. Institutt for Informatikk. INF Arne Maus 1

HØGSKOLEN I SØR-TRØNDELAG

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

INF 329: Web-Teknologier. Dataimplementasjon. Fra Kapittel 11 i «Designing Data-Intensive Web Applications» Presentasjonsdato: 17/10/2004

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

Olav Dæhli DATABASEUTVIKLING

Databaser fra et logikkperspektiv

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

Transkript:

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 Oppfatning av interesseområdet Nettleser Firefox, Internet Explorer, Opera... HTTP/ PHP WWWtjener http:// maskinnavn /~brukernavn/ SQL Database Databasetjener (Oracle) Maskinnavn Databasenavn jfr. Systemutvikling Fra kjernen og ut, fra skallet og inn kapittel Frakjernen-1 Frakjernen-2 Informasjonssystem bygd på et databasehåndteringssystem Oppfatning av interesseområdet Hva gjør databasehåndteringssystemet? Tilbyr grensesnitt for brukere og programmerere Utfører (og optimaliserer) spørringer og oppdateringer o brukerdata Brukere Databasehåndteringssystem (DBMS) Informasjonssystem En database er en samling med data som er organisert for å tjene et bruksområde Frakjernen-3 o metadata (data om brukerdata) Håndhever skranker/integritetsregler (mer senere!) Håndterer flere brukere samtidig (gjelder ikke enbruker-dbms) Gjennomfører oppdateringer som transaksjoner (mer senere!) Utøver tilgangskontroll Sikrer data Det er mulig å håndtere en database uten et databasehåndteringssystem, men særlig praktisk er det ikke... Frakjernen-

Databaseteknologier Hierarkiske databaser Nettverksdatabaser Tabelldatabaser/Relasjonsdatabaser Objektorienterte databaser I dag stort sett kun av historisk interesse Relasjonsdatabaser I en relasjonsdatabase er data organisert i tabeller. Tabellene må oppfylle bestemte krav (mer senere). Flertallet av dagens informasjonssystemer bygd rundt databasehåndteringssystemer er basert på relasjonsdatabaser. Frakjernen-5 Frakjernen-6 Relasjoner og relasjonsdatabaser Å regne med relasjoner Relasjon Et matematisk begrep som kan tolkes som en tabell med verdier der alle linjer i tabellen er forskjellige fra hverandre Relasjonsdatabase En samling relasjoner Relasjonsdatabaseteoriens fødsel: E. F. Codd: A Relational Model for Large Shared Data Banks, Communications of the ACM, Vol 13, Number 6 (June 1970) Regning med tall (her: multiplikasjon): 3 * 2 6 Regning med relasjoner (her: kartesisk produkt) a1 a2 b1 b2 b3 a1 a2 b1 b2 Per 17 X Gro 18 X Per 17 Gro 18 Pål 19 Siv 19 Y Pål 19 Gro 18 Åse 22 Z Per 17 Siv 19 Pål 19 Siv 19 Per 17 Åse 22 Operandene er hele relasjoner! Pål 19 Åse 22 b3 X X Y Y Z Z Frakjernen-7 Frakjernen-8

y y 3 2 1 1 2 3 5 Hvorfor heter det relasjon? x x x 1 1 2 3 3 5 5 y 1 3 2 3 1 Matematisk funksjon: o Til hver x hører bare én y y = f(x) Matematisk relasjon: o Til hver x kan høre flere y og omvendt o Kan vises i en tabell med to kolonner x og y o Kan generaliseres til n dimensjoner Frakjernen-9 Verdiområde ( domain ) Relasjonsskjema Tupler/ Linjer/ Forekomster Figur -2. Relasjonsdatabaseterminologi 03 0 05 06 07 08 09 10 11 12 1 15 16 17 18 19 20 Relasjonsnavn 0 05 Sarpsborg Attributt 12600 Frakjernen-10 Krav til relasjoner Relasjonen har et entydig navn innen databasen Figur -. Entydighetsskranke og primærnøkkel Primærnøkkel Entydighetsskranke Attributter har et entydig navn innen relasjonen Attributtenes rekkefølge skal være uten betydning Alt. I innbyggertall Verdiene er atomiske Alle verdier i et bestemt attributt er hentet fra samme verdiområde, eller er NULL 0 05 Sarpsborg 12600 2617 25860 6692 Et verdiområde kan være endelig eller (teoretisk) uendelig Tuplenes rekkefølge skal være uten betydning Alt. II _ i_fylket innbyggertall I en relasjon kan det ikke finnes to like tupler 0 2617 25860 Mange av disse kravene er en konsekvens av at relasjonsdatabaseteorien definerer en relasjon som en matematisk mengde av likeartede tupler 05 Sarpsborg 12600 Entydighetsskranken håndheves av databasehåndteringssystemet! 6692 Frakjernen-11 Frakjernen-12

Fremmednøkkel Et attributt eller en attributtkombinasjon som deler verdiområde med en primærnøkkel. Fylke 03 fylkenavn Østfold Akershus Oslo 0 11 Vestby Attributtene behøver ikke å ha samme navn - de må bare få sine verdier fra samme verdiområde 1159 Referanseintegritet Skranke som uttrykker at verdiene i fremmednøkkelen også må finnes i primærnøkkelen. Håndheves av databasehåndteringssystemet. {subset} Fylke 03 fylkenavn Østfold Akershus Oslo 0 11 Vestby Referanseintegriteten er her vist med en {subset}-skranke (delmengdeskranke) Pass på at pilen peker riktig vei! 1159 Frakjernen-13 Frakjernen-1 {subset} Skjema og forekomster (Intensjon og ekstensjon) Også metadataene kan struktureres som tabeller Skjema Tables tablename Fylke create_date 200727 2 Databasens intensjon {subset} Attributes 200727 Databasens ekstensjon tablename attributename type length char 2 Linjer/ Forekomster 0 char char 25 05 Sarpsborg 12600 int Frakjernen-15 Frakjernen-16

Formaliserte data...er data som er under kontroll av et skjema Fordeler med formaliserte data o Lettere bearbeiding o Mulighet for automatisering o Høyere datakvalitet o Styrende Ulemper med formaliserte data Tabeller kontra relasjoner Teori er en ting, praksis er gjerne noe anna.: I kommersielle databasehåndteringssystemer brukes tabeller ikke relasjoner: o Like linjer er tillatt o Attributter er kvasi-atomiske Derfor snakker vi ofte om tabelldatabaser istedenfor relasjonsdatabaser. SQL er et programmeringsspråk for å håndtere tabelldatabaser. o Restriktivt Riktig skjema er viktig! De to betydningsfulle avvikene er begrunnet i effektivitet og praktiske behov Frakjernen-17 Frakjernen-18 SQL - Structured Query Language ISO SQL-standardene SQL-89 o Originalstandarden o Addendum for Embedded SQL (199) SQL-92 o ISO/IEC 9075 SQL:1999 o ISO/IEC 9075:1999 SQL Database DBMS (f.eks. Oracle) Det finnes i dag mer brukervennlige språk for å kommunisere med databaser, men SQL er standardisert... SQLs tre kommandokategorier For forekomstmanipulering: DML Data Manipulation Language Datamanipuleringsspråk o SELECT o INSERT o UPDATE o DELETE For skjemamanipulering: DDL Data Definition Language Datadefinisjonsspråk o CREATE o ALTER o DROP For tilgangskontroll: DCL Data Control Language Datakontrollspråk o GRANT o REVOKE Frakjernen-19 Frakjernen-20

To eksempler på enkle SQL-spørringer Ta ut kolonner av en tabell Attributter vi ønsker å få ut SELECT, FROM ; Tabell vi henter data fra Filtrerende betingelser Attributter vi ønsker å få ut SELECT, FROM WHERE = ; Linjer vi ønsker å få ut Ta ut en hel tabell (lage en kopi) SELECT * Alle attributtene FROM ; Legg merke til at resultatet av en spørring også er en tabell! Bare linjer som oppfyller denne betingelsen vil komme med i resultatet Frakjernen-21 Frakjernen-22 Figur -9 b. Eksempel på spørring i Query-by-example Spørringer mot flere tabeller ( join ) SELECT Fylke.,fylkenavn,,, FROM, Fylke WHERE.=Fylke.; Legg merke til: FROM-leddet inneholder flere tabeller WHERE-leddet inneholder join-betingelsen Det må være like mange join-betingelser som det er tabeller i FROMleddet utover den første hvis ikke får vi kartesiske produkter For å kunne referere til ulike attributter med samme navn kvalifiserer vi dem med tabellnavnet Resultat på neste lysark! Frakjernen-23 Frakjernen-2

Fylke {subset} 03 fylkenavn Østfold Akershus Oslo 0 11 Vestby Eksempel på join SQL-kommandoen på forrige lysark 1159 Oppretting av relasjonsdatabase med SQL CREATE TABLE ( Fylkenr CHAR(2) NOT NULL, Kommunenr CHAR(2) NOT NULL, Kommunenavn VARCHAR(25) NOT NULL, Avfallsmengde INT, Innbyggertall INT NOT NULL, CONSTRAINT EntydigKommunenr PRIMARY KEY (Kommunenr) ) ; Resultat fylkenavn Østfold Østfold Akershus 0 11 Vestby 1159 CREATE TABLE Fylke ( detaljene utelatt ) ; Rød tekst: ALTER TABLE Oppretting av ADD CONSTRAINT _fk skranker FOREIGN KEY() REFERENCES Fylke; Frakjernen-25 Frakjernen-26 Figur -8 b. Oppretting av relasjonsdatabase med grafisk dialog Oppdatering legge inn linjer Nye linjer legges inn med INSERT INTO: INSERT INTO tabellnavn VALUES(liste med verdier); eller INSERT INTO tabellnavn (liste med attributter) VALUES (liste med verdier); I den første formen legges verdiene inn i tabellen fra venstre mot høyre (ikke å anbefale). Gjenværende attributter blir NULL. I den andre formen velger vi hvilke attributter som skal få verdier, og i hvilken rekkefølge. Unevnte attributter blir NULL. Frakjernen-27 Frakjernen-28

Legge inn linjer eksempel Oppdatering fjerne linjer INSERT INTO Fylke VALUES ( 13, NULL); Eksisterende linjer fjernes med DELETE FROM: eller DELETE FROM tabellnavn INSERT INTO Fylke (, fylkenavn) VALUES ( 13, NULL); eller INSERT INTO Fylke (fylkenavn, ) VALUES (NULL, 13 ); WHERE betingelse for linjer som skal fjernes; Eksempel: DELETE FROM Fylke WHERE = 13 ; eller INSERT INTO Fylke () VALUES ( 13 ); SQL har ingen angrefunksjon! Vær derfor sikker på at betingelsen er korrekt, slik at det ikke fjernes linjer som ikke skulle vært fjernet. En DELETE FROM uten WHERE fjerner alle linjer i tabellen. Frakjernen-29 Frakjernen-30 Oppdatering endre eksisterende linjer Eksisterende linjer endres med UPDATE: UPDATE tabellnavn SET attributtnavn1 = Verdi eller uttrykk, attributtnavn2 = Verdi eller uttrykk,... WHERE betingelse for linjer som skal endres; Eksempel: UPDATE SET avfallperinnbygger = *1000/Innbyggertall WHERE innbyggertall > 0; Virtuelle tabeller En virtuell tabell er et spørrings-resultat som kan brukes på lik linje med vanlige tabeller i etterfølgende SQL-kommandoer Forekomstene i virtuelle tabeller lagres ikke i databasen endrer datagrunnlaget for spørringen seg, endres også den virtuelle tabellen Virtuelle tabeller brukes i hovedsak til: o Mellomregning i kompliserte spørringer o Datagrunnlag for skjermbilder og applikasjonsprogrammer o Tilgangskontroll SQLspørring OBS: Begrensede muligheter for oppdatering av virtuelle tabeller Frakjernen-31 Frakjernen-32

Bruk av virtuell tabell - eksempel Applikasjonslag og brukergrensesnitt Vi oppretter en virtuell tabell: CREATE VIEW AvfallAkershus AS SELECT Kommunenr,Kommunenavn,Avfallsmengde FROM WHERE Fylkenr = ; Vi kan nå bruke den virtuelle tabellen: SELECT * FROM AvfallAkershus ; Mer SQL i gruppeundervisningen Se også Systemutvikling fra kjernen og ut, fra skallet og inn Appendiks A Brukergrensesnitt Applikasjon OBS! Virkelighetsmodell Informasjonssystemets programmoduler Programmerbart SQL-grensesnitt (SQL API) SQL Databasehåndteringssystem Operativsystem, datanettprogramvare Maskinvare og datanett Ad-hoc spørring og oppdatering (Query by Example/ SQL klientprogram) Frakjernen-33 Frakjernen-3 Ad-hoc spørring og oppdatering Programmer med innebygde spørringer Ad-hoc spørring og oppdatering SQL-grensesnitt Spørringer og oppdateringer som formuleres på sparket Formuleres enten i SQL. f.eks. i klientprogrammet SQL*Plus eller i et mer brukervennlig grensesnitt, f.eks. bygd på prinsippet Query by Example Informasjonssystemets programmoduler Programmerbart SQL-grensesnitt (SQL API) SQL-grensesnitt Kan genereres eller programmeres Forutsetter at programmeringsspråket har et programmerbart grensesnitt (API) for å kalle SQL-kommandoer Vær oppmerksom på impedance-mismatch - problemer Frakjernen-35 Frakjernen-36

Transaksjon: Database-transaksjoner Et udelelig stykke arbeid mot databasen Skal ideelt sett tilfredsstille ACID -kravene: ACID Atomiticy Consistency preservation (serializability) Durability Isolation Hva du gjør, gjør fullt og helt, og ikke stykkevis og delt! Frakjernen-37 Databaser og DBMS en oppsummering En database er en samling med data som er organisert for å tjene et bruksområde (definisjon fra Norsk Dataordbok) En database er selvbeskrivende: Den inneholder brukerdata og en beskrivelse av brukerdataene Metadata er brukerdatabeskrivelser og skranker En database håndteres av et databasehåndteringssystem ( Data Base Management System - DBMS) Databasehåndteringssystemet letter tilgang, regulerer tilgang, gir samtidig tilgang for flere brukere, sikrer data Databasehåndteringssystemet sikrer at oppdateringer gjennomføres som transaksjoner Databasehåndteringssystemet optimaliserer spørringer Databasehåndteringssystemet håndhever skranker Moderne databasehåndteringssystemer kan håndtere både formaliserte og ikke-formaliserte data Frakjernen-38