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

Databaser: Relasjonsmodellen, del I

1. SQL datadefinisjon og manipulering

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

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

Integritetsregler i SQL. Primærnøkler

INF1300 Introduksjon til databaser

Integritetsregler i SQL

1. Innføring i bruk av MySQL Query Browser

Skranker og avledninger

INF212 - Databaseteori. Kursinnhold

Datamodellering og databaser SQL, del 2

SQL 3: Opprette tabeller, datainnsetting og utsnitt

IN2090 Introduksjon til databaser

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

Systemutvikling fra kjernen og ut, fra skallet og inn

Datamodellering med UML

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

Databasesystemer, oversikt

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

Oppgaver Oppgave a: Sett opp mulige relasjoner

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

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

Integritetsregler i SQL

INF1300 Introduksjon til databaser

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

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

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Introduksjon til fagfeltet

SQL: Integritetsregler, triggere og views

Datamodellering og databaser SQL, del 2

Databaser kort intro. Tom Heine Nätt

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

The Unified Modeling Language - UML

INF1300 Introduksjon til databaser

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

Datamodellering og databaser SQL, del 2

IN2090 Introduksjon til databaser

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

Oppgave 1 (Opprett en database og en tabell)

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

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

Miniverden og ER- modell

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

IN2090 Databaser og datamodellering 07 Datamanipulering

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

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

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

Metaspråket for å beskrive grammatikk

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

INF1300 Introduksjon til databaser: SQL Structured Query Language

HØGSKOLEN I SØR-TRØNDELAG

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

INF3100 Databasesystemer

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

OM DATABASER DATABASESYSTEMER

Skranker og avledninger

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

INF3100 Databasesystemer

Kursregistrering bruksmønstermodell

SQL Introduksjonskurs. Oversikt

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

IN2090 Databaser og datamodellering 07 Datamanipulering

Tilkobling og Triggere

Informasjonssystemer, DBMSer og databaser

Normalisering. Hva er normalisering?

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

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

Sikkerhet og tilgangskontroll i RDBMS-er

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

HØGSKOLEN I SØR-TRØNDELAG

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

1. SQL server. Beskrivelse og forberedelse til installasjon

Repetisjon: Normalformer og SQL

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

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

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

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

EKSAMEN 6102 / 6102N DATABASER

Databaser fra et logikkperspektiv

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

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

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

Relasjonsalgebraen. Algebra

Normalisering. Hva er normalisering?

SQL Structured Query Language

Olav Dæhli DATABASEUTVIKLING

Relasjoner terminologi

Applikasjonsutvikling med databaser

ORDBMS og OODBMS i praksis

Kunnskapsorganisasjon og gjenfinning 1. Relasjonsmodellen og -databaser

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

SQL Structured Query Language

Hva vi i alle fall bør huske fra INF1050

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 Netscape, Internet Explorer, Opera... HTTP/ PHP WWWtjener http:// maskinnavn /~brukernavn/ SQL Database Databasetjener (Oracle) Maskinnavn Databasenavn jfr. Fra kjernen og ut, fra skallet og inn kapittel 4 Frakjernen-1 Frakjernen-2 Informasjonssystem bygd på et databasehåndteringssystem Hva gjør databasehåndteringssystemet? Flere samtidige brukere gir databasehåndteringssystemet store utfordringer! Oppfatning av interesseområdet Tilbyr grensesnitt for brukere og programmerere Utfører spørringer og oppdateringer o brukerdata o metadata (data om brukerdata) Brukere Databasehåndteringssystem (DBMS) Informasjonssystem Håndterer flere brukere samtidig (ikke enbruker-dbms) Optimaliserer spørringer og oppdateringer Håndhever integritetsregler (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-3 Frakjernen-4

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 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

Figur 4-6. En relasjonsdatabase med to tabeller Fylke fylkenavn Østfold Akershus 03 Oslo Verdiområde ( domain ) Relasjonsskjema Figur 4-2. Relasjonsdatabaseterminologi 03 04 05 06 07 08 09 10 11 12 14 15 16 17 18 19 20 Relasjonsnavn Attributt 04 11 Vestby 11549 Tupler/ Linjer/ Forekomster 04 05 Sarpsborg 12600 Frakjernen-9 Frakjernen-10 Krav til relasjoner Relasjonen har et entydig navn innen databasen Attributter har et entydig navn innen relasjonen Attributtenes rekkefølge skal være uten betydning Verdiene er atomiske y Hvorfor heter det relasjon? Matematisk funksjon: o Til hver x hører bare én y y = f(x) Alle verdier i et bestemt attributt er hentet fra samme verdiområde, eller er NULL x Et verdiområde kan være endelig eller (teoretisk) uendelig Tuplenes rekkefølge skal være uten betydning I en relasjon kan det ikke finnes to like tupler y Matematisk relasjon: o Til hver x kan høre flere y og omvendt o To punkter kan ikke ha samme x,y Mange av disse kravene er en konsekvens av at relasjonsdatabaseteorien definerer en relasjon som en matematisk mengde av likeartede tupler x o Kan vises i en tabell med to kolonner x ogy o Kan generaliseres til n dimensjoner Frakjernen-11 Frakjernen-12

