INF1300 Introduksjon til databaser

Like dokumenter
IN2090 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Informasjonssystemer, DBMSer og databaser

INF3100 Databasesystemer

INF Introduksjon til databaser ORM I

INF212 - Databaseteori. Kursinnhold

IN2090 Databaser og datamodellering ORM 1

INF3100 Databasesystemer

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Utvikling fra kjernen og ut

Utvikling fra kjernen og ut

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Dataorientert modellering

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

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

INF3100 Databasesystemer

Oppgave 1 (Opprett en database og en tabell)

INF1300 Introduksjon til databaser

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

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

INF3100. Databasesystemer

1. SQL datadefinisjon og manipulering

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF3100 Databasesystemer

INF1300 Introduksjon til databaser

Introduksjon til fagfeltet

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

Datamodellering og databaser SQL, del 2

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

Miniverden og ER- modell

Dagens tema: Begrepsdannelse Eksterne entydighetsskranker Representasjon n-1-regelen

Databaser: Relasjonsmodellen, del I

Dagens tema: Begrepsdannelse Eksterne entydighetsskranker Representasjon n-1-regelen Verdiskranker Mengdeskranker

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

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

Datamodellering og databaser SQL, del 2

Integritetsregler i SQL

Datamodellering og databaser SQL, del 2

Databasesystemer, oversikt

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

SQL Structured Query Language

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

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser

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

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

Integritetsregler i SQL. Primærnøkler

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

Integritetsregler i SQL

Utvikling fra kjernen og ut

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

HØGSKOLEN I SØR-TRØNDELAG

INF1300. Grunnbegrepene i ORM: fakta, begreper, roller, faktatyper, broer, entydighetsskranker, totale roller, funksjonelle avhengigheter

INF1300 Introduksjon til databaser

Ekvivalente stier (Equivalence of Path, EOP) i storm

INF1300 Introduksjon til databaser

UNIVERSITETET I OSLO

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

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

UNIVERSITETET I OSLO

Datamodellering i det virkelige liv. Jan-Thore Bjørnemyr

Utvikling fra kjernen og ut

Informasjonsbærende representasjoner

Dagens tema: Ekvivalente stier og joinskranker Ringskranker Informasjonsbærende representasjoner Behandling av tid

UNIVERSITETET SQL-99. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

SQL: Datatyper m.m. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Datatyper m.m. V18 1 / 12

Parallelle og distribuerte databaser del III

Dagens tema: Begrepsdannelse Eksterne entydighetsskranker

Dagens tema: Begrepsdannelse Eksterne entydighetsskranker Verdiskranker Mengdeskranker Underbegreper og underbegrepsskranker Kombinerte totale roller

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

Dagens tema: Begrepsdannelse Eksterne entydighetsskranker Verdiskranker Mengdeskranker

Utvikling fra kjernen og ut

Relasjoner terminologi

Videregående programmering 6

INF1300 Introduksjon til databaser

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

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

Repetisjon: (nesten) alt du trenger å kunne om ORM og realisering

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

Tilkobling og Triggere

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

INF1300 Introduksjon til databaser

Kunnskapsorganisasjon og gjenfinning 1.1. Introduksjon til databaseteori. Tine L. Frost, Jørn Helge B. Dahl og Kim Tallerås

ORDBMS og OODBMS i praksis

Hvordan databasesystemene kan hjelpe RAM-produsentene

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

HØGSKOLEN I SØR-TRØNDELAG

SQL Structured Query Language

Databaser kort intro. Tom Heine Nätt

Repetisjon: Normalformer og SQL

Dagens tema: Ringskranker Informasjonsbærende representasjoner Behandling av tid Tommelfingerregler

INF1300 Introduksjon til databaser

SQL-omgivelser. SQL-omgivelse

Transkript:

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser Dagens tema: Data, databaser og databasehåndteringssystemer Hva er data? Hva er informasjon? Fra idé til informasjonssystem Litt om modellering: Begreper og representasjon av dem Elementære setninger Neste forelesning: Mer om modellering Institutt for informatikk INF1300-22.08.2016 - Ellen Munthe-Kaas 1

