INF1300 Introduksjon til databaser

Like dokumenter
INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

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

INF1300 Introduksjon til databaser

INF212 - Databaseteori. Kursinnhold

INF1300 Introduksjon til databaser

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

INF3100 Databasesystemer

Informasjonssystemer, DBMSer og databaser

INF1300 Introduksjon til databaser

INF3100 Databasesystemer

IN2090 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

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

Integritetsregler i SQL. Primærnøkler

Integritetsregler i SQL

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser

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

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

Realiseringsalgoritmen fra ORM til relasjoner Intro til mengdeskranker i ORM

INF1300 Introduksjon til databaser

Dagens tema: Begrepsdannelse Eksterne entydighetsskranker Verdiskranker Mengdeskranker

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

Integritetsregler i SQL

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Dagens tema: Relasjonsmodellen Funksjonelle avhengigheter og nøkler Realisering: Fra ORM til relasjoner

UNIVERSITETET I OSLO

Flere skranker i ORM Integritetsregler med «CHECK» i SQL

INF1300 Introduksjon til databaser

UNIVERSITETET I OSLO

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

Informasjonsbærende representasjoner

Ekvivalente stier (Equivalence of Path, EOP) i storm

INF1300 Introduksjon til databaser

SQL: Integritetsregler, triggere og views

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser

UNIVERSITETET I OSLO

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

IN2090 Databaser og datamodellering ORM 1

Datamodellering og databaser SQL, del 2

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

INF1300 Introduksjon til databaser

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

1. SQL datadefinisjon og manipulering

Språk for dataorientert modellering

Dagens tema: Begrepsdannelse Eksterne entydighetsskranker

Databaser: Relasjonsmodellen, del I

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

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

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

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

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

Datamodellering og databaser SQL, del 2

VÆRSTASJONER Obligatorisk oppgave nr. 2 i INF1300 høsten 2011

Notater: INF1300. Veronika Heimsbakk 8. januar 2013

Utvikling fra kjernen og ut

Ekvivalente stier (Equivalence of Path, EOP) i storm

Normalisering. Hva er normalisering?

INF1300 Introduksjon til databaser

Gruppeøvelse 20/ Dagens tema: - Gruppering/realisering

Datamodellering og databaser SQL, del 2

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Ekstramateriale: Eksempel på PostgreSQL 8.4 og SQL:1999 (ikke pensum 2012)

Oppdateringsanomalier Normalformer

SQL Structured Query Language

Normalisering. Hva er normalisering?

Oppgaver Oppgave a: Sett opp mulige relasjoner

INF Introduksjon til databaser ORM I

Relasjonsdatabasedesign

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

Skranker og avledninger

Relasjonsdatabasedesign

SQL 3: Opprette tabeller, datainnsetting og utsnitt

1. Relasjonsmodellen Kommentarer til læreboka

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

INF3100 Databasesystemer

UNIVERSITETET I OSLO

Relasjonsdatabasedesign

Dagens tema: Oppdateringsanomalier Normalformer

INF3100. Databasesystemer

1. Innføring i bruk av MySQL Query Browser

Dataorientert modellering

UNIVERSITETET. Relasjonsdatabasedesign

INF1300 Introduksjon til databaser: SQL Structured Query Language

Repetisjon: Normalformer og SQL

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

Relasjonsdatabasedesign

Løsningsforslag matoppskrifter modellering

Tilkobling og Triggere

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

Transkript:

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser Dagens tema: Fra skranker til integritetsregler (restriksjoner) Klassifisering av integritetsregler Forekomstrestriksjoner Realisering av integritetsregler i SQL ORM som analysemetode Kvalitetssikring av ORM-modeller INF1300-24.11.2010 - Ellen Munthe-Kaas 1

Fra skranker til integritetsregler Ved gruppering fra en ORM-modell til et relasjonsdatabaseskjema blir skrankene i modellen omformet til integritetsregler i skjemaet De aller fleste skrankene overføres direkte til skjemaet Noen få ganger kan det være fornuftig å la være å håndheve en skranke i databasen, men dette er unntak Vi skal aldri ha en integritetsregel i skjemaet som ikke kommer fra en skranke i modellen Det betyr at skjemaet aldri kan være strengere enn modellen INF1300-24.11.2010 - Ellen Munthe-Kaas 2