Figur 4-4. Entydighetsskranke og primærnøkkel Primærnøkkel 04 05 Entydighetsskranke Sarpsborg innbyggertall 12600 26417 25860 46692 Fremmednøkkel Et attributt eller attributtkombinasjon som deler verdiområde med en primærnøkkel. Fylke 03 fylkenavn Østfold Akershus Oslo Attributtene behøver ikke å ha samme navn - de må bare få sine verdier fra samme verdiområde _ i_fylket 04 innbyggertall 26417 25860 04 05 Sarpsborg 12600 46692 11 Vestby 11549 Frakjernen-13 Frakjernen-14 Referanseintegritet Skranke som uttrykker at verdiene i fremmednøkkelen også må finnes i primærnøkkelen Databaseskjemaet {subset} Fylke fylkenavn Østfold Akershus 03 Oslo Referanseintegriteten er her vist med en {subset} -skranke (delmengdeskranke) Pass på at pilen peker riktig vei! Databasens skjema består av skjemaene for alle tabellene som inngår, inkludert skranker/integritetsregler. Databasens skjema er metadata Metadatabasen oppdateres av databasehåndteringssystemet når datadefinisjonsspråkkommandoer (DDL-kommandoer) utføres 04 11 Vestby 11549 Frakjernen-15 Frakjernen-16

Relasjonsskjema Linjer/ Forekomster Intensjon og ekstensjon Databasens intensjon Databasens ekstensjon 04 05 Sarpsborg 12600 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 o Restriktivt Riktig skjema er viktig! Frakjernen-17 Frakjernen-18 SQL - Structured Query Language ISO SQL-standardene SQL-89 o Originalstandarden o Addendum for Embedded SQL (1994) 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... 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. De to betydningsfulle avvikene er begrunnet i effektivitet og praktiske behov Frakjernen-19 Frakjernen-20

SQLs tre kommandokategorier DML Data Manipulation Language Datamanipuleringsspråk o SELECT o INSERT o UPDATE o DELETE DDL Data Definition Language Datadefinisjonsspråk (for skjemamanipulering) o CREATE o ALTER o DROP DCL Data Control Language Data-kontrollspråk (for tilgangskontroll) o GRANT o REVOKE Enkel SQL-spørring Attributter vi ønsker ut SELECT, FROM ; Tabell vi henter data fra Alle attributtene SELECT * FROM ; Frakjernen-21 Frakjernen-22 Filtrerende betingelser Figur 4-9 b. Eksempel på spørring i Query-by-example SELECT, FROM WHERE = ; Velge ut attributter Velge ut linjer Bare linjer som oppfyller denne betingelsen vil komme med i resultatet Frakjernen-23 Frakjernen-24

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-25 Fylke {subset} 03 Resultat fylkenavn Østfold Akershus Oslo fylkenavn Østfold Østfold Akershus 04 11 Vestby 04 11 Eksempel på join Vestby SQL-kommandoen på forrige lysark 11549 11549 Frakjernen-26 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) ) ; Figur 4-8 b. Oppretting av relasjonsdatabase med grafisk dialog CREATE TABLE Fylke ( detaljene utelatt ) ; ALTER TABLE ADD CONSTRAINT _fk FOREIGN KEY() REFERENCES Fylke; Rød tekst: Oppretting av skranker Frakjernen-27 Frakjernen-28

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. Legge inn linjer eksempel INSERT INTO Fylke VALUES ( 13, NULL); eller INSERT INTO Fylke (, fylkenavn) VALUES ( 13, NULL); eller INSERT INTO Fylke (fylkenavn, ) VALUES (NULL, 13 ); eller INSERT INTO Fylke () VALUES ( 13 ); Frakjernen-29 Frakjernen-30 Oppdatering fjerne linjer Eksisterende linjer fjernes med DELETE FROM: DELETE FROM tabellnavn WHERE betingelse for linjer som skal fjernes; Eksempel: DELETE FROM Fylke WHERE = 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. 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; Frakjernen-31 Frakjernen-32

Appliksjonslag og brukergrensesnitt Ad-hoc spørring og oppdatering Brukergrensesnitt Applikasjon OBS! Virkelighetsmodell Informasjonssystemets programmoduler Rutiner fra utviklingsmiljøets bibliotek SQL Databasehåndteringssystem Ad-hoc spørring og oppdatering Operativsystem, datanettprogramvare 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 Maskinvare og datanett Frakjernen-33 Frakjernen-34 Programmer med innebygde spørringer Database-transaksjoner Informasjonssystemets programmoduler Rutiner fra utviklingsmiljøets bibliotek SQL-grensesnitt Kan genereres eller programmeres Forutsetter at programmeringsspråket kan kalle SQL-kommandoer Vær oppmerksom på impedance-mismatch - problemer Transaksjon: 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-35 Frakjernen-36

Virtuelle tabeller En virtuell tabell er et spørrings-resultat som kan brukes på lik linje med vanlige tabeller i etterfølgende SQL-kommandoer 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 Bruk av virtuell tabell - eksempel 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 ; o Adgangskontroll OBS: Begrensede muligheter for oppdatering av virtuelle tabeller Frakjernen-37 Frakjernen-38 Fakta om databaser Mer SQL i gruppeundervisningen Se også Systemutvikling fra kjernen og ut, fra skallet og inn Appendiks A En database inneholder en beskrivelse av sine egne data (dvs. metadata) En database inneholder fakta og integritetsregler SQL Database DBMS (f.eks. Oracle) En database bør i utgangspunktet utformes slik at et faktum lagres bare én gang (ingen redundans) Eventuell redundans skal være kontrollert En database håndteres av et databasehåndteringssystem ( Data Base Management System - DBMS) Moderne databasehåndteringssystemer kan håndtere både formaliserte og ikke-formaliserte data Frakjernen-39 Frakjernen-40