Data, databaser og databasehåndteringssystemer INF1300-22.08.2016 - Ellen Munthe-Kaas 2

Transiente og persistente data Når vi programmerer, legger vi dataene våre i programvariable (eller bare «variable»). Når programmet avsluttes, slettes programvariablene og dermed også dataene i dem. Slike data kalles transiente. En enkel måte å ta vare på data, er å skrive dem til en fil. Det vil vanligvis si at dataene bak kulissene lagres på en magnetisk harddisk (HDD) eller en solid state drive (SSD). Data som overlever mellom to programkjøringer, kalles persistente. INF1300-22.08.2016 - Ellen Munthe-Kaas 3

Problemer med filer I utgangspunktet er en fil ment å skulle brukes av ett program om gangen. Vi risikerer at hvis det er mulig for flere programmer å åpne og bruke filen samtidig, så kan endringer gjort av ett program bli ødelagt av andre, samtidige programmer, og på en måte som gjør at innholdet av filen ikke lenger gir mening. Det er heller ikke generelt noen garanti for at innholdet i filene ikke kan gå tapt hvis noe galt skjer med systemet (f.eks. diskkræsj). Filsystemer har i utgangspunktet ingen støtte for effektivt å gjenfinne dataelementer som ligger i en fil, hvis vi ikke vet nøyaktig hvor i filen dataene ligger. INF1300-22.08.2016 - Ellen Munthe-Kaas 4

Databaser og DBMS En database er en samling persistente data som fysisk bare kan aksesseres fra ett spesialprogram, kalt et databasehåndteringssystem, forkortet DBMS (DataBase Management System). Vilkårlig mange programmer kan samtidig være koblet opp mot DBMSet og via det få lest, skrevet og endret data i databasen. DBMSet tar ansvar for å lagre store mengder data over lang tid persistere dataene, også i nærvær av systemfeil mm. kontrollere dataaksess slik at mange programmer kan bruke og modifisere dataene samtidig uten å ødelegge for hverandre effektivt gjenfinne data på vegne av programmene INF1300-22.08.2016 - Ellen Munthe-Kaas 5

Transaksjoner En henvendelse fra et program til DBMSet kalles en transaksjon En transaksjon som bare leser data, kalles en lesetransaksjon eller en spørring (query, uttales: kwi:ri) En transaksjon som legger til nye data eller forandrer eksisterende data, kalles en skrivetransaksjon INF1300-22.08.2016 - Ellen Munthe-Kaas 6

Litt historie Det første DBMSet ble utformet av Bachman og Williams i 1964 DBMSet ble solgt under navnet IDMS IDMS var en nettverksdatabase, og var designet for bruk fra et programmeringsspråk (vertsspråk) I 1968 kom IBM med IMS, som var en hierarkisk database (en forenkling av nettverksdatabaser) IMS ble nær enerådende for administrativ databehandling. Fortsatt er det svært mange store firmaer som har legacysystemer som bruker IMS INF1300-22.08.2016 - Ellen Munthe-Kaas 7

Litt mer historie I 1970 presenterte E.F.Codd sin relasjonsmodell Dette var en teoretisk beskrivelse av en ny type databaser kalt relasjonsdatabaser Relasjonsdatabaser er enkle å beskrive og bruke, men vanskelige å lage et DBMS for Først i 1977 klarte Oracle å lage et DBMS som fortjener betegnelsen relasjonell Relasjonsdatabaser har vært svært mye brukt i mange tiår nå, og de er hovedtemaet for dette kurset INF1300-22.08.2016 - Ellen Munthe-Kaas 8

Hva er data? Hva er informasjon? INF1300-22.08.2016 - Ellen Munthe-Kaas 9

Data Fra programmeringsspråk er vi vant til at vi har forskjellige datatyper som int (heltall) double (desimaltall) char (tegn) Heltallsvariable kan ha verdier som 17 og -1024 Slike verdier kaller vi data En enkelt verdi heter egentlig et datum, men vi bruker som oftest ordet «data» i entall også INF1300-22.08.2016 - Ellen Munthe-Kaas 10