Håndtering av verdiskranker En verdiskranke begrenser domenet for et attributt Eksempelet over gir følgende definisjon av Medaljeutbytte: CREATE TABLE Medaljeutbytte ( land_navn CHAR(20) NOT NULL REFERENCES Land(navn), med_kode CHAR(1) NOT NULL CHECK(med_kode IN ( G, S, B )), antall INTEGER CHECK( (0 < antall) AND (antall < 70) ), CONSTRAINT med_utb_pk PRIMARY KEY(land_navn,med_kode) ); INF1300-24.11.2010 - Ellen Munthe-Kaas 3

Gruppererroller og referanseroller I grupperingen vil en mange-til-én-setningstype fra A til B bli til en fremmednøkkel fra A-relasjonen til B-relasjonen En én-til-én setningstype mellom B og C hvor bare B-rollen er total, blir til en entydig fremmednøkkel fra B-relasjonen til C-relasjonen Rollen til det begrepet som får fremmednøkkelen, kalles gruppererrollen i setningen (rolle 1 og 3 i eksempelet) Rollen som blir til en fremmednøkkel, kalles referanserollen i setningstypen (rolle 2 og 4 i eksempelet) INF1300-24.11.2010 - Ellen Munthe-Kaas 4

Håndtering av én-til-én- setningstyper uten totale roller Her har vi et valg: Vi kan velge å peke ut en av rollene som gruppererrolle, dvs. hvilken relasjon som skal få fremmednøkkelen Vi kan velge å danne et begrep av setningstypen Det grupperte resultatet blir i såfall en relasjon som består av to kandidatnøkler som er fremmednøkler til de to relasjonene som stammer fra de to begrepene som inngår i setningstypen Merk: I storm må vi selv foreta denne begrepsdannelsen INF1300-24.11.2010 - Ellen Munthe-Kaas 5

Håndtering av én-til-én- setningstyper med to totale roller Slike setningstyper forekommer sjelden Ett eksempel er en setningstype som kobler sammen hovedsteder med sine land Vi må da velge en av rollene som gruppererrolle Dersom ett av de involverte begrepene bruker denne setningstypen som sin prefererte referansemåte, har vi gjort en analysefeil De to begrepene skal da slås sammen til ett begrep og setningstypen skal fjernes fra ORM-modellen INF1300-24.11.2010 - Ellen Munthe-Kaas 6

Gruppering vs modellering Valg av gruppererroller er en del av grupperingsprosessen, og ikke av modelleringsprosessen Det samme gjelder valg av hvilke referanserelasjoner som skal undertrykkes og hvilke som skal beholdes Resten av grupperingsprosessen er automatiserbar og kan gjøres av en datamaskin INF1300-24.11.2010 - Ellen Munthe-Kaas 7

Navn på attributter 1 I eksempelet over vil A-relasjonen få en fremmednøkkel til B- relasjonen bestående av to attributter: ett C-attributt og ett D-attributt Ved maskinell gruppering vil navnene på disse attributtene bli C_rolle2 og D_rolle2 (evt c_rolle2 og d_rolle2 hvor c og d er representasjonene til hhv C og D) I storm kan man gi alternative relasjons- og attributtnavn hvis man ikke synes de automatisk genererte navnene egner seg INF1300-24.11.2010 - Ellen Munthe-Kaas 8

Navn på attributter 2 Ved manuell gruppering kan dere velge navnene på de to attributtene i fremmednøkkelen fritt Det kan dere forøvrig gjøre for alle andre attributter også INF1300-24.11.2010 - Ellen Munthe-Kaas 9

Forekomstrestriksjoner En integritetsregel som kan håndheves lokalt i en enkelt forekomst i en tabell, kalles en forekomstrestriksjon På engelsk kalles den en «intra record constraint» En integritetsregel som ikke er en forekomstrestriksjon, har ikke noen egen betegnelse på norsk På engelsk kalles den en «inter record constraint» Forekomstrestriksjoner er billige å håndheve fordi vi ikke trenger å lese noen andre forekomster enn den vi holder på med Forekomstrestriksjoner kan bare brytes ved innlegging og endring, aldri ved sletting INF1300-24.11.2010 - Ellen Munthe-Kaas 10

