En undersøgelse af en syntese mellem den relationelle og den objektorienterede databasemodel

Størrelse: px
Starte visningen fra side:

Download "En undersøgelse af en syntese mellem den relationelle og den objektorienterede databasemodel"

Transkript

1 Hovedopgave, Datanomuddannelsen ved Niels Brock - Copenhagen Business College Forårssemesteret 1998 En undersøgelse af en syntese mellem den relationelle og den objektorienterede databasemodel Illustration fra usenet nyhedsgruppen alt.binaries.pictures.fractals af Damián Arguimbau Vejleder: Berit Thaysen

2 Indholdsfortegnelse side 2 1. Indledning Personlige bemærkninger Begrundelse for hovedopgavens emnevalg Definitionen af hvad opgaven gik ud på Afgrænsing og strukturering af opgaven Litteratursøgninger Problemformulering Definitionsafsnit Relationsdatabaser Historien bag Den relationelle model Overordnet gennemgang Datastrukturen Dataintegriteten Datahåndteringen Det relationelle databasedesign Opsummering Objektorienterede databaser Historien bag Den objektorienterede model Overordnet gennemgang Datastrukturen Dataintegriteten Datahåndteringen Objektorienteret database design (OODD) Opsummering Design issues Design i en relationel database Design i en objektorienteret database Fordele og ulemper ved de to designmodeller Konklusion på design issues Darwen og Dates udvidede relationelle model Hvad indeholder The Third Manifesto? Arv Array attributter og 1NF Databasedesignet Diskussion af 1NF's validitet Understøttelse af bit-strømme Dataindkapsling Versionering & historik CAD/CAM relaterede opgaver Polymorfisme Konklusion Konklusion Litteraturliste...76

3 side 3 1. Indledning Hvori der gøres rede for opgavens emne, karakter, arbejdsmetoder, ambitioner og problemformulering Personlige bemærkninger De følgende sider skal give en introduktion til den tilgang, jeg personligt har haft til hovedopgaven Begrundelse for hovedopgavens emnevalg Det, du er begyndt at læse i, er en teoretisk opgave om databaser. I takt med at prisen pr. GigaByte harddisk er formindsket og processorhastigheden er forøget, spiller databaserne en stadig vigtigere rolle i vores samfund. I databaser gemmer vi CPR-numre, bilnummerplader, pasnumre, forbryderprofiler, skatteoplysninger, lovsamlinger, bibliotekskataloger - og som noget nyt inden for de seneste par år - også de oplysninger, internetagenter indsamler om internetsider, samt billeder, filmklip og lyd. Går en database ned, kan det betyde at bankerne ikke tør udbetale penge, at en arbejdsplads må stå stille, eller at politiet ikke kan håndtere hurtige eftersøgninger. Folketinget har anset det for fornuftigt at lave en registerlovgivning, der blandt andet sikrer mod samkøring af visse registre. Databaser er grundlaget for at man kan håndtere mange følsomme og vigtige systemer på en fornuftig måde. De relationelle databaser er den type databaser, der er mest udbredte i dag. Men disse har problemer med at håndtere billeder, film og lyd på en effektiv, fornuftig og brugervenlig måde. Der er dukket konkurrenter op: Objekt-relationelle databaser og objektorienterede databaser. De første forsøger at bibeholde en tilknytning til det relationelle univers, mens de sidstnævnte først og fremmest læner sig op ad de objektorienterede programmeringssprog C++, Smalltalk og Java. At man skal gemme nye datatyper i databaser vil få nogle konsekvenser for den måde, man håndterer data på. Måske vil det få nogle konsekvenser for, hvordan man i det hele taget designer databaser. Det synes jeg er det spændende ved databaseudviklingen.

4 side 4 Det andet, jeg synes var spændende, var det objektorienterede. Problemet var, at det eneste jeg vidste om objektorientering i det hele taget, inden jeg begyndte på min hovedopgave, bestod af det, jeg havde lært på datanomuddannelsens C++ kursus plus en begrænset erfaring i Java og Javascript. Det var imidlertid interessant, synes jeg, at man kunne bygge egne klasser, genbruge og udbygge dem. Jeg kunne sagtens se for mig, at arv, polymorfisme m.m. burde kunne bruges på databasedesign. Det ville også være praktisk hvis C++ sproget kunne gemte data med det samme i en database, som jeg kunne kommunikere med via C++ kommandoer og ikke via SQL. Klasser, arv og polymorfisme, samt det at programmere var spændende. Jeg ville gerne koble denne interesse med min interesse for databaser. Læsningen af det objektorienterede manifest, som Atkison udgav i 89 [Atkinson et al 89], og Date og Darwens manifest fra 95 [Darwen og Date 95] var de to tekster, jeg fandt mest interssante. Og efterhånden som tiden gik, og jeg læste Dates introduktion til databaseverdenen [Date 95], blev jeg mere og mere overbevist om, at Date på en eller anden subtil måde gik galt i byen, når han behandlede de objektorienterede databaser. Der var noget i hans og Darwens manifest, som jeg ikke helt kunne acceptere. Et af problemerne, mente jeg, lå i det faktum, at selve arbejdsmetoden var meget anderledes afhængig af, om man kom fra den relationelle eller den objektorienterede verden. Det synes Date ikke at tage hensyn til. Det ville jeg gerne undersøge nærmere Definitionen af hvad opgaven gik ud på Jeg ville altså to ting: Få hold på hvad forskellen på de relationelle databaser og de objektorienterede databaser var, samt undersøge om Darwen og Date havde ret i, at den relationelle model kunne alt det, som de objektorienterede databaser sagde, at de kunne. Selve sammenligningen mellem de relationelle og de objektorienterede databaser viste sig at være sværere end jeg havde forestillet mig. Det var forholdsvis nemt at finde frem til en definition af de relationelle databaser, som langt de fleste kunne blive enige om. Jeg ville bruge Date som hovedteoretiker, fordi han er en markant personlighed, der har bidraget konstruktivt til den relationelle database teori i mange år. Han bruger selv sin bog fra 95 som selve definitionen af, hvad en relationel database er. Så det ville jeg også gøre.

5 side 5 Det var sværere at finde ud af, hvordan jeg skulle gribe de objektorienterede databaser an. Problemet bestod i, at der viste sig at være flere opfattelser og implementeringer af, hvad objektorienterede databaser rent faktisk var. Og selv om det, som Atkinson m.fl. havde forfattet i 89 var et godt udgangspunkt, så var det ikke godt nok til at kunne bruges som en definition, jeg kunne sammenligne ud fra. Tendensen var imidlertid, at flere og flere gik over til den såkaldte ODMG standard, som Object Data Management Group (ODMG) havde defineret og for objektorienterede databaser. Det synes umiddelbart som en god vej at gå, ikke mindst fordi mange store spillere på markedet havde deltaget i arbejdet med at definere standarden. Så det blev den, jeg valgte at bruge. Computer Associates udgav nogenlunde på dette tidspunkt i mine overvejelser en objektorienteret database ved navn Jasmine. Via nogle diskussioner i et digitalt forum (Politiken on-line, et privat BBS-system) kom jeg i kontakt med Computer Associates. De var så venlige at udlåne en enterprise udgave til mig. Jasmine er en ren objektorienteret database - men den implementerer ikke alle de features, som ODMG anbefaler. På internettet kunne jeg endvidere downloade et produkt kaldet Poet, som er ODMG kompatibelt. Via deres C++ interface kunne jeg arbejde med en ODMG database, men desværre viste det sig at være sværere end først antaget. Jeg var ikke så fortrolig med Visual C++ som compiler, som var det, Poet brugte i de downloadede eksempler (der fandtes også eksempler til Borlands compiler, som jeg ikke har). Det viste sig, at de dels manglede at vedlægge en vigtig systemfil, og dels viste koden sig at være yderst vanskelig at kompilere. Det lykkedes til sidst, efter megen brok og hjælp fra både Poets support afdeling samt en C++ programmør fra mit nuværende arbejde, som var så venlig at hjælpe mig, da jeg gik i sort Afgrænsing og strukturering af opgaven Der var disse to yderpunkter: relationelle kontra objektorienterede databaser. Det var godt nok. Jeg havde nu en officiel definition på begge, jeg kunne bruge for at forstå dem hver især og sætte deres verdensforståelse op mod hinanden. Så havde jeg Darwen og Dates syntese af disse to verdener, som de beskriver det i deres manifest. Den syntese ville jeg belyse. Det var endnu bedre, for nu havde jeg fået foræret strukturen på min opgave: 1. Beskriv relationelle databaser,