Informasjon Informasjon består av data pluss regler for hvordan data skal tolkes Hvis vi har en (desimaltalls-) variabel vekt med verdien 54,2, vil det være naturlig å anta at 54,2 er vekten av ett eller annet Men for at 54,2 skal kunne kalles informasjon, er det to spørsmål som må besvares: Hvilken måleenhet er brukt for vekt? Hva er det som veier 54,2 måleenheter? INF1300-22.08.2016 - Ellen Munthe-Kaas 11

Fra idé til informasjonssystem INF1300-22.08.2016 - Ellen Munthe-Kaas 12

Interesseområde Kan det være mer enn én sal pr. kino? Kan en billett brukes til å se mer enn én forestilling? Er det alltid én billett pr. person, eller kan det være gruppebilletter også? Gjelder en billett alltid ett eller flere gitte seter, eller er det noen forestillinger der man kan sette seg hvor man vil?... INF1300-22.08.2016 - Ellen Munthe-Kaas 13

Analyse og informasjons- modell INF1300-22.08.2016 - Ellen Munthe-Kaas 14

Realisering 1: Fra informasjonsmodell til skjema CREATE TABLE Billett ( film VARCHAR(100) NOT NULL REFERENCES Film(film), tidspunkt TIMESTAMP, kino VARCHAR(30) REFERENCES Kino(kino), salnr VARCHAR(10), radnr INT, setenr INT, pris INT NOT NULL, PRIMARY KEY (tidspunkt, kino, salnr, radnr, setenr) ); CREATE TABLE Kino... INF1300-22.08.2016 - Ellen Munthe-Kaas 15

Realisering 2: Opprettelse av en database CREATE TABLE Billett ( film VARCHAR(100) NOT NULL REFERENCES Film(film), tidspunkt TIMESTAMP, kino VARCHAR(30) REFERENCES Kino(kino), salnr VARCHAR(10), radnr INT, setenr INT, pris INT NOT NULL, PRIMARY KEY (tidspunkt, kino, salnr, radnr, setenr) ); CREATE TABLE Kino... database Kino Film kino... Billett... film... DBMS Billett film tidspunkt kino salnr radnr setenr pris INF1300-22.08.2016 - Ellen Munthe-Kaas 16

Innlegging av data i databasen INSERT INTO Billett VALUES (' 七人の侍 ', 2016-...); INSERT INTO Billett VALUES (...);... database Kino Film kino... Billett... film... DBMS Billett film tidspunkt kino salnr radnr setenr pris 七人の侍 2016-... Saga Sal 1............ INF1300-22.08.2016 - Ellen Munthe-Kaas 17

Hvor mange billetter ble det i gjennomsnitt solgt til forestillinger som viste filmen 七人の侍 på Saga kino i tidsrommet 1.-7. august 2016? Spørringer SELECT COUNT(*)/SUM(antbill) AS gjsnitt FROM (SELECT tidspunkt, salnr, COUNT(*) AS antbill FROM Billett WHERE kino = 'Saga' AND film = ' 七人の侍 ' AND tidspunkt >= 2016-08-01 AND tidspunkt <= 2016-08-07 GROUP BY tidspunkt, salnr) AS f; database Kino Film kino... Billett... film... DBMS gjsnitt -------- 73 (1 row) INF1300-22.08.2016 - Ellen Munthe-Kaas 18

Tilgang til databasen fra Java-program integer gjennomsnitt; Connection mycon = DriverManager.getConnection(...); Statement execstat = mycon.createstatement(); ResultSet resultat = execstat.executequery("select COUNT(*)/SUM(antbill) AS gjsnitt FROM..."); gjennomsnitt = resultat.getint(1); database Kino Film kino... Billett... film... DBMS INF1300-22.08.2016 - Ellen Munthe-Kaas 19

Interesseområdet (UoD = Universe of Discourse) Interesseområdet er en del av virkeligheten Lovene som styrer virkeligheten, kaller vi forretningsregler Forretningsregler og naturlover har mange likhetstrekk Vi ser effekten av dem, men de kan være vanskelige å finne INF1300-22.08.2016 - Ellen Munthe-Kaas 20