Ulikhet i referanseroller Gruppert skjema: Person(personnavn, gren_blir_saget, gren_blir_sittet_på) Her sammenligner vi to referanseroller til Gren, og disse skal ikke ha noen felles forekomst Når vi legger inn en ny forekomst av Person, må vi kontrollere at 1) verdien i gren_blir_saget ikke må finnes som verdi i gren_blir_sittet_på i noen tidligere forekomster 2) verdien i gren_blir_sittet_på ikke må finnes som verdi i gren_blir_saget i noen tidligere forekomster INF1300-24.11.2010 - Ellen Munthe-Kaas 11

Ulikhet i gruppereroller Gruppert skjema: Person(personnavn, gren_blir_saget, gren_blir_sittet_på) Her sammenligner vi to gruppererroller for Person, og disse skal ikke ha noen felles forekomst Det betyr at ingen forekomst av Person skal finnes både i rollen sitter_på og i rollen sager Når vi legger inn en ny forekomst av Person, må vi altså kontrollere at minst ett av attributtene gren_blir_sittet_på og gren_blir_saget er NULL Dette er en forekomstrestriksjon hvor vi bare ser på NULL-verdier INF1300-24.11.2010 - Ellen Munthe-Kaas 12

Dobbeltrolleulikhet Gruppert skjema: Person(personnavn, gren_blir_saget, gren_blir_sittet_på) Dette er en dobbeltrolleskranke hvor vi sammenligner de to gruppererrollene Den sier at ingen forekomstpar av Person og Gren skal ha samme verdi i rolleparene (sager, blir saget) og (sitter på, blir sittet på) Når vi legger inn en ny forekomst av Person, må vi altså kontrollere at minst ett av attributtene gren_blir_saget og gren_blir_sittet_på er NULL eller at de har forskjellig verdi I denne forekomstrestriksjonen sammenligner vi verdier INF1300-24.11.2010 - Ellen Munthe-Kaas 13

Mengdeskranker som blir til forekomstrestriksjoner Enkeltrolleskranker som bare går mellom gruppererroller, blir til forekomstrestriksjoner som bare ser på NULL (Dette gjelder også kombinerte totale roller) Dobbeltrolleskranker hvor gruppererrollene sammenlignes, blir til forekomstrestriksjoner hvor verdiene i attributtene sammenlignes Ingen andre mengdeskranker blir til forekomstrestriksjoner En generell kombinert total rolle som involverer flere referanseroller, er svært dyr å håndheve, og den er derfor kandidat til en skranke vi velger å neglisjere INF1300-24.11.2010 - Ellen Munthe-Kaas 14

Håndtering av andre skranker Håndtering av delmengde- og likhetsskranker blir helt tilsvarende håndteringen av ulikhetsskranker Ekvivalente stier blir en slags likhetsskranke I tilfellet fra Oblig3 der Billett arver én båt fra Avreise og én båt fra Køye, og verdien av de to båtene må være like i hver Billett-forekomst, ordner vi det enklest ved å slå de to båtattributtene sammen til ett Fremmednøkler er spesialtilfeller av delmengdeskranker At A har en fremmednøkkel til B håndheves som to integritetsregler: Ved INSERT på A må vi sjekke at fremmednøkkelen har en lovlig verdi (peker på en forekomst av B) Ved DELETE av en B må vi sjekke at ingen A har en fremmednøkkel til denne forekomsten av B INF1300-24.11.2010 - Ellen Munthe-Kaas 15

Forekomstrestriksjoner i SQL Gruppert skjema: Person(personnavn, gren_blir_saget, gren_blir_sittet_på) Alle forekomstrestriksjoner kan i SQL uttrykkes ved hjelp av CHECK() Eksempel: Når vi legger inn en ny forekomst i Person, må minst ett av attributtene gren_blir_saget og gren_blir_sittet_på være NULL, eller de må ha forskjellig verdi I SQL uttrykkes dette slik: CHECK( (gren_blir_saget IS NULL) OR (gren_blir_sittet_på IS NULL) OR (gren_blir_saget <> gren_blir_sittet_på) ) INF1300-24.11.2010 - Ellen Munthe-Kaas 16