6 side 6 2. Beskriv objektorienterede databaser, 3. Belys den praktiske forskel i verdensopfattelse mellem disse to modeller 4. Find ud af om Darwen og Dates syntese rent faktisk også kan rumme den samme funktionalitet, som objektorienterede databaser kan. Det er denne struktur, opgaven følger. Mit eneste problem var nu, at der fandtes disse objekt-relationelle databaser, som jeg i et vist omfang også gerne ville tage stilling til. At inddrage dem i selve analysearbejdet ville dog være alt for omfattende. Det ville svare til at definere en hel ny opgave. Hensigten med opgaven er at finde ud af, om den relationelle teori, sådan som Darwen og Date ser den, kan håndtere de samme opgaver som de objektorienterede databaser. Objekt-relationelle databaser har store indbyrdes forskelle, og derfor er de kun medtaget i det omfang, det virker relevant i sammenhængen. De steder, jeg har læst om dem, synes at antyde, at disse objekt-relationelle databaser forsøger at leve op til den SQL-3 standard, som var annonceret til at være klar i 1995, men som i følge rygter er udskudt til engang i Det er denne SQL-3 standard, Date og Darwen i virkeligheden forsøger at påvirke via deres manifest, da de har samme ønsker som SQL3-komitéen (bortset fra den ikke ubetydelige forskel, at Date og Darwen vil finde en erstatning for SQL). Hele diskussionen om SQL3 og de objekt-relationelle databaser er forholdsvis komplex. Dels er implementeringerne af de objekt-relationelle databaser som tidligere nævnt forskellige og ikke-kompatible, dels er SQL3 versionen stadig en draft 1. Ingen af de objekt-relationelle er landet på en løsning, der ligner den, SQL3 har i draften, omend der er overlappende ting. I opgaven har jeg set det formålstjenligt at afgrænse mig væk fra SQL3 og de objekt-relationelle databaser, da hele diskussionen ville blive forplumret i forhold til hovedopgavens egentlige ambition Litteratursøgninger Bortset fra min vejleder, har internettet været min største informationskilde. Jeg har benyttet mig voldsomt af ACM (Association for Computing Machinery, som er en international scientific and educational organization dedicated to advancing the arts, sciences, and applications of information technology. Deres digitale bibliotek kan søge på ord i mange års artikler fra deres udgivelser og har 1 Dvs. Et SQL3-arbejdspapir fra ANSI, da standarden endnu ikke foreligger i en godkendt version

7 side 7 været mig en uudtømmelig kilde til viden. Artikler, som jeg ikke ville have regnet med indeholdt noget interessant, dukkede pludselig op i mine søgninger. På den måde fik jeg mange uddybende forklaringer, der kunne bringe mig videre. På samme måde har jeg brugt nyhedsgrupperne på internettet, især comp.databases.object, hvor jeg har bedt om hjælp de gange, jeg ikke helt kunne forstå nogle af ODMG's særheder. Jeg har fået svar fra så forskellige steder som University of Illinois og INSA Rennes i Frankrig. Især har Dipl.-Inform. Stefan H. Rupp fra Geodaetisches Institut der RWTH i Aachen været til stor hjælp. Læsning af nyhedsgrupperne har også givet en ret god fornemmelse for, hvad det var, folk havde vanskeligheder med. Blandt andet viste det sig, at jeg ikke var den eneste, der havde problemer med at få C++ databaser til at fungere uproblematisk. Denne opgaves litteraturliste består i høj grad af artikler fra diverse tidsskrifter, som også er blevet publiceret på internettet (heriblandt Darwen og Dates manifest samt Atkinsons). Desværre lykkedes det ikke at finde artikler, der behandlede Darwen og Dates manifest. Det skyldes sandsynligvis, at diskussionen om denne finder sted i universiteterne (det viser de henvendelser, jeg har fået fra nyhedsgrupperne), og at opgaver og specialer i universitetsregi ikke har nogen nævneværdig offentlig udbredelse. Men selve søgning af litteratur på internettet er en metode, som kan anbefales til andre studerende. De bedste steder, fx ACMs digitale bibliotek, skal man betale for (ca. 300 kr.), men pengene er godt givet ud! 1.2. Problemformulering Efter al denne baggrundsinformation følger hermed den officielle problemformulering for opgaven: For det første vil jeg gerne undersøge, hvilken forskel der er i praksis mellem den relationelle og den objektorienterede databasemodel, især ved at afklare om der allerede i databaseanalytikerens designfase i realiteten optræder en markant divergens mellem disse to opfattelsesmodeller og om dette vil have stor betydning for den måde, en databasedesigner vil strukturere sine data på.

8 side 8 For det andet vil jeg kigge på den kritik, Date og Darwen retter mod de aktuelle implementeringer af relationelle databasesystemer. De hævder, at disse ikke til fulde lever op til den relationelle models teorier. De kritiserer også de objektorienterede databasers mangel på ordentlig teoretisk grundlag og foreslår en implementering af den relationelle model, der fuldt ud hviler på dets teoretiske grundlag, og som de mener samtidig overflødiggør den objektorienterede databasemodel. Denne hovedopgave skal afklare om de har ret i, at deres syntese i virkeligheden kan rumme alle de elementer, som den objektorienterede databasemodel implementerer.

9 side 9 2. Definitionsafsnit Hensigten med dette afsnit er kort at definere nogle af de hovedbegreber, der bliver benyttet i nærværende hovedopgave. En databasemodel forstås som en række begreber, der kan benyttes til at beskrive en databases struktur samt definitioner på de operationer, man kan udføre for at opdatere og trække oplysninger ud af databasen. Højniveau databasemodeller beskriver strukturen på en måde, der ligger tæt op ad hvordan en bruger kunne opfatte data. Lavniveau eller fysiske modeller beskriver data, således som de bliver gemt på en computer. Herudover findes implempenterings- eller repræsentationsmodeller, som forsøger at beskrive data således som brugeren forstår dem, men som samtidig søger ikke at fjerne sig alt for meget fra hvordan data organiseres på en computer. Som et absolut minimum vil alle højniveau modeller indeholde en beskrivelse af, hvordan følgende tre ting skal gribes an: datastrukturen, dataintegriteten samt datahåndteringen. I opgaven er beskrivelsen af de to databasemodeller indrettet efter disse tre hovedingredienser. Det gør det også nemmere at sammenligne dem senere. I hovedopgaven arbejder jeg med to implementeringsmodeller, nemlig den relationelle og den objektorienterede databasemodel. Et databasesystem (DBS) er en grundlæggende set et "computerized record keeping system" [Date 95] eller en "collection of programs that enables users to create and maintain a database" [Elmasri & Navathe 94]. Grundlæggende består et databasesystem af data, hardware, software og brugere. Til ethvert databasesystem hører et administrationssystem, et såkaldt database management system (DBMS). Dette administrationssystem giver adgang til at definere databasens enkelte komponenter, til at konstruere selve databasen og til at manipulere de data, som databasen inkluderer. Langt de fleste DBMS'er vil også have et data dictionary, hvor databasens struktur dokumenteres og en transaktions administrator, som udfører "recovery and concurrency control" [Date 95].

10 side 10 Databaseadministrationssystemet (DBMS'en) håndterer i princippet al adgang til data. Det, der sker er følgende: 1. En bruger sender en opdaterings- eller udtrækskommando via et databaseadministrationssprog. 2. DBMS'en modtager kommandoen og analyserer det. 3. DBMS'en undersøger det eksterne skema for den bruger, der har sendt kommandoen, det konceptuelle skema samt den fysiske datastruktur 4. DBMS'en udfører de nødvendige operationer på databasen og genererer et output til brugeren. DBMS'en er i virkeligheden det, der udgør forskellen mellem et filsystem og et databasesystem. I et filsystem har man adgang til data direkte, mens man i et databasesystem med DBMS vil have et system, der sikrer at datahåndteringen respekterer datastrukturen samt dataintegriteten Tre-skema arkitekturen Hensigten med tre-skema arkitekturen er at adskille den fysiske database fra brugerapplikationen. De tre lag i databasearkitekturen er som følger: 1. Det interne niveau beskriver den måde, data fysisk lagres på. 2. Det konceptuelle niveau beskriver hvordan hele databasens struktur ser ud for databasens brugere. Højniveau- og implementeringsmodeller kan benyttes til at beskrive det konceptuelle niveau. 3. Det eksterne niveau indeholder en række modeller, der hver især definerer, hvordan en bestemt gruppe brugere skal se en bestemt mængde af databasens oplysninger. Dette niveau kan også beskrives af højniveau og implementeringsmodeller.

11 side 11 Fra Elmasri & Navathe 1994 Tre-skema arkitekturen kan blandt andet bruges til at forklare ideen om datauafhængighed. Ved at adskille de tre niveauer kan man ændre i hver enkelt af de tre niveauer uden at de øvrige to nødvendigvis påvirkes af ændringerne. Dvs. at man for eksempel kan definere en anden måde at lagre data på, uden at det nødvendigvis betyder, at man skal lave om på databasestrukturen eller på den måde, brugere ser data Definitioner relateret til objektorienterede databaser Bredt opfattet er objekter "a real-world or abstract entities that we model in a database" [Catell 94]. Mere specifik definition følger her: Dataindkapsling "dækker muligheden for at indkapsle forskellige dataelementer ( ), der udefra kan betragtes som en enhed." [Glaven 92] Denne enhed kaldes en objektklasse. Variable af klassen kaldes objekter. Man kan sikre at adgang til det indkapslede kun kan ske gennem en specificeret grænseflade. Objekter kan have bestemte måder at opføre sig på, idet man kan knytte metoder til objekterne.

12 side 12 Arv "dækker muligheden for at definere nye objektklasser, som arver egenskaber fra allerede eksisterende objektklasser. Ved arv og tilføjelse af nye egenskaber kan der opbygges et hierarki af mere og mere specialiserede klasser." [Glaven 92] Via polymorfisme kan man opnå, at det samme metodekald udfører forskellige opgaver, afhængig af det kaldte objekts type. Polymorfisme forudsætter arv. Den objektorienterede programmeringssprogs typebaserede logik gør, at en type beskriver egenskaberne ved variablen, såsom størrelsen, det mulige indhold samt regler for anvendelse og operationer på variablen. Typen er bestemmende for reservering af plads til data og for behandlingen af dem [jf Glaven 92]. Alle operationer på data forudsætter, at man definerer en given returtype. En objektklasse er en brugerdefineret type.

13 side Relationsdatabaser I dette hovedafsnit er det min hensigt at gøre to ting: 1. Kort at ridse relationsdatabasens historie op 2. Nærmere at definere den relationelle databasemodel Det første punkt er at betragte som en introduktion af relationsdatabaser som sådan. Det er for mig at se vigtigt, at det historiske perspektiv ikke glemmes, da denne rummer nøglen til at forstå hvorfor og hvordan tingene blev som de er, samt rummer værdifulde oplysninger om, hvordan man i det hele taget kan gribe databaser an. Det andet punkt er at betragte som det grundlag, hvorudfra sammenligningen med de objektorienterede databaser finder sted. Jeg har derfor valgt enkelte punkter af den relationelle databaseteori ud, som jeg specielt ville fokusere på. Dermed er også sagt, at jeg forudsætter en vis forudgående viden om relationsdatabaser. Sammenlignet med dette afsnit er beskrivelsen af de objektorienterede databaser mere omfattende, fordi jeg betragter det som sandsynligt, at en potentiel læser kender til relationelle databaser, men kun ved lidt om de objektorienterede databaser. Hvor det er særlig relevant drager jeg paralleller mellem de to typer databaser allerede i dette afsnit. Disse vil typisk bestå i nogle egenskaber, som man særligt skal lægge mærke til, da de har betydning for den senere sammenligning med de objektorienterede databaser Historien bag Codd lagde i 1970 [Codd 70] kimen til den moderne relationsdatabase teori, der skulle komme til at afløse den hierarkiske model og netværksmodellen. Hensigten med Codds forskning var at sørge for en uafhængighed mellem den måde de fysiske data lagres på og den måde, de repræsenteres på over for brugeren. Den relationelle model, skriver Codd [Codd 70]: provides a means of describing data with its natural structure only - that is, without superimposing any additional structure for machine representation purposes. I parentes bemærket er det præcis det samme som de objektorienterede modeller hævder at gøre. Men det er værd at bemærke, at da Codd skrev dette, var der tale om et paradigmeskift, idet de daværende databasesystemer i høj grad krævede, at data tilpassede sig maskinen snarere end omvendt.

14 side 14 Codd fortsætter gennem 70'erne med at udvikle den relationelle tankegang i en række artikler og udgiver en formel definition af den relationelle algebra i Algebraen bliver det teoretiske grundlag for forespørgsels sproget SQUARE (Specifying Queries as Relational Expressions), som Boyce m.fl. beskrev i SQUARE udviklede sig igen til SEQUEL og endte til sidst med at blive den SQL, som ANSI i 1986 ophøjer til standard. Det er et diskussionsemne, hvornår de første egentlige kommercielle relationelle produkter kommer - det afhænger af, hvor stringent man vil følge Codds definitioner af databasekravene. Men først hen mod slutningen af firserne kan man tale om, at de relationelle databaser fuldstændig erstatter de hidtidige hierarkiske databaser og netværksdatabaserne. I 1990 fremfører Codd det, han kalder for den relationelle model, version 2 [Codd 90]. Hovedforskellen mellem v1 og v2 er, at Codd i anden omgang forsøger at beskrive hele databasen og ikke kun de tre hovedelementer 2. Version 2 indeholder hele 18 elementer i modsætning til version 1's tre. Der er dog ikke konsensus omkring Codds nye tilføjelser til den relationelle model, og jeg har derfor valgt slet ikke at inddrage hans version 2 i min gennemgang af den relationelle teori. Allerede før Codd udgiver sin relationelle model, Version 2, er Date og Darwen godt på vej til at bliver særligt toneangivende teoretikere inden for den relationelle database teori. Dates bog, An Introduction to Database Systems, er på dette tidspunkt standardlærebogen i mange universiteter. Og såvel Date som Darwen udgiver et hav af artikler og bøger i løbet af firserne og halvfemserne, herunder en kritik af Codds Version 2 [Date 92]. 3 Vigtigt i denne sammenhæng er at notere sig, at især Date påtager sig rollen som den relationelle databasemodels fortolker, forkæmper og beskytter. Grunden til, at Date pludselig skal se sig som beskytter er, at de seneste år har den relationelle model været under angreb af de nyere objektorienterede modeller, der 2 Nemlig datastrukturen, dataintegriteten og datahåndteringen 3 Som en kuriøsitet kan nævnes at Codd og Date i 1984 havde etableret firmaet Codd & Date consulting Group sammen. Firmaet eksisterer stadig og rådgiver kunder omkring databaseløsninger og design. Date forlod firmaet i 1991.

15 side 15 begyndte inden for programmering (først og fremmest Simula, C++, Smalltalk og senest Java), men hvis praktiske og teoretiske anvendelse snart begyndte at omfatte databaser. En af grundene til, at databasefolk begyndte at se sig om efter en afløser til relationsdatabaserne var, at man begyndte at få brug for at ordne komplekse strukturer i en database, som for eksempel filmklip, fotos m.m., snarere end tekst eller talstrenge. Dette skyldes igen den revolution inden for processorkraft, harddiskkapacitet og båndbredde, der har fundet sted inden for de seneste år. De relationelle databaser håndterer data ud fra deres værdier. Men filmklip, fotos, lyd m.m. har ingen menneskeligt forståelige værdier, hvis man kun ser på bitstrengene. Derfor var relationsdatabaserne slet ikke klar til at håndtere disse typer informationer, da de skulle ordnes i databaser. Date og Darwen har derfor de seneste år taget fat på at undersøge den relationelle model endnu nøjere og i bøger og artikler (se bl.a. Date 95) forsøgt at få indpasset nogle elementer inspireret af de objektorienterede databaser i den, bl.a. indkapsling, metoder m.v. uden at disse tilføjelser går ud over den relationelle dataintegritet. Den relationelle database teori har været genstand for megen forskning. Den har derfor et solidt teoretisk grundlag, den kan hvile på. Det betyder dog ikke, at der ikke fortsat forskes og videreudvikles inden for emnet. Som Date skriver: I too have changed my opinions on many matters and will no doubt continue to do so. [Date 95]. Udviklingen fortsætter - også inden for forskningen. De øgede krav om funktionalitet til databaser giver sig udslag i nye produkter, produkter, som gør deres bedste for at levere (hver deres) implementerbare løsninger på de udfordringer, som den nyeste udvikling i samfundet præsenterer databaseprodukterne for. Samtidig knokler forskerne på for at finde holdbare teorier, der kan sørge for, at implementeringen af de nye databaser kan basere sig på en god, teoretisk ballast, der sikrer mod fejl og indbyggede besynderligheder i programmerne. Et eksempel på disse produkter er de objekt-relationelle databaser. I det følgende vil vi kigge på den del af den relationelle model, som danner det teoretiske grundlag for de kommercielle relationelle databaser.

16 3.2. Den relationelle model side 16 Hensigten med dette afsnit er at give et overblik over den relationelle model. De dele af den relationelle model, som har en særlig betydning for sammenligningen med de objektorienterede modeller, vil blive behandlet. Det gælder især de punkter, hvor Date og Darwen dels kritiserer den relationelle models implementering i de kommercielle produkter, dels udvider den relationelle models funktionalitet ved at give en ny vinkel til definitionen af den relationelle models enkeltdele Overordnet gennemgang Den relationelle model er en måde at repræsentere data på. Set fra en almindelig brugers øjne er en relationel database organiseret i tabeller (relationer). Rækkerne i tabellerne repræsenterer de enkelte databaserecords (tupler) og kolonnerne i tabellen de enkelte felter (attributter) i databasen. Den relationelle model rummer faciliteter til at håndtere: 1. datastrukturen 2. dataintegriteten 3. datahåndteringen Hvordan data herudover lagres rent fysisk på et givet datamedie vedkommer ikke den relationelle model, da den er en implementationsmodel, der beskriver databasen på et konceptuelt niveau Datastrukturen Datastrukturen har at gøre med, hvordan man repræsenterer en given entitet i en relation. Hensigten med dette afsnit er at give et overblik over de datastrukturelle dele af den relationelle model for dernæst at positionere de særlige ting ved den datastrukturelle del, der har indflydelse på sammenligningen med de objektorienterede databasers datastruktur. De overordnede regler for den relationelle model er opsummeret i nedenstående skema. Overordnede regler for datastrukturen [Codd 85]: 1. Der kan ikke forekomme ens tupler i en relation og tuplers rækkefølge er ligegyldig, hvilket også gælder for deres attributter

17 side Resultatet af en forespørgsel er en ny relation, som kan gemmes og som man senere kan arbejde videre på. 3. Tabeller bruges til at repræsentere de gemte data 4. Hver enkel kolonne i en tabel svarer til en attribut 5. View tabeller er virtuelle relationer, som repræsenteres internt af en eller flere relationelle komandoer og ikke via gemte data. 6. Snapshot modeller er relationer som er blevet evalueret og gemt i databasen sammen med en dato, der angiver hvornår snapshoten blev taget. 7. Domæner er det sæt værdier, hvorfra en eller flere kolonner validerer deres data Domænet Domænet er den del af relationsteorien, der danner grundlag for Dates forsøg på at vise, at den objektorienterede models begreber og funktionaliteter allerede ligger latent i den relationelle models teorier. Domænet er en definition af en komplex mængde af legale værdier. Et par eksempel viser, hvad Date mener [Date 95]: mængden af legale værdier for en attribut som danske postnumre svarer til mængden af en række intervaller af firecifrede tal. mængden af legale værdier for dag_navn er ugedagenes navne Pointen er, at domænet kan indeholde en datatype af forskellig kompleksitet - herunder nestede, komplekse strukturer - men som følger visse lovmæssigheder, der kan defineres nærmere og derfor valideres. Codd [Codd 85] er helt på linie med Date, når han nævner vigtigheden af, at databasesystemer (og SQL) understøtter domæner. Fordelene er, at: man for eksempel kunne nøjes med at angive en definition for et domæne (fx et interval af fire-cifrede tal), hvorfra en eller flere attributter kan validere sine data. Det er pladsbesparende, fordi vi ikke fysisk behøver at oprette en relation, der indeholder alle de legale tupler, som attributten kan bruge. Ved de algebraiske operationer kan DBMS'en først tage stilling til, om to inkompatible domæner bliver sammenlignet og advare brugeren om dette. Domæner er med til at sikre dataintegriteten uden at det går ud over databasers distribuerbarhed.

18 Dataintegriteten side 18 Dataintegriteten sikrer konsistens mellem data, således at man ikke risikerer at miste data. Dette gøres ved at sikre, at der er: Dataentydighed Referenceintegritet Brugerdefineret dataintegritet Hensigten med dette afsnit er at give et overblik over de dataintegritetsmæssige dele af den relationelle model og fremhæve de særlige ting ved dem, der adskiller dem fra de objektorienterede databaser Dataentydigheden Dataentydigheden indebærer, at man altid kan finde en relevant tupel. Det gøres ved, at man har defineret mindst en kandidatnøgle, som kan sikre, at man altid kan finde de relevante data frem 4. En del af entitetsintegriteten handler også om at sikre, at der ikke er redundans. Eller, hvis der er redundans, at sikre at begge tupler bliver opdaterede på én gang. I modsat fald kan man få problemer med inkonsistente data, hvor den samme entitet, der er repræsenteret to forskellige steder i databasen, optræder med forskellige værdier. Disse problemer relaterer sig også til referenceintegriteten Referenceintegritet Referenceintegriteten sikres ved at anvende en kandidatnøgle som fremmednøgle i en relateret tabel. Fremmednøglen repræsenterer således en reference til tuplen, som indeholder den matchende kandidatnøgle. DBMS'ens opgave er at sikre, at alle fremmednøgler ulig fra null matcher en kandidatnøgle i den tabel, der refereres til, da der ellers ville optræde en referenceintegritetsfejl. Det er vigtigt at notere sig, at der ikke tilsvarende kræves en fremmednøgle i den tabel, som fremmednøglen refererer til. Der er netop ikke tale om et to-vejs link, men om en 4 En kandidatnøgle er en nøgle, der for R er en delmængde af mængden af R's attributter, K, således at der ikke er to forskellige tupler i R, der på noget tidspunkt har samme værdi i K. Ingen af attributterne i K kan bortfalde uden at K derved mister sin evne til unikt at identificere en tupel i R. En primærnøgle er den kandidatnøgle, man har valgt som den primære nøgle i sin relation.

19 angivelse af, at en række oplysninger hører til en bestemt relation. Med andre ord, referenceintegriteten siger simpelthen, at hvis B refererer til A, så må A eksistere. side Brugerdefineret integritet Den brugerdefinerede dataintegritet indebærer, at brugeren har sat nogle betingelser op, som altid skal opfyldes: fx at fornavnet i en navnetabel altid skal være udfyldt, eller at den skal have en standard-værdi. Endvidere introducerer Date en ny integritetsregel: domæneintegriteten. Denne regel fastslår det indlysende, at ethvert attribut skal validere sine værdier i det relevante domæne Datahåndteringen Den tredje og sidste del af den relationelle teori omhandler datahåndteringen, som er baseret på den relationelle algebra. I dette afsnit vil jeg hovedsageligt beskæftige mig med datahåndtering i forbindelse med udtræk af data. Det skyldes, at man i den objektorienterede model kun har datahåndtering defineret for udtræk, mens datahåndtering for opdatering af data afhænger af den funktionalitet, man lægger i sin database. Det er derfor ikke formålstjenligt at gennemgå opdateringsfaciliteter i den relationelle model. Det er vigtigt at forstå algebraens funktion i den relationelle teori, fordi de objektorienterede databaser forholder sig anderledes til verden end de relationelle. En indlysende grund til, at den objektorienterede model er nødt til at forholde sig ambivalent til den algebraiske model er, at input og output i den relationelle algebra netop er relationer og ikke objekter. Det skyldes, at objekter ikke nødvendigvis overholder 1NF. En anden pointe, man bør udlede af ovenstående er, at relationsdatabasemodellen fuldt dækker et matematisk område (algebraen). Relationsdatabaserne kan derfor benytte sig af algebraens matematiske operationer og samtidig have fuld teoretisk dækning for operationerne. Date understreger, at der i algebraen er tale om set-operations, dvs. at man arbejder på en given relation, der er afgrænset ud fra nogle kendetegn (fx alle postnumre, der begynder med cifrene 14), ganske som det er tilfældet i mængdelæren. Denne måde at arbejde på er med til at sikre dataintegriteten i en relationel database.

20 side 20 Med den relationelle algebra kan vi skrive kommandoer ( expressions ), der giver mulighed for at man kan: finde data via forespørgsler opdatere data definere views definere snapshots definere autorisationsregler sikre dataintegritet ved flere samtidige brugere definere integritetsregler Såvel input som output i algebraen er relationer. Det betyder, at outputtet fra en operation kan benyttes som input til den næste operation. Via algebraen skal det være muligt at definere et abstrakt højniveau sprog, der kan håndtere data i den relationelle database. Et sprog kan derfor siges at være fuld relationelt, såfremt den kan udvirke præcis de samme funktioner som den relationelle algebra definerer og overholder de betingelser, der er nævnt ovenfor SQL-sproget Mens den relationelle algebra repræsenterer det teoretiske grundlag for, hvilke forespørgsler, der i det hele taget er muligt at udføre på relationer, så er SQL det sprog, som i praksis bruges i de kommercielle databaser. SQL er altså en implementation af den relationelle algebra. I SQL overlader man til DBMS'en at optimere forespørgslen bedst muligt. SQL er samtidig defineret som en ANSI-standard, der skal gøre det muligt at migrere fra et relationelt databaseprodukt til et andet uden nævneværdige problemer. Jeg vil i det følgende forholde mig til SQL-sproget som defineret af ANSI i 92 (kendt som SQL-2 eller SQL/92). Som nævnt tidligere arbejdes der i øjeblikket på en SQL-3 version, der skal indeholde nogle af de muligheder, man har i objektorienterede databaser. Hvordan SQL-3 vil ende med at se ud, er endnu uklart. Darwen og Date skriver i deres manifest, at SQL er en perversion af den relationelle model [Date & Darwen 95] og foreslår i stedet, at man begynder at konstruere et nyt

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5 Databaser og SQL Introduktion til SQL Kap 1-5 1 Dagens gang Databaser Database begreber Mapning af klasser til relationel model Normalisering Opgaver til næste gang 2 Databasebegreber A database is a:

Læs mere

Database for udviklere. Jan Lund Madsen PBS10107

Database for udviklere. Jan Lund Madsen PBS10107 Database for udviklere Jan Lund Madsen PBS10107 Indhold LINQ... 3 LINQ to SQL og Arkitektur... 3 O/R designere... 5 LINQ Den store introduktion med.net 3.5 er uden tvivl LINQ(udtales link): Language-INtegrated

Læs mere

Hvad er en relationsdatabase? Odense, den 19. januar Version 1.0

Hvad er en relationsdatabase? Odense, den 19. januar Version 1.0 Hvad er en relationsdatabase? Odense, den 19 januar 2004 Version 10 Program for 6 kursusdag: Databaser 0900-0945 Hvad er en relationsdatabase? -1045 Opgave om normalisering 1100-1145 Eksempel på database

Læs mere

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002 Databaser, efterår 2002 Databasesystemer Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk

Læs mere

Hvorfor skal vi bruge objekt orienteret databaser?

Hvorfor skal vi bruge objekt orienteret databaser? OODBMS Vs. RDBMS 1 Indholdsfortegnelse Hvorfor skal vi bruge objekt orienteret databaser?... 3 OODBMS i erhvervslivet... 4 Bagsiden af medaljen... 5 OODBMS i praksis... 6 Konklusion... 8 2 Hvorfor skal

Læs mere

Skriftlig opgave. Designtanker i database-nære systemer

Skriftlig opgave. Designtanker i database-nære systemer Skriftlig opgave til eksamen for faget»databaser«designtanker i database-nære systemer Martin Ancher Holm Juni 2010 1 Intro Denne skriftlige opgave indeholder kort de daglige tanker jeg har omkring design

Læs mere

EA3 eller EA Cube rammeværktøjet fremstilles visuelt som en 3-dimensionel terning:

EA3 eller EA Cube rammeværktøjet fremstilles visuelt som en 3-dimensionel terning: Introduktion til EA3 Mit navn er Marc de Oliveira. Jeg er systemanalytiker og datalog fra Københavns Universitet og denne artikel hører til min artikelserie, Forsimpling (som også er et podcast), hvor

Læs mere

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 3: E-R modellering. 17. februar 2005. Forelæser: Rasmus Pagh

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 3: E-R modellering. 17. februar 2005. Forelæser: Rasmus Pagh Databasesystemer, forår 2005 IT Universitetet i København Forelæsning 3: E-R modellering 17. februar 2005 Forelæser: Rasmus Pagh Forelæsningen i dag Datamodellering hvad, hvornår, hvorfor og hvordan? Business

Læs mere

Tietgenskolen - Nørrehus. Data warehouse. Database for udviklere. Thor Harloff Lynggaard DM08125

Tietgenskolen - Nørrehus. Data warehouse. Database for udviklere. Thor Harloff Lynggaard DM08125 Tietgenskolen - Nørrehus Data warehouse Database for udviklere Thor Harloff Lynggaard DM08125 Juni 2010 Indhold Beskrivelse... 3 Data warehouse... 3 Generelt... 3 Sammenligning... 3 Gode sider ved DW...

Læs mere

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Hassansalem.dk/delpin User: admin Pass: admin BACKEND Hassansalem.dk/delpin User: admin Pass: admin BACKEND 1/10 Indledning Dette projekt er den afsluttende del af web udvikling studiet på Erhvervs Lillebælt 1. semester. Projektet er udarbejdet med Del-pin

Læs mere

Database. lv/

Database. lv/ Database 1 Database Design Begreber 1 Database: En fælles samling af logiske relaterede data (informationer) DBMS (database management system) Et SW system der gør det muligt at definer, oprette og vedligeholde

Læs mere

Datamodeller. 1. Elementerne. Vi betragter E/R-diagrammet, som et diagram over entiteter og relationer Tegneregler: Entitet

Datamodeller. 1. Elementerne. Vi betragter E/R-diagrammet, som et diagram over entiteter og relationer Tegneregler: Entitet Datamodeller I forlængelse af noten om normalisering, følges der her op med redskabet E/R-diagrammer til opstilling af en datamodel, opfat således dette som en alternativ metode mere end endnu et redskab

Læs mere

Objektorientering. Programkvalitet

Objektorientering. Programkvalitet 1 PROSA-Bladet nr. 4 1993 Objektorientering = Programkvalitet? Af Finn Nordbjerg, adjunkt ved Datamatikeruddannelsen, Aalborg Handelskole 1. Indledning Objektorientering er blevet et edb-fagets mest udbredte

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

Skriftlig eksamen i kurset. Informationssystemer

Skriftlig eksamen i kurset. Informationssystemer 6. semester sundhedsteknologi Skriftlig eksamen i kurset Informationssystemer Der er 3 timer til at besvare opgaven. Alle hjælpemidler er tilladte. Skriv kort og præcist. Referer gerne til kursuslitteraturen.

Læs mere

Baggrundsnote om logiske operatorer

Baggrundsnote om logiske operatorer Baggrundsnote om logiske operatorer Man kan regne på udsagn ligesom man kan regne på tal. Regneoperationerne kaldes da logiske operatorer. De tre vigtigste logiske operatorer er NOT, AND og. Den første

Læs mere

Object-Relational Mapping

Object-Relational Mapping Databaser for udviklere () Datamatiker TietgenSkolen Underviser: Allan Helboe 06-06-2010 Problemformulering Denne opgave er et forsøg på at beskrive problemerne der opstår ved anvendelsen af en relationel

Læs mere

DATABASE - MIN MUSIKSAMLING

DATABASE - MIN MUSIKSAMLING DATABASE - MIN MUSIKSAMLING I dette forløb skulle vi lære om databaser, som bruger sproget SQL. SQL står for Structured Query Language. Det bruges til at vise og manipulere data, gemt i en database. I

Læs mere

Erfaringer med CPR-replikering

Erfaringer med CPR-replikering Erfaringer med CPR-replikering Dette dokument beskriver en række overvejelser vi har gjort os i forbindelse med at vi har udviklet en Proof of Concept (PoC) af en CPR-replikeringstjeneste for KOMBIT. CPRs

Læs mere

Databasesystemer. IT Universitetet i København 7. juni 2005

Databasesystemer. IT Universitetet i København 7. juni 2005 Databasesystemer IT Universitetet i København 7. juni 2005 Eksamenssættet består af 5 opgaver med 13 spørgsmål, fordelt på 6 sider (inklusiv denne side). Vægten af hver opgave er angivet. Du har 4 timer

Læs mere

Introduktion til SQL

Introduktion til SQL Introduktion til SQL Introduktion til SQL 1. udgave, 1. oplag 2013 Copyright 2013 Libris Media A/S Forfatter: Bobby Henningsen Forlagsredaktion: Peter Wiwe og Louise Peulicke Larsen Omslag: Louise Peulicke

Læs mere

Anvisning i aflevering af bitemporale data

Anvisning i aflevering af bitemporale data UDKAST udgivet juni 2019 Anvisning i aflevering af bitemporale data Baggrund Aflevering af data fra it-systemer til et offentligt arkiv er baseret på aflevering af en arkiveringsversion i en relationel

Læs mere

CCS Formål Produktblad December 2015

CCS Formål Produktblad December 2015 CCS Formål Produktblad December 2015 Kolofon 2015-12-14

Læs mere

Afsnittet er temmelig teoretisk. Er du mere til det praktiske, går du blot til det næste afsnit.

Afsnittet er temmelig teoretisk. Er du mere til det praktiske, går du blot til det næste afsnit. Afsnittet er temmelig teoretisk. Er du mere til det praktiske, går du blot til det næste afsnit. XML (eng. extensible Markup Language) XML er en måde at strukturere data på i tekstform. På samme måde som

Læs mere

Jørgen Koch. och. Access. Normalisering m.v.

Jørgen Koch. och. Access. Normalisering m.v. Jørgen Koch och Access 2003 2003 for alle Normalisering m.v. Access 2003 for alle 1. udgave, 1. oplag 2004 Copyright 2004 Forlaget Libris Forfatter: Jørgen Koch Forlagsredaktion: Kirsten Bæk DTP: Jørgen

Læs mere

Data Warehouse Knowledge is Power - Sir Francis Bacon -

Data Warehouse Knowledge is Power - Sir Francis Bacon - Data Warehouse 4. sem. datamatiker uddannelse Tietgen Skolen Odense Skrevet af Troels Markvard Andersen (DM08228) Knowledge is Power - Sir Francis Bacon - Troels Markvard Andersen Side 1 af 8 Forord /

Læs mere

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel: Denne guide er oprindeligt udgivet på Eksperten.dk SQL og ASP En artikel omkring simpel SQL og hvordan disse opbygges, udformes og udføres, sådan at man kan få et brugbart resultat i ASP. Dette ligefra

Læs mere

Analyse af værket What We Will

Analyse af værket What We Will 1 Analyse af værket What We Will af John Cayley Digital Æstetisk - Analyse What We Will af John Cayley Analyse af værket What We Will 17. MARTS 2011 PERNILLE GRAND ÅRSKORTNUMMER 20105480 ANTAL ANSLAG 9.131

Læs mere

Objektorientering og databaser

Objektorientering og databaser Databaser, efterår 2002 Objektorientering og databaser Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674

Læs mere

Manuskriptvejledning De Studerendes Pris

Manuskriptvejledning De Studerendes Pris Fremsendelse af artikel Artikler skrevet på baggrund af bachelorprojekter, der er afleveret og bestået i det annoncerede tidsrum, kan deltage i konkurrencen om De Studerendes Pris. Det er kun muligt at

Læs mere

DANMARKS TEKNISKE UNIVERSITET

DANMARKS TEKNISKE UNIVERSITET DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler

Læs mere

Introduktion til programmering

Introduktion til programmering Introduktion til programmering Databaser Uge 37 Computer Science, kap 9. Hugh Darwen: what a database really is, G. Riccardi: Princples of database systems, kap 2., kompendium. Plan Oprette jer på IMV

Læs mere

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse. Mysqli Webintegrator Når vi arbejder med server-side scripting ( i vort tilfælde PHP), har vi ofte behov for at kunne tilgå data, som vi opbevarer i en database. Det kan f.eks. dreje sig om nyhederne i

Læs mere

Generelle bemærkninger om statusrapporter

Generelle bemærkninger om statusrapporter Generelle bemærkninger om statusrapporter Opdateret den 19. december 2011 Indhold Alle grenspecialer... 2 Diverse:... 2 Litteratur:... 2 Praksis /Klinisk:... 3 Specielt for Onkologi... 4 Specielt for Radiologi...

Læs mere

Casper Fabricius http://casperfabricius.com. ActiveRecord. O/RM i Ruby on Rails

Casper Fabricius http://casperfabricius.com. ActiveRecord. O/RM i Ruby on Rails Casper Fabricius http://casperfabricius.com ActiveRecord O/RM i Ruby on Rails Casper Fabricius Freelance webudvikler - casperfabricius.com 9 års erfaring med webudvikling 6 år med ASP/ASP.NET/C# 3 år med

Læs mere

Om at løse problemer En opgave-workshop Beregnelighed og kompleksitet

Om at løse problemer En opgave-workshop Beregnelighed og kompleksitet Om at løse problemer En opgave-workshop Beregnelighed og kompleksitet Hans Hüttel 27. oktober 2004 Mathematics, you see, is not a spectator sport. To understand mathematics means to be able to do mathematics.

Læs mere

Introduktion til projekter

Introduktion til projekter Introduktion til projekter v. 1.0.3 Introduktion I dette materiale ser vi overordnet på, hvad projekter egentlig er, hvordan de er skruet sammen og hvilke begreber, som relaterer sig til projekter. Vi

Læs mere

Forberedelse. Forberedelse. Forberedelse

Forberedelse. Forberedelse. Forberedelse Formidlingsopgave AT er i høj grad en formidlingsopgave. I mange tilfælde vil du vide mere om emnet end din lærer og din censor. Det betyder at du skal formidle den viden som du er kommet i besiddelse

Læs mere

SWC eksamens-spørgsmål. Oversigt

SWC eksamens-spørgsmål. Oversigt SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition

Læs mere

poedit og oversættelse af sprogfiler

poedit og oversættelse af sprogfiler poedit og oversættelse af sprogfiler af Georg S. Adamsen WordPress.Blogos.dk 2009 http://kortlink.dk/wordpressblogosdk/6g38 1 af 11 14-04-2009 14:55 Jeg får af og til spørgsmål om, hvordan man bruger poedit,

Læs mere

BAAN IVc. Brugervejledning til BAAN Data Navigator

BAAN IVc. Brugervejledning til BAAN Data Navigator BAAN IVc Brugervejledning til BAAN Data Navigator En udgivelse af: Baan Development B.V. P.O.Box 143 3770 AC Barneveld Holland Trykt i Holland Baan Development B.V. 1997. Alle rettigheder forbeholdes.

Læs mere

Hvad er et tal? Dan Saattrup Nielsen

Hvad er et tal? Dan Saattrup Nielsen 12 Det filosofiske hjørne Hvad er et tal? Dan Saattrup Nielsen Det virker måske som et spøjst spørgsmål, men ved nærmere eftertanke virker det som om, at alle vores definitioner af tal refererer til andre

Læs mere

Andengradsligninger. Frank Nasser. 12. april 2011

Andengradsligninger. Frank Nasser. 12. april 2011 Andengradsligninger Frank Nasser 12. april 2011 c 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk: Dette

Læs mere

Mapping-tabeller. Indholdsfortegnelse. 1. Forord. 1. Forord. 2. Tabellernes opbygning og indhold. 3. Formålet med tabellerne

Mapping-tabeller. Indholdsfortegnelse. 1. Forord. 1. Forord. 2. Tabellernes opbygning og indhold. 3. Formålet med tabellerne Mapping-tabeller Indholdsfortegnelse 1. Forord 2. Tabellernes opbygning og indhold 3. Formålet med tabellerne 4. Tabellernes anvendelsesområde 5. Afsluttende bemærkninger 1. Forord Lige fra dengang de

Læs mere

Hvad er Objekter - Programmering

Hvad er Objekter - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som

Læs mere

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester). Mål

Læs mere

Formål & Mål. Ingeniør- og naturvidenskabelig. Metodelære. Kursusgang 1 Målsætning. Kursusindhold. Introduktion til Metodelære. Indhold Kursusgang 1

Formål & Mål. Ingeniør- og naturvidenskabelig. Metodelære. Kursusgang 1 Målsætning. Kursusindhold. Introduktion til Metodelære. Indhold Kursusgang 1 Ingeniør- og naturvidenskabelig metodelære Dette kursusmateriale er udviklet af: Jesper H. Larsen Institut for Produktion Aalborg Universitet Kursusholder: Lars Peter Jensen Formål & Mål Formål: At støtte

Læs mere

Praktisk Ledelse. Børsen Forum A/S, 2010. Børsen Forum A/S Møntergade 19, DK 1140 København K Telefon 70 127 129, www.blh.dk

Praktisk Ledelse. Børsen Forum A/S, 2010. Børsen Forum A/S Møntergade 19, DK 1140 København K Telefon 70 127 129, www.blh.dk Praktisk Ledelse Uddrag af artikel trykt i Praktisk Ledelse. Gengivelse af dette uddrag eller dele heraf er ikke tilladt ifølge dansk lov om ophavsret. Børsen Ledelseshåndbøger er Danmarks største og stærkeste

Læs mere

Import af rekursivt (parent-child) hierarki i Palo

Import af rekursivt (parent-child) hierarki i Palo Import af rekursivt (parent-child) hierarki i Palo Dette dokument beskriver hvordan et simpelt rekursivt (parent-child) hierarki kan importeres ind i Palo på forskellige måder via SQL og samtidig bibeholde

Læs mere

ER-modellen. Databaser, efterår Troels Andreasen. Efterår 2002

ER-modellen. Databaser, efterår Troels Andreasen. Efterår 2002 Databaser, efterår 2002 ER-modellen Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk

Læs mere

PRÆSENTATION AF ER-DIAGRAMMER OG NORMALISERING

PRÆSENTATION AF ER-DIAGRAMMER OG NORMALISERING PRÆSENTATION AF ER-DIAGRAMMER OG NORMALISERING KIRSTINE ROSENBECK GØEG Tema Titel Materiale 1 IS i sundhedssektoren Patientdatas anvendelighed Lynge et al. 2 Registrering af patientdata Berg. Kap. 2 Waiting

Læs mere

Identifikation af planer der ikke findes i PlansystemDK vha. datasættet... 9

Identifikation af planer der ikke findes i PlansystemDK vha. datasættet... 9 Vejledning i brug af Tingbogsudtrækket Version 1.0 af 1. juli 2009 Indhold Indledning... 1 Planer i Tingbogen... 2 Planer i PlansystemDK... 3 Sammenhæng mellem Tingbogen og PlansystemDK... 3 Datastruktur...

Læs mere

Sammenligning af Objekt-orienteret databaser og Relationelle databaser.

Sammenligning af Objekt-orienteret databaser og Relationelle databaser. Sammenligning af Objekt-orienteret databaser og Relationelle databaser. Af Louis Fleron Databaser OODBMS og RDBMS PBS10101 Louis Fleron Side 2 Af 11 Indholdsfortegnelse 1. Forord....3 2. Hvad er et OODBMS?...3

Læs mere

Dansk-historieopgaven (DHO) skrivevejledning

Dansk-historieopgaven (DHO) skrivevejledning Dansk-historieopgaven (DHO) skrivevejledning Indhold Formalia, opsætning og indhold... Faser i opgaveskrivningen... Første fase: Idéfasen... Anden fase: Indsamlingsfasen... Tredje fase: Læse- og bearbejdningsfasen...

Læs mere

Daglig brug af JitBesked 2.0

Daglig brug af JitBesked 2.0 Daglig brug af JitBesked 2.0 Indholdsfortegnelse Oprettelse af personer (modtagere)...3 Afsendelse af besked...4 Valg af flere modtagere...5 Valg af flere personer der ligger i rækkefølge...5 Valg af flere

Læs mere

Hvad er BIM? Fra et bygningsdelsperspektiv

Hvad er BIM? Fra et bygningsdelsperspektiv Hvad er BIM? Fra et bygningsdelsperspektiv BIM nævnes overalt i byggebranchen, men hvad er det? BIM er blevet et meget bredt begreb og omfatter mange aspekter af byggebranchen. Én af delene drejer sig

Læs mere

Databasesystemer, forår 2006 IT Universitetet i København. Forelæsning 3: E-R modellering. 16. februar 2006. Forelæser: Rasmus Pagh

Databasesystemer, forår 2006 IT Universitetet i København. Forelæsning 3: E-R modellering. 16. februar 2006. Forelæser: Rasmus Pagh Databasesystemer, forår 2006 IT Universitetet i København Forelæsning 3: E-R modellering 16. februar 2006 Forelæser: Rasmus Pagh Forelæsningen i dag Datamodellering hvad, hvorfor og hvordan? Business rules

Læs mere

IT opgave. Informationsteknologi B. Vejleder: Karl. Navn: Devran Kücükyildiz. Klasse: 2,4

IT opgave. Informationsteknologi B. Vejleder: Karl. Navn: Devran Kücükyildiz. Klasse: 2,4 IT opgave Informationsteknologi B Vejleder: Karl Navn: Devran Kücükyildiz Klasse: 2,4 Dato:03-03-2009 1 Indholdsfortegnelse 1. Indledning... 3 2. Planlægning... 3 Kommunikationsplanlægning... 3 Problemstillingen...

Læs mere

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 4: Mere om E-R modellering. 24. februar 2005. Forelæser: Rasmus Pagh

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 4: Mere om E-R modellering. 24. februar 2005. Forelæser: Rasmus Pagh Databasesystemer, forår 2005 IT Universitetet i København Forelæsning 4: Mere om E-R modellering 24. februar 2005 Forelæser: Rasmus Pagh Forelæsningen i dag Fortsættelse af E-R model: Attributtyper, identifiers,

Læs mere

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø EG Data Inform Byggebasen WCF og webservices Jens Karsø 10 Indholdsfortegnelse Byggebasen Services indledning... 2 Målsætning... 2 Valg af teknologier... 3 Kommunikationsmodel for byggebasen... 3 Services.byggebasen.dk...

Læs mere

WWW. Forslag til integreret digitalt værk ved Det Informationsvidenskabelige Akademi på KUA3 Udarbejdet af Jacob Nielsen 2013

WWW. Forslag til integreret digitalt værk ved Det Informationsvidenskabelige Akademi på KUA3 Udarbejdet af Jacob Nielsen 2013 WWW Forslag til integreret digitalt værk ved Det Informationsvidenskabelige Akademi på KUA3 Udarbejdet af Jacob Nielsen 2013 Arbejdstitel: "Internet på hovedet" Projektet tager udgangspunkt i det formelt

Læs mere

Aktivitet: Du kan skrive et specialeoplæg ud fra punkterne nedenfor. Skriv så meget du kan (10)

Aktivitet: Du kan skrive et specialeoplæg ud fra punkterne nedenfor. Skriv så meget du kan (10) Aktivitet: Du kan skrive et specialeoplæg ud fra punkterne nedenfor. Skriv så meget du kan (10) 1. Det er et problem at... (udgangspunktet, igangsætteren ). 2. Det er især et problem for... (hvem angår

Læs mere

Guide til lektielæsning

Guide til lektielæsning Guide til lektielæsning Gefions lærere har udarbejdet denne guide om lektielæsning. Den henvender sig til alle Gefions elever og er relevant for alle fag. Faglig læsning (=lektielæsning) 5- trinsmodellen

Læs mere

Akademisk tænkning en introduktion

Akademisk tænkning en introduktion Akademisk tænkning en introduktion v. Pia Borlund Agenda: Hvad er akademisk tænkning? Skriftlig formidling og formelle krav (jf. Studieordningen) De kritiske spørgsmål Gode råd m.m. 1 Hvad er akademisk

Læs mere

Videregående Programmering for Diplom-E Noter

Videregående Programmering for Diplom-E Noter Videregående Programmering for Diplom-E Noter 1. Uddelegering Ét af de væsentlige principper i objektorienteret programmering er, at enhver klasse selv skal kunne "klare ærterne". Enhver klasse skal altså

Læs mere

Kryptologi og RSA. Jonas Lindstrøm Jensen (jonas@imf.au.dk)

Kryptologi og RSA. Jonas Lindstrøm Jensen (jonas@imf.au.dk) Kryptologi og RSA Jonas Lindstrøm Jensen (jonas@imf.au.dk) 1 Introduktion Der har formodentlig eksisteret kryptologi lige så længe, som vi har haft et sprog. Ønsket om at kunne sende beskeder, som uvedkommende

Læs mere

NYT. Få en ny Formular i PakIT Helt gratis

NYT. Få en ny Formular i PakIT Helt gratis NYT April 2004 Tema: Gør det selv: Ny formular Total- er sponsor for en ny webside for amatørkunstnere. Se side 3 Få en ny Formular i PakIT Helt gratis Mangler du en formular til en transportør som US-Mail,

Læs mere

MANUAL. Præsentation af Temperaturloggerdata. Version 2.0

MANUAL. Præsentation af Temperaturloggerdata. Version 2.0 MANUAL Præsentation af Temperaturloggerdata Version 2.0 Indholdsfortegnelse FORORD...3 INTRODUKTION...3 KRAV OG FORUDSÆTNINGER...3 INSTALLATION...4 OPSÆTNING...8 PROGRAMOVERBLIK...10 PROGRAMKØRSEL...11

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

Objects First with Java A Practical Introduction Using BlueJ

Objects First with Java A Practical Introduction Using BlueJ Objects First with Java A Practical Introduction Using BlueJ En introduktion til objektorienteret programmering for begyndere ud fra et software engineering aspekt Om at programmere i Java, ikke om værktøjet

Læs mere

DATABASE Projekt 1-3. semester

DATABASE Projekt 1-3. semester DATABASE Projekt 1-3. semester Gruppe 2- CLmul-a12e Projekt URL http://www.lucasperch.dk/projekter/database.pdf Gruppe 2 Lucas Perch-Nielsen cph-lp14@cphbusiness.dk http://lucasperch.dk/skole.php Niclas

Læs mere

Umiddelbare kommentarer til Finansrådets ledelseskodeks af 22/

Umiddelbare kommentarer til Finansrådets ledelseskodeks af 22/ Downloaded from vbn.aau.dk on: januar 29, 2019 Aalborg Universitet Umiddelbare kommentarer til Finansrådets ledelseskodeks af 22/11-2013 Krull, Lars Publication date: 2013 Document Version Tidlig version

Læs mere

Brugervejledning til databrowseren

Brugervejledning til databrowseren Brugervejledning til databrowseren Indholdsfortegnelse Indledning...2 Hvordan tilgås browseren og api et...2 Databrowseren...2 Søgning...2 Visning...4 Features i listevisningen...4 Detaljeret visning...5

Læs mere

Informationssøgning. Målret din søgning skriv bedre opgaver få en bedre karakter. Henning Lorentzen Pædagogisk IT-koordinator

Informationssøgning. Målret din søgning skriv bedre opgaver få en bedre karakter. Henning Lorentzen Pædagogisk IT-koordinator Informationssøgning Målret din søgning skriv bedre opgaver få en bedre karakter Henning Lorentzen Pædagogisk IT-koordinator Hvordan kommer jeg i gang Sæt tid af, 5 minutter er ikke nok Begynd med det du

Læs mere

IT Support Guide. Installation af netværksprinter (direkte IP print)

IT Support Guide. Installation af netværksprinter (direkte IP print) IT Support Guide Denne guide er hentet på www.spelling.dk Program: Microsoft Windows Vista Program sprog version: ENG (US) Guide emne: Installation af netværksprinter (direkte IP print) Publikationsnr.:

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 10. april, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

NBS Organisatoriske begreber

NBS Organisatoriske begreber NBS Organisatoriske begreber Rapport vedrørende udarbejdelse af begrebssystem og definitioner Version 1.0/18. december 2012 Kolofon: Titel NBS - Rapport vedrørende udarbejdelse af begrebssystem og definitioner

Læs mere

Hvad er BIM? Whitepaper. 3dbyggeri danmark. Fra et bygningsdels-perspektiv

Hvad er BIM? Whitepaper. 3dbyggeri danmark. Fra et bygningsdels-perspektiv Hvad er BIM? Fra et bygningsdels-perspektiv BIM nævnes overalt i byggebranchen, men hvad er det? BIM er blevet et meget bredt begreb og omfatter mange aspekter af byggebranchen. Én af delene drejer sig

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

TIL OPGAVESKRIVEREN. Før selve opgaveugen. Formål med opgaven.

TIL OPGAVESKRIVEREN. Før selve opgaveugen. Formål med opgaven. TIL OPGAVESKRIVEREN Formål med opgaven. Den større skriftlige opgave i biologi er en eksamensopgave, hvor der gives en selvstændig karakter, som tæller med på eksamensbeviset på lige fod med de øvrige

Læs mere

Dorthes Bog Centrum har ca forskellige bøger (bibliografiske enheder), som alle skal være søgbare fra prototypen.

Dorthes Bog Centrum har ca forskellige bøger (bibliografiske enheder), som alle skal være søgbare fra prototypen. Afleveringsopgave Hermed afleveringsopgaven for kurset. Besvarelsen, der gerne må udfærdiges i grupper, er del af den mundtlige eksamen (som i øvrigt er individuel). Problemet Efter flere møder med firmaet

Læs mere

Roskilde Tekniske Gymnasium. Eksamensprojekt. Programmering C niveau

Roskilde Tekniske Gymnasium. Eksamensprojekt. Programmering C niveau Roskilde Tekniske Gymnasium Eksamensprojekt Programmering C niveau Andreas Sode 09-05-2014 Indhold Eksamensprojekt Programmering C niveau... 2 Forord... 2 Indledning... 2 Problemformulering... 2 Krav til

Læs mere

Hvor er mine runde hjørner?

Hvor er mine runde hjørner? Hvor er mine runde hjørner? Ofte møder vi fortvivlelse blandt kunder, når de ser deres nye flotte site i deres browser og indser, at det ser anderledes ud, i forhold til det design, de godkendte i starten

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 20. april, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer

Læs mere

Formålet med undervisning fra mediateket er at styrke elevernes informationskompetence, således de bliver i stand til:

Formålet med undervisning fra mediateket er at styrke elevernes informationskompetence, således de bliver i stand til: Informationssøgning Mediateket ved Herningsholm Erhvervsskole er et fagbibliotek for skolens elever og undervisere. Her fungerer mediateket ikke blot som bogdepot, men er et levende sted, som er med til

Læs mere

1. Release- og Versioneringsstrategi for Serviceplatformen og services

1. Release- og Versioneringsstrategi for Serviceplatformen og services 7. januar 2014. Serviceplatformen 1. Release- og Versioneringsstrategi for Serviceplatformen og services Nærværende notat beskriver Serviceplatformens Release- og Versioneringsstrategier. Formålet med

Læs mere

Datatekniker med programmering som speciale

Datatekniker med programmering som speciale Datatekniker med programmering som speciale H2 H1 varer ti uger bestående af ti uddannelsesspecifikke fag. Indhold På H2 er der fokus på at integrere Objektorienteret Programmering i dine programmer. Fagene

Læs mere

Moduler i Standard ML

Moduler i Standard ML Moduler i Standard ML Hans Hüttel December 2001 I løbet af datalogikurset har vi haft glæde af en hel række forskellige standardmoduler som f.eks. Math, Int, Real og String. Disse moduler kan, har vi set,

Læs mere

Manuskriptvejledning pr. 2015 Bachelorprisen

Manuskriptvejledning pr. 2015 Bachelorprisen Manuskriptvejledning pr. 2015 Bachelorprisen Fremsendelse af artikel Artikler skrevet på baggrund af bachelorprojekter, der er afleveret og bestået på det annoncerede tidspunkt, kan deltage i konkurrencen

Læs mere

Syv veje til kærligheden

Syv veje til kærligheden Syv veje til kærligheden Pouline Middleton 1. udgave, 1. oplag 2014 Fiction Works Aps Omslagsfoto: Fotograf Steen Larsen ISBN 9788799662999 Alle rettigheder forbeholdes. Enhver form for kommerciel gengivelse

Læs mere

Skriftlig eksamen i. Databaser. Vinter 2002/2003. Vejledende løsninger

Skriftlig eksamen i. Databaser. Vinter 2002/2003. Vejledende løsninger Skriftlig eksamen i Databaser Vinter 2002/2003 Vejledende løsninger Dette eksamenssæt består af 5 nummererede sider (incl. denne). Der er 5 opgaver, som ved bedømmelsen tillægges følgende vægte: Opgave

Læs mere

Gem dine dokumenter i BON s Content Management System (CMS)

Gem dine dokumenter i BON s Content Management System (CMS) 24. august 2007 Gem dine dokumenter i BON s Content Management System (CMS) INDHOLDSFORTEGNELSE 1. Indledning... 2 2. Se indholdet i dit Content Management System... 3 3. Tilgå dokumenterne i My Content

Læs mere

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer.

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer. Merging og Hashing Tilgang til data To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer. API for sekventiel tilgang (API =

Læs mere

Hvem er målgruppen for disse dokumenter. Hvilke forudsætninger skal læseren have?

Hvem er målgruppen for disse dokumenter. Hvilke forudsætninger skal læseren have? Kommenteringsskema 15. januar 2018 Sekretariatet for Initiativ 8.1. BEMÆRK: Alle indsendte kommentarer offentliggøres (på arkitektur.digst.dk). Såfremt du ikke ønsker en kommentar offentliggjort, bedes

Læs mere

Database design for begyndere

Database design for begyndere Denne guide er oprindeligt udgivet på Eksperten.dk Database design for begyndere Denne artikel beskriver hvordan man kommer fra ide til database design. Den stopper inden normal former. Den forudsætter

Læs mere