Beskrivelse (deskripsjon) av virkeligheten/interesseområdet Interesseområdet Beskrivelse av interesseområdet Analyse: Begrepsdannelse og idealisert representasjon INF1300-22.08.2016 - Ellen Munthe-Kaas 21

Informasjonsmodeller En fullstendig beskrivelse av interesseområdet kalles en informasjonsmodell Informasjonsmodellen uttrykkes gjerne i et modellspråk Noen aktuelle modellspråk er UML (Unified Modelling Languages) ORM (Object-Role Modelling) ER (Entity Relationship) Vår beskrivelse av UoD skal leses av en datamaskin, så den må være meget nøyaktig og detaljert INF1300-22.08.2016 - Ellen Munthe-Kaas 22

Skranker Beskrivelsen av forretningsreglene kalles skranker Statiske skranker beskriver begrensninger på mulige tilstander i interesseområdet Dynamiske skranker beskriver begrensninger på mulige forandringer i interesseområdet Den ferdige ORM-modellen er en beskrivelse av de statiske skrankene i vårt UoD INF1300-22.08.2016 - Ellen Munthe-Kaas 23

Det begrepsmessige skjema Informasjonsmodellen brukt som regelverk/ oppskrift (preskripsjon) for hvordan informasjonssystemet skal oppføre seg, kalles det begrepsmessige skjema (eller bare skjema) Det begrepsmessige skjema uttrykkes i et språk som passer for den databaseteknologien vi skal bruke, f.eks. SQL (Structured Query Language) for relasjonsdatabaser ODL (Object Definition Language) for objektdatabaser INF1300-22.08.2016 - Ellen Munthe-Kaas 24

Integritetsregler I det begrepsmessige skjemaet kaller vi skrankene for integritetsregler Integritetsreglene bestemmer hva som er lovlig å lagre i informasjonssystemet (lovlige tilstander i databasen) hva som er lovlige forandringer (lovlige transisjoner/transaksjoner) Det er umulig for en bruker av informasjonssystemet å gjøre noe som strider mot integritetsreglene (det er DBMSets ansvar å passe på at integritetsreglene overholdes) INF1300-22.08.2016 - Ellen Munthe-Kaas 25

Informasjonssystemer Modellspråk (ORM) Databasespråk (SQL) Interesseområdet Analyse Informasjonsmodellen Realisering Informasjonssystemet Det begrepsmessige skjemaet Forretningsregler (lover) Skranker Integritetsregler INF1300-22.08.2016 - Ellen Munthe-Kaas 26

Informasjonssystemer vs. databaser INFORMASJONSSYSTEM DATABASESYSTEM Applikasjonsprogrammer Javagrensesnitt... DBMS Håndtere spørsmål Kontroll av data Aksessere data MDB DB Spørremodul bruker INF1300-22.08.2016 - Ellen Munthe-Kaas 27

Litt om modellering INF1300-22.08.2016 - Ellen Munthe-Kaas 28

ORM historikk På 1960-tallet ledet Sjir Nijssen et prosjekt for det nederlandske landregisteret. Målet var å etablere en elektronisk matrikkel. Arbeidet utviklet seg til å lage et språk for å beskrive informasjonsmodeller generelt Resultatet var NIAM Natural language Information Analysis Method. NIAM ble kommersialisert for CDC (Control Data Corporation) i 1974 Viktig for utviklingen av NIAM var at teamet bestod av dyktige informatikere, matematikere og en lingvist Senere er navnet blitt endret til ORM Object Role Modelling NB! ORM = object role modelling må ikke forveksles med objectrelational mapping som også har akronymet ORM, men som er noe helt annet! INF1300-22.08.2016 - Ellen Munthe-Kaas 29