Andre integritetsregler i SQL Av andre integritetsregler (de som ikke er forekomstrestriksjoner) har vi tidligere sett hvordan vi definerer Primærnøkler Andre entydighetsrestriksjoner Fremmednøkler De øvrige må vi programmere selv som databasefunksjoner som kalles fra triggere En trigger utløses av en hendelse som INSERT, DELETE eller UPDATE i databasen Hvordan man programmerer triggere og databasefunksjoner er svært DBMS-avhengig INF1300-24.11.2010 - Ellen Munthe-Kaas 17

Referansebegreper og undertrykking av relasjoner (repetisjon) Et begrep som ikke spiller noen andre gruppererroller enn de som inngår i den prefererte referansen, og som spiller minst en referanserolle, kalles et referansebegrep Tabeller som kommer fra referansebegreper, kan fjernes (undertrykkes) fra relasjonsdatabaseskjemaet INF1300-24.11.2010 - Ellen Munthe-Kaas 18

Triggere og databasefunksjoner i Postgres NB Dette er kursorisk pensum Dere skal vite hva triggere og databasefunksjoner er, men dere vil ikke bli bedt om å programmere slike INF1300-24.11.2010 - Ellen Munthe-Kaas 19

PostgreSQL-funksjoner I Postgres 8.0 eller høyere lages funksjoner slik: CREATE FUNCTION fnavn ( [par1 type1 [, par2 type2]... ] ) RETURNS returtype AS $$ programtekst $$ LANGUAGE programmeringsspråk Blant de lovlige programmeringsspråkene er plpgsql (Postgres eget PL/pgSQL) sql (PostgreSQL) perl (PL/Perl) python (PL/Python) Med unntak av sql må språkene lastes inn f.eks. av superbruker, vanligvis som en del av installasjonen INF1300-24.11.2010 - Ellen Munthe-Kaas 20

Eksempel på PL/pgSQL CREATE FUNCTION fakturasum ( fakturanr integer ) RETURNS trigger AS $$ DECLARE faktsum NUMERIC(9,2); BEGIN SELECT SUM(belop) INTO faktsum FROM Fakturalinje fl WHERE fl.faktura = fakturanr ; UPDATE Faktura SET belop = faktsum WHERE Faktura.faktnr = fakturanr ; RETURN NULL; END; $$ LANGUAGE plpgsql ; INF1300-24.11.2010 - Ellen Munthe-Kaas 21

Triggere i PostgreSQL Syntaks for triggerdefinisjoner: CREATE TRIGGER navn { BEFORE AFTER } hendelse1 [ OR hendelse2 [ OR hendelse3 ] ] ON tabell FOR EACH { ROW STATEMENT } EXECUTE PROCEDURE funksjon ( parameterliste ) Hendelsene kan være INSERT, DELETE og UPDATE FOR EACH ROW betyr at funksjon kalles en gang for hver forekomst FOR EACH STATEMENT betyr at funksjon kalles bare en gang INF1300-24.11.2010 - Ellen Munthe-Kaas 22

Eksempel på trigger CREATE TRIGGER sett_fakturabelop AFTER INSERT OR UPDATE OR DELETE ON Fakturalinje FOR EACH ROW EXECUTE PROCEDURE fakturasum (Fakturalinje.faktura) ; Slutt på Postgres-spesifikt kursorisk stoff INF1300-24.11.2010 - Ellen Munthe-Kaas 23

Sterk gruppering 1 Ved vanlig gruppering vil ikke-totale gruppererroller gi attributter hvor NULL er tillatt Det å gruppere sterkt betyr at nullverdier aldri er tillatt Resultatet blir at relasjonene må splittes/fragmenteres: Vi får én relasjon med de attributtene som kommer fra setningstyper med total gruppererrolle Setningstyper hvor gruppererrollen ikke er total, blir til en egen relasjon bestående av primærnøkkelen og attributtet fra denne setningstypen Likhetsskranke mellom gruppererroller gjør at attributtene fra disse setningstypene kan legges i samme relasjon INF1300-24.11.2010 - Ellen Munthe-Kaas 24

Sterk gruppering 2 Sterk gruppering gir samme resultat som det å opprette en subtype hver gang vi får en ikke-total gruppererrolle (Husk: I ORM-modellen skal vi bare opprette subtyper når vi har forekomster som ikke kan spille en eller flere roller) Det gjør at alle gruppererroller blir totale Resultatet blir en relasjonsdatabase hvor ingen attributter kan være NULL INF1300-24.11.2010 - Ellen Munthe-Kaas 25

Beskrivelse (deskripsjon) av virkeligheten/interesseområdet (Universe of Discourse = UoD) Interesseområdet (UoD) Begrepsdannelse og idealisert representasjon Beskrivelse av interesseområdet INF1300-24.11.2010 - Ellen Munthe-Kaas 26

100%-prinsippet En fullstendig beskrivelse av interesseområdet kalles en informasjonsmodell 100%-prinsippet sier at det er mulig å lage en (endelig) informasjonsmodell på norsk (eller et annet naturlig språk som engelsk eller japansk) Hvorvidt dette er riktig, er et filosofisk spørsmål I ORM tas 100%-prinsippet som et aksiom (Det vi ikke kan beskrive med ord, kan vi heller ikke lage et informasjonssystem for) INF1300-24.11.2010 - Ellen Munthe-Kaas 27

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 For å beskrive de dynamiske skrankene i UoD må vi bruke en annen modelleringsteknikk, f.eks. UMLs sekvensdiagrammer INF1300-24.11.2010 - Ellen Munthe-Kaas 28

Det begrepsmessige skjema Informasjonsmodellen brukt som regelverk (preskripsjon) for hvordan informasjonssystemet skal oppføre seg, kalles det begrepsmessige skjema Det begrepsmessige skjema uttrykkes i et språk som passer for den databaseteknologien vi skal bruke For relasjonsdatabaser bruker vi SQL INF1300-24.11.2010 - Ellen Munthe-Kaas 29

Forretningregler, skranker og integritetsregler Reglene som gjelder i UoD, kaller vi forretningsregler Beskrivelsen av forretningsreglene i informasjonsmodellen (ORM-modellen) kaller vi skranker I det begrepsmessige skjemaet kaller vi skrankene for integritetsregler Integritetsreglene bestemmer hva som er lovlig å lagre i informasjonssystemet, dvs. hva som er lovlige tilstander i databasen hva som er lovlige forandringer dvs. hva som er lovlige transisjoner/transaksjoner Det er umulig for en bruker av informasjonssystemet å gjøre noe som strider mot integritetsreglene INF1300-24.11.2010 - Ellen Munthe-Kaas 30

Informasjonssystemer Modelleringsspråk (ORM) Databasespråk (SQL) (kan stanse her) Interesseområdet Forretningsregler (lover) Analyse Informasjonsmodellen Skranker (statiske/dynamiske) Realisering Informasjonssystemet Data Prosesser Integritetsregler INF1300-24.11.2010 - Ellen Munthe-Kaas 31

3-skjemaarkitekturen for databaser Presentasjonslaget beskrives med eksterne skjemaer ( views ) hvordan informasjon skal presenteres for ulike brukere Det konseptuelle (eller logiske) laget beskrives i det begrepsmessige skjemaet hva som kan lagres, og hva som er lovlige forandringer Det fysiske laget beskrives i det interne skjemaet hvordan informasjon lagres, forandres og behandles INF1300-24.11.2010 - Ellen Munthe-Kaas 32

3-skjemaarkitektur Internt skjema Begrepsmessig skjema Eksternt skjema Intern/fysisk informasjonsbehandler Intern database med fysiske data Begrepsmessig informasjonsbehandler Begrepsmessig database Ekstern informasjonsbehandler (presentasjon) Ekstern database Berit bruker INF1300-24.11.2010 - Ellen Munthe-Kaas 33

3-lagsarkitektur Benytter ideene fra 3-skjemaarkitekturen i design av distribuerte systemer Presentasjonslag: Webserver Forretningslogikk: Applikasjonsserver Datalag: Databaser, legacy-systemer, INF1300-24.11.2010 - Ellen Munthe-Kaas 34

ORM som metode 1 ORM (Object-Role Modelling) er en analysemetode for å lage et begrepsmessig skjema for et gitt UoD Resultatet kan tegnes som et klassisk ORM-diagram (storm), som et ORM2-diagram (Visio/NORMA), eller med en annen passende tegneteknikk Når dere bruker metoden i jobbsammenheng, så husk: Det er ikke dere som er eksperter på UoD Ekspertene på UoD kan normalt ikke forventes å forstå deres diagrammer Kommunikasjonen med ekspertene skal foregå på vanlig norsk (eller et annet naturlig språk) og med forekomstdiagrammer for elementære setninger INF1300-24.11.2010 - Ellen Munthe-Kaas 35

ORM som metode 2 Hensikten med analysen er å gi dere tilstrekkelig kunnskap om UoD slik at dere kan lage en korrekt informasjonsmodell Ansvaret for at dere har forstått ekspertene riktig, er fullt og helt deres (det er dere som er informatikere) Det kan være vanskelig å få UoD-ekspertene til å forstå at det er de som skal forklare deg hva UoD er («Her betaler vi for en datakonsulent, og så må vi lære ham/henne jobben sin» er en ikke ukjent reaksjon) Det å innføre et nytt informasjonssystem må være godt forankret i organisasjonen (både i ledelsen og hos brukerne) INF1300-24.11.2010 - Ellen Munthe-Kaas 36

Modellmakt Begrepet modellmakt ble introdusert av professor i sosiologi Stein Bråten i 1973 Det at dere behersker modelleringsmetoden ORM og har trening i å lese ORM-diagrammer, gjør at dere har et «overtak» på UoD-ekspertene Denne modellmakten gjør det farlig å bruke ORMdiagrammer som argumentasjon i diskusjoner med brukere og UoD-eksperter Faren ligger i at UoD-ekspertene bekrefter at modellen er riktig uten egentlig å ha forstått den INF1300-24.11.2010 - Ellen Munthe-Kaas 37

Kvalitetssikring Kvalitetssikringen av modellen gjøres ved å oversette modellen tilbake til de elementære setningene den uttrykker For en stor analyse kan dette være en tidkrevende (og derfor dyr) prosess Så i praksis bør dere konsentrere dere om de UoD-spesifikke delene av modellen og hoppe over ORMklisjeene (for der gjør dere vel ikke feil?) INF1300-24.11.2010 - Ellen Munthe-Kaas 38

Eksamen Eksamen er delt i to likeverdige deleksamener som begge må være bestått for å bestå kurset: Design av relasjonsdatabaser (ORM, realisering/gruppering,...): Fredag 3. desember kl. 14.30 18.30 Bruk av relasjonsdatabaser (SQL, normaliseringsteori,...): Fredag 10. desember kl. 14:30 18.30 På den første av de to eksamenene får dere lov til å bruke blyant og viskelær på besvarelsen. De gule gjennomslagsarkene blir ikke brukt i sensuren av akkurat denne eksamenen. Læreboken er eneste tillatte hjelpemiddel på eksamen (For fremmedspråklige er ordbok tillatt) INF1300-24.11.2010 - Ellen Munthe-Kaas 39

Noen eksamensråd for ORM - 1 Tegn og skriv tydelig - sensor er ikke tankeleser! Velg begrepsnavn med omhu feil begrepsnavn gjør at modellen blir feil et uheldig begrepsnavn kan villede sensor Alle faktatyper skal ha minst én entydighetspil Hvis entydighetspilene mangler eller plasseres feil, blir modellen feil Alle faktaroller skal ha navn som beskriver rollen Alle begreper må ha referansemåter I dette emnet bruker vi ORM-diagrammer til å lage databaser Hvis ikke alle begreper har referansemåter, kan ikke ORM-diagrammet realiseres/grupperes Nesten alle ekte modeller inneholder begrepsdannelser/eksterne entydigheter Hvis modellen din ikke har noen begrepsdannelser, er det sannsynligvis alvorlige mangler ved modellen INF1300-24.11.2010 - Ellen Munthe-Kaas 40

Noen eksamensråd for ORM - 2 Det er både lurt og lov å spre modellen over flere ark Skriv hvilke deler av besvarelsen hvert ark gjelder Skriv gjerne kommentarer til Lillebjørn Nilsen er alltid optimist og løser kryssord med kulepenn Men han tegner ikke ORM-modeller med kulepenn Så det viktigste dere tar med dere på ORM-eksamenen er blyant og viskelær (og kanskje en blyantspisser) Lykke til med ORM-eksamenen på fredag om en uke Og med relasjonsdatabaseeksamenen fredagen etter INF1300-24.11.2010 - Ellen Munthe-Kaas 41