Modellspråk Fundamentet for ORM Modelleringsmetode Tre viktige prinsipper: 1. Ogdens trekant: Sammenhengen mellom virkelighet og modell 2. Naturlig språk: Menneskespråk/naturlig språk er det mest fundamentale kommunikasjonsverktøyet vi har. Modellen må kunne uttrykkes i naturlig språk for å sikre at den kan forstås fullt ut av informerte brukere (de som kjenner virksomhetsområdet) 3. 100%-prinsippet: Vi kan lage en nøyaktig nok modell av virkeligheten ved hjelp av naturlig språk INF1300-22.08.2016 - Ellen Munthe-Kaas 30

Begreper Helt fra menneskene fikk språket, har vi satt navn på grupper av tilsvarende ting Platon, i sin idélære, var den første som beskrev dette systematisk (vitenskapelig) Selv om det ikke er noen kyr her inne, vet dere alle hva jeg mener med ordet «ku» Og selv de som aldri har sett (et bilde av) en klapperslange (men kanskje vet hva en slange er), kan forstå ordet «klapperslange» Ku og klapperslange er to eksempler på begreper To mer abstrakte eksempler er lån og flyavgang INF1300-22.08.2016 - Ellen Munthe-Kaas 31

Representasjon For å lage et begrepsmessig skjema for UoD må vi velge hvilke begreper skjemaet skal inneholde I tillegg må vi for hvert begrep bestemme oss for hvordan vi skal lagre informasjon om forekomster av dette begrepet Vi kan ikke lagre kyr i databasen, så vi (eller bonden som skal registrere melkeproduksjon) må finne en måte å lagre informasjon som identifiserer hver enkelt ku En slik identifikasjonsmåte kalles en representasjon eller identifikator for begrepet INF1300-22.08.2016 - Ellen Munthe-Kaas 32

Ontologi Vitenskapen om sammenhengen mellom virkelighet (UoD), begreper og representasjon kalles ontologi Ontologi er et meget aktivt forskningsfelt Ett eksempel er oljeindustrien som prøver å bli enige om felles begreper og representasjoner for å beskrive alle installasjoner og alt vedlikehold i Nordsjøen Hovedpoenget med ontologi betegnes gjerne som Ogdens trekant INF1300-22.08.2016 - Ellen Munthe-Kaas 33

Ogdens trekant INF1300-22.08.2016 - Ellen Munthe-Kaas 34

Elementære setninger En setning som ikke kan deles opp uten å miste meningsinnhold, kalles elementær Eksempel: Per liker is og brus Denne setningen er ikke elementær fordi den kan erstattes av de to elementære setningene Per liker brus Per liker is INF1300-22.08.2016 - Ellen Munthe-Kaas 35

Øvelse Hvilke av disse setningene er elementære? Dag er født 27. august 1996 Hans og Grete er søsken DK41050 er en hvit Toyota Yaris Anne fikk B i INF1010 Liv ble ansatt som rådgiver 1.8.2003 INF1300-22.08.2016 - Ellen Munthe-Kaas 36

Setninger og Ogdens trekant - 1 Se på setningen «Hanne tar INF1000» Det er mye informasjon som er underforstått: Hanne er navn på en student INF1000 er en emnekode Det vi mener er at studenten med navn Hanne tar emnet med emnekode INF1000 INF1300-22.08.2016 - Ellen Munthe-Kaas 37

Setninger og Ogdens trekant - 2 La oss se nærmere på setningen: «Studenten med navn Hanne tar emnet med emnekode INF1000» «student» og «emne» er begreper «navn» og «emnekode» er deres identifikatorer «Hanne» og «INF1000» er forekomster (data) INF1300-22.08.2016 - Ellen Munthe-Kaas 38

Setninger og faktatyper De to setningene under har samme meningsinnhold: «Studenten med navn Hanne tar emnet med emnekode INF1000» «Emnet med emnekode INF1000 har deltaker studenten med navn Hanne» Vi kan forme liknende fakta ved å bytte ut forekomstene: «Studenten med navn Henrik tar emnet med emnekode INF1100» (eller: «Emnet med emnekode INF1100 har deltaker studenten med navn Henrik») I ORM tegner vi denne faktatypen slik: INF1300-22.08.2016 - Ellen Munthe-Kaas 39