Inhoudsopgave Inleiding... 2

Maat: px
Weergave met pagina beginnen:

Download "Inhoudsopgave Inleiding... 2"

Transcriptie

1 R2 D 2 Va n X M L n a a r D a ta b a s e R o b e rt B o u m a S c rip tie In fo rm a tie k u n d e R ug D e c e m b e r

2 Vo o rw o o rd!" #$ % &% (' *) ),+.-0/ / -1 $ (2&345 6$ 7 82 /' 9 : ( / / ;-< ( =-> $?2@A): B *C/1DE+FG%/ /.2@$): # 74 % > $ 8 Ḧ (/' 2 % ( 7 =IJ 9 K )(' / 3LMḦ M% (' / / ( (IN %#% (& L *BOP( Q / P % K-0 RḦ 8 S/ / T-1 P (2$$) U' IN %V 7 Q0 =& L 8 ( / = IN/WḦ / (' 8 X QEBY* IJ > ' Q4 8 ZḦ / #Ḧ / 4L 82#/ 82 >.2& 34 8/ 8 <H* / [ 2& 7 8 7L +*H % 8 : (' -</ / VA+\ -(-< ( ' =' / / ( 7Q4 ' 8 <Ḧ / ' ] * ( // 8 2# 82<)E % $=2^/ -= =' L -< (? (2&345 6$ ( B 8 8 MḦ _)^`5% 7 6 8'ab OP=I L (/ / %/ -= 2^ (Q / L *c. d e e2b-( P =)4!24 fn-= /.V = 4 / &2 IN/WḦ % 8 :' =2@A): 8 A % K-1 W% 3= A TQ ;Ḧ (2$; ) 4 = #/ ghe 8/ L?IN/ /. / * 8'>IN/2:C/P) ) 5 =Ih 6 1M i>j 7Q / E& = -0 /.& 7-> Q ' kq : 8/ /%2@] 7 3& 2 l. "2@3 % ;Ḧ <Ḧ / ( (2&3; 6$ fr Ih 6 7j 2@] _Q4 7 / #H!2@3L ) ' 0-= /L "/ 82%IN 7 8 &.IG 6 8 ( L$ * #Ḧ /$) )E5 6 $=/ -> P <HE5 ( (2@$): B 8 ' %? B 8 7Q ]' */ ' 7: QQ4 / / ( & =& 2 ( 7:/ Ḧ G]/ / AmV/L% (IN ( :2#'/ / T $L (IJ/ MḦ. 4'1 (IN 8 (% 7Q4 8 H: ( 82< /( (2@P) * 8 npo;q R o b e rt B o u m a G ro n in g e n, i

3 Inhoudsopgave Inhoudsopgave Inleiding Waarom XML 2 RDB XML DTD Relationele Databases Het relationele datamodel Normaalvormen RDBMS Waarom XML 2 RDB Applicatie XML 2 RDB: de theorie De DTD versimpelen Conclusie Prototype boomstructuur schema's ontwerpen Conclusie Prototype relationele schema's ontwerpen Sleutels vinden en normalisatie Conversie XML-data naar RDB XML 2 RDB: een nieuw algoritme Algoritme Versimpelen van de DTD Ontwerpen van de prototype boomstructuur en relationele schema's Vinden van sleutels Positionering Ontwerp en beschrijving R2D Informatie Programma User interface XML 2 RDB: R2D Van DTD naar databasestructuur Algemeen De DTD versimpelen Prototype boomstructuur en relationele schema's ontwerpen Sleutels vinden en positionering Van XML naar database data De webinterface Testen en aandachtsgebieden Conclusies Samenvatting Beperkingen Verder onderzoek Literatuurlijst

4 1. Inleiding Tegenwoordig wordt er steeds meer gebruik gemaakt van XML. In deze markuptaal kan data opgeslagen worden die normaliter opgeslagen wordt in een database, maar ook data die minder geschikt zijn om in databases opgeslagen te worden. Hierbij valt te denken aan data die minder gestructureerd zijn door bijvoorbeeld het ontbreken van gegevens. Mede daarom is het tegenwoordig wellicht geen slecht idee om over te gaan op het opslaan van gegevens in het XML-formaat. Voor het zoeken in gegevens is het daarentegen gemakkelijker om gebruik te maken van databases. Omdat deze al lange(re) tijd bestaan, zijn de zoekmogelijkheden hierin ondertussen goed uitgekristalliseerd. Bij XMLdocumenten is dat nog niet helemaal het geval en vaak grijpt men dan toch weer terug op meer conventionele zoekmethoden. Daarnaast ondersteunen deze bestaande pakketten ook steeds vaker de mogelijkheid om data te exporteren naar XML-bestanden. Aan de andere kant ontstaan er ook steeds meer applicaties die de functionaliteit van bestaande relationele database management systemen (RDBMS) overnemen en deze rechtstreeks toepassen op XML-bestanden. Hierdoor hoeft niet meer een vertaalslag gemaakt te worden van XML naar relationele database (RDB) en andersom. Bij het lezen over deze onderwerpen, ontstaat bij mij een aantal vragen. Allereerst is er de vraag wat handiger is: bestanden in XML-formaat laten staan of omzetten in een RDB-systeem. En direct er achteraan: als je een XMLdocument wil omzetten naar een RDB-systeem, op welke manier kan dit dan het beste? Is het überhaupt mogelijk om een XML-document goed over te zetten naar een RDB-systeem? Op deze vragen wil ik proberen een antwoord te geven in deze scriptie. Hiervoor heb ik een onderzoeksvraag opgesteld die tweeledig is: Waarom zou je een XML-document omzetten naar een RDB-systeem en niet als XML-document bewaren èn hoe kan een XML-document omgezet worden in een RDB-systeem? 2

5 De reden waarom ik juist hiernaar wil kijken, heeft te maken met mijn interesse in dit gebied en de ervaring die ik de afgelopen jaren heb opgedaan met het werken met databases. Omdat er al veel bestaande applicaties zijn die werken met RDB is het interessant om te kijken of deze applicaties dusdanig aan te passen zijn dat ze ook kunnen werken met XML. Dit zou een betere oplossing zijn dan deze applicaties opnieuw te ontwerpen en te implementeren. Daarnaast is men gewend aan de huidige applicaties en het in gebruik nemen van nieuwe applicaties brengt een nieuw leertraject met zich mee. Het omzetten van XML naar een RDB kan echter problemen opleveren. Een RDB verwacht dat de data die erin opgeslagen wordt goed gestructureerd is. XML kan echter minder gestructureerd zijn. Voor het omzetten wil ik gebruik maken van de DTD (Document Type Description). Ik wil een algoritme ontwerpen dat deze DTD uitleest en een structuur oplevert. Met behulp van de gevonden structuur kan vervolgens de RDB-structuur opgezet worden. In deze RDB-structuur kan tenslotte de XML-data opgeslagen worden. Ik wil nagaan in hoeverre dit problemen oplevert en, nog interessanter, in hoeverre deze eventuele problemen opgelost kunnen worden. Dit is een erg ruim probleem. Om een aantal problemen dat ik tegen kan komen het hoofd te bieden stel ik dan ook grenzen aan de soort data die ik wil gebruiken. Allereerst wil ik mij vooral richten op data met archieffunctie. Dat wil zeggen data die niet vaak gewijzigd hoeven te worden maar enkel geraadpleegd of, waarvan in ieder geval de structuur niet veelvuldig aangepast hoeft te worden. De reden hiervoor is dat het ontwerpen van een goede onderhoudsmodule al een klus op zich is en dit wil ik dan ook niet opnemen in deze scriptie. Daarnaast wil ik me vooral bezighouden met datagerichte XML-documenten en niet met documentgerichte XML-documenten. Datagericht wil zeggen dat de data goed gestructureerd zijn en weinig gemengd voorkomt (geen regels in de DTD als (element #PCDATA)) en waarin volgorde minder van belang is. Voorbeelden hiervan zijn bijvoorbeeld beurskoersen en adresboeken. In zekere zin dus data die al een zeker mate van RDB-eigenschappen in zich hebben. Documentgerichte XML heeft als kenmerken dat de structuur minder strak is, dat er wel veel gemengde data in voorkomen en waarin volgorde vaak wel van duidelijk belang is. Hierbij valt bijvoorbeeld te denken aan artikelen, toneelstukken of boeken in 3

6 XML-formaat. Ik richt mij dus vooral op de structuur van de data en minder op de inhoud. Om deze vragen te beantwoorden, is het nuttig om te werken met een praktijkvoorbeeld. Hiertoe wil ik een applicatie bouwen. Deze applicatie zal gebruikt kunnen worden om XML-documenten om te zetten naar RDB. Daarnaast zal hierin ook gepoogd worden om in zekere mate een onderhoudsmodule op te nemen, voor het onderhoud van de data. Deze module zal een zogenaamde webapplicatie worden en zal gebouwd worden in PHP en MySQL. De applicatie zelf wil ik in Perl ontwerpen. 4

7 2. Waarom XML 2 RDB In dit hoofdstuk wil ik antwoord geven op het eerste, en kleinste deel van mijn onderzoeksvraag, namelijk waarom zou je een XML-document omzetten naar een RDB-systeem en niet als XML-document bewaren. Om dit te kunnen uitleggen, is er begrip nodig van XML en relationele database (RDB)-systemen. Eerst zullen deze twee zaken dan ook worden uitgelegd en in het derde gedeelte van dit hoofdstuk wordt nader ingegaan op de onderzoeksvraag. 2.1 XML XML is ontworpen door het W3C 1 en is bedoeld voor de elektronische uitwisseling van machineleesbare data, in tegenstelling tot HTML dat bedoeld is om documenten voor mensen leesbaar te maken op het internet. XML is een subset van SGML en is op een drietal punten krachtiger dan HTML (ook een subset van SGML)[SUC98]: 1. De gebruiker kan zelf nieuwe tags definiëren. 2. Documentstructuren kunnen genest worden tot ieder gewenst niveau. 3. Elk XML-document kan een verwijzing naar een Document Type Description (DTD) bevatten. In deze DTD staat de grammatica voor dat document beschreven. Deze kan dan gebruikt worden bij validatie van de structuur van het XML-document. In het algemeen bestaat XML uit elementen die begrensd worden door zogenaamde tags (open- en sluittags) die genest kunnen worden. Hieronder staat een voorbeeld van XML data: <doc> <titel id="o1" reference="o2">semistructured data and XML</titel> <auteur> <voornaam>dan</voornaam> <achternaam>suciu</achternaam> </auteur> </doc> Hierbij zijn de tags de stukjes tussen de 'vishaken' (< en >), waarbij de sluittags voorafgegaan worden door een slash (/). Een voorbeeld van een opentag is 1 5

8 <auteur> en van een sluittag </auteur>. Een element is het geheel van matchende tags en de informatie die ertussen staat, bijvoorbeeld: <firstname>dan</firstname>. XML heeft veel weg van semistructured data 2. Zo kan de structuur van een XMLdocument onregelmatig zijn, zelfs onbekend en van tijd tot tijd veranderen zonder dat daar melding van gedaan wordt. Daar staat tegenover dat zonder veel moeite allerlei soorten data omgezet kunnen worden naar een XML-document. Dit heeft als voordeel dat het aantrekkelijk wordt om gegevens te publiceren in een XML-document. De gegevens zijn namelijk vervolgens eenvoudig te verspreiden naar andere XML-applicaties op het internet. XML is bedoeld om informatie te structureren. Het zegt niets over de presentatie van data. Hiervoor zijn stylesheet-talen ontwikkeld. Voor de presentatie op internet is er de stylesheet-taal CSS (Cascading Style Sheets). Deze taal geeft aan hoe elementen getoond moeten worden. Voor de presentatie in andere omgevingen dan het internet (zoals MS Word- of PDF-documenten) kan gebruik gemaakt worden van XSLT. In deze scriptie wordt verder niet ingegaan op deze stylesheet-talen. Wat wel belangrijk is, is de strikte scheiding in XML tussen structuur en presentatie DTD XML heeft zijn eigen schema, namelijk de Document Type Description (DTD). DTD s beschrijven welke tags gebruikt mogen worden en hoe ze genest moeten worden. Daarnaast leggen DTD's ook de volgorde vast waarin elementen moeten staan en hoeveel er mogen voorkomen. Een DTD kan gebruikt worden voor meerdere XML-documenten. In een DTD zijn een aantal onderdelen te onderscheiden. <!DOCTYPE naam []> - met deze declaratie wordt aangegeven wat het zogenaamde topelement is in het XML-document. Dit topelement mag slechts één keer voorkomen in een XML-document, vergelijkbaar met de <html> tag in een HTML-document. Om een DTD in een XML-document aan te roepen zijn er twee mogelijkheden. Allereerst kan de DTD in het XML-document zelf gedefinieerd worden. In dat geval staan tussen de vierkante haken ([]) de 2 Voor uitleg over semistructured data verwijs ik naar mijn literatuurstudie, te vinden op 6

9 declaraties van de elementen. De tweede manier is dat de declaraties in een los bestand worden opgeslagen. In dat geval wordt in de DOCTYPE aangegeven waar dat bestand zich bevindt (<!DOCTYPE naam SYSTEM bestand.dtd >). <!ELEMENT elnaam ()> - met deze declaratie worden de verschillende elementen gedefinieerd die voor mogen komen in een XML-document. Hier staat elnaam voor de naam van het element. In een XML-document wordt dit dus weergegeven door <elnaam>waarde</elnaam>. Tussen de haakjes komen de elementen die genest kunnen voorkomen onder dit element. Een voorbeeld is <!element persoon (naam,leeftijd, *)>. Hier staat dat onder het element persoon een element naam, leeftijd en nul of meer elementen mogen voorkomen (in die volgorde). De ster operator (*) betekent hier nul of meer keer. Er zijn een aantal van deze operatoren. Naast el* zijn er ook nog el+ (één of meer keer voorkomen), el? (nul of één keer voorkomen), el el2 (alternatieven: òf el, òf el2) en el, el2 (achterelkaar voorkomen: eerst el, dan el2). Het is ook mogelijk dat tussen een bepaald element alleen een string komt te staan. In dit geval komt er #PCDATA te staan op de plaats van de ronde haakjes (<!ELEMENT naam #PCDATA>). Natuurlijk is een combinatie van elementen en #PCDATA ook mogelijk. <!ATTLIST elnaam attnaam type #status> - op deze wijze worden attributen gedeclareerd. elnaam is de naam van het element waar het attribuut aan toegewezen wordt. attnaam is vervolgens de naam van het attribuut. Het type informatie dat hierin neergezet mag worden, wordt gedefinieerd door type. De belangrijkste mogelijkheden zijn de volgende: o CDATA zogenaamde character data, oftewel een willekeurige string. o Lijst een lijst met mogelijke waarden, op de volgende manier weergegeven: (fruit groente aardappelen). o ENTITY hier mag een entity worden ingevuld die elders in de DTD gedefinieerd is. o ID dit geeft de mogelijkheid om een element een ID mee te geven. Deze ID moet uniek zijn voor het hele XML-document. o IDREF met dit type kan een verwijzing naar een ID aangegeven worden. Er wordt verwezen naar een element elders in het XMLdocument dat een attribuut van het type ID heeft. Binnen een ATTLIST kunnen meerdere attributen per element gedefinieerd worden. Voor elk attribuut is ook aan te geven of deze verplicht zijn of niet. Daarvoor zijn voor #status een aantal waarden in te vullen, namelijk 7

10 #REQUIRED als het attribuut verplicht een waarde moet hebben, #IMPLIED als het attribuut niet persé een waarde hoeft te hebben en #FIXED als het attribuut een vaste waarde heeft (dit wordt dan als laatste argument meegegeven aan de declaratie). Een voorbeeld: <!ATTLIST person sekse (man vrouw) #REQUIRED opmerkingen CDATA #IMPLIED id ID #REQUIRED familie IDREF #IMPLIED type CDATA #FIXED mens > <!ENTITY %naam vervanging > - deze declaraties kunnen gebruikt worden om bepaalde (groepen) karakters te vervangen door anderen. Er zijn vier soorten (waarvan de eerste twee de belangrijkste zijn): o general entities deze worden voornamelijk gebruikt om bepaalde karakters te laten zien die gereserveerd zijn, zoals < en > of vreemde karakters. Deze worden op de volgende manier gedefinieerd: <!ENTITY copyright &#xa9 >. In een XML-document wordt dit aangeroepen met &copyright; en dit tovert het copyright teken ( ) op het scherm. o parameter entities deze entities kunnen alleen gebruikt worden in de DTD zelf en kunnen gebruikt worden om bepaalde veel gebruikte strings te vervangen voor korte varianten. Een voorbeeld is <!ENTITY %txt (#PCDATA) >. Later kan bij een element declaratie dan deze korte variant gebruikt worden: <!ELEMENT naam %txt;>. o externe entities deze kunnen gebruikt worden om te verwijzen naar externe documenten: <!ENTITY adressen SYSTEM adressen.xml >. In een XML-document kan dit bestand in één keer geïmporteerd worden door te verwijzen naar &adressen;. o unparsed entities hiermee kan verwezen worden naar bepaalde data die geen XML-inhoud hebben. Voorbeelden zijn plaatjes of video s. De definitie werkt op dezelfde manier als bij externe entities. DTD s hebben ook een aantal tekortkomingen. Deze worden genoemd in [ABI00]: Alleen het datatype PCDATA kan gebruikt worden. Indien het mogelijk moet zijn om bijvoorbeeld een leeftijd op te slaan, dan moet er teruggegrepen worden op een definitie van een range. Het type van een tag is globaal. Indien er onderscheid gemaakt moet worden tussen de lengte van een film en de lengte van een persoon (met behulp van een tag <lengte>), dan zijn er twee mogelijkheden: er moeten 8

11 twee tags gedefinieerd worden (een tag <persoonslengte> en een tag <filmlengte>), of er moet gewerkt worden met namespaces. Er worden twee namespaces aangemaakt (een persoon namespace en een film namespace) en vervolgens twee tags persoon:lengte en film:lengte. Voor elke namespace moet er dan wel een aparte DTD komen. Het type van IDREFS is niet te beperken. In de praktijk kan het handig zijn om bepaalde tags alleen met bepaalde identifiers te verbinden, maar dit is helaas niet mogelijk. In een DTD kunnen een aantal operatoren voorkomen aan te geven hoe vaak en in welke volgorde elementen voor kunnen komen. Hieronder staan ze opgesomd en uitgelegd:? operator de operator betekent dat het element 0 of 1 keer voor mag komen * operator het element mag 0 of meer keer voorkomen + operator deze operator betekent dat het element minimaal 1 keer moet voorkomen., operator met deze operator wordt de volgorde bepaald. Elk element moet precies in deze volgorde voorkomen operator ook deze operator regelt de volgorde. Hierbij gaat het om keuze. Het ene of het andere element mag voorkomen Nu XML uitgebreid besproken is, is het tijd om een blik te werpen op relationele databases. 2.2 Relationele Databases Het relationele datamodel Het relationele model geeft aan hoe een relationele database in elkaar steekt en wat de eisen en grenzen zijn van zo n database. Het model stamt uit 1970 en is ontwikkeld door E.F. Codd en later verfijnd door C.J. Date in [DAT90]. Dit model is gebaseerd op drie wiskundige terreinen, namelijk de verzamelingenleer, de relationele calculus en de algebra (uit [GRO01]). Het model bestaat uit drie delen: De tabellen Een querytaal 9

12 Een serie integriteitregels De tabellen bestaan uit rijen en kolommen. Een kolom heeft een bepaalde reeks met toegestane waarden. Een waarde moet bijvoorbeeld een string zijn of een integer. Een veld in een kolom bestaat uit precies één waarde. Een rij in een tabel wordt samengesteld uit één of meer kolommen en wordt uniek geïdentificeerd door een primary key. Dit betekent dus dat er geen rijen in een tabel mogen voorkomen die gelijk zijn. Kandidaat-sleutels zijn één of meer kolommen die een rij eventueel als uniek zouden kunnen identificeren. Als er meerdere kandidaat-sleutels zijn, kan er gekozen worden welke gebruikt wordt voor de primary key. Als een kolom of een serie van kolommen overeenkomt met de primary key van een andere tabel, wordt dit een foreign key genoemd. Een combinatie van nul of meer rijen en één of meer kolommen worden ook wel entiteittypen genoemd. Voor een tabel geld de voorwaarde dat alle rijen bestaan uit precies dezelfde set kolommen. Een bijkomend voordeel is dat de structuur van de tabellen in een database gerepresenteerd kunnen worden in tabelvorm. Zo kunnen de tabellen gemakkelijk aangepast worden met dezelfde querytaal, die ook gebruikt wordt om de data te manipuleren. De querytaal die bij relationele databases gebruikt wordt, wordt SQL genoemd. Met deze taal is het mogelijk tabellen aan te maken, hier informatie aan toe te voegen, te verwijderen en op te vragen. Dit alles is gebaseerd op relationele algebra. Veel voorkomende bewerkingen zijn SELECT, DELETE en INSERT. Meestal worden deze bewerkingen uitgevoerd via een RDBMS, een Relationeel DataBase Management Systeem, waarover later meer. Het laatste onderdeel bestaat uit een tweetal integriteitregels, volgens [GRO01]: 1. De entiteits integriteitregel, deze stelt dat geen enkel onderdeel van de primary key lege waarden (NULL waarden) mag bevatten. 2. De referentiële integriteitregel, deze regel stelt dat er voor elke foreign key in een tabel een overeenkomende primary key moet voorkomen in een andere tabel in de database. Deze twee regels zorgen ervoor dat er in de tabellen geen inconsistentie ontstaat. Dat wil zeggen dat er geen interne tegenstrijdigheden zijn in de database en dat 10

13 er dus geen verwijzingen zijn naar niet-bestaande waarden. Dit zou problemen oproepen bij het uitvoeren van queries. Een ander probleem bij de opslag en bewerking van gegevens in een database is redundantie. Dit betekent dat gegevens dubbel worden opgeslagen. Een voorbeeld is een tabel auteurs die een veld uitgever hebben. Deze uitgever kan beter opgeslagen worden in een aparte tabel om te voorkomen dat bij bewerken van dit veld meerdere records aangepast moeten worden waardoor de kans op fouten groter wordt Normaalvormen Om redundantie zo veel mogelijk te voorkomen is het belangrijk om er voor te zorgen dat de tabellen in de derde normaal vorm (3NV) staan. Het feit dat er een 3NV is, betekent ook dat er een eerste en tweede normaal vorm zijn (respectievelijk 1NV en 2NV). Deze normaalvormen zijn ontwikkeld door Codd en zijn bedoeld om redundantie zoveel mogelijk tegen te gaan. Ik zal hier in het kort deze normaalvormen bespreken. De informatie over de verschillende normaalvormen komt uit [BLA88] en [DAT90]. Voor de normaalvormen gelden de volgende definities (uit [BLA88]): Een relatie R is in de eerste normaalvorm (1NV) dan en slechts dan als alle onderliggende domeinen uitsluitend atomaire waarden bevatten - dit wil zeggen dat de afzonderlijke velden van een tabel (hier domeinen genoemd) niet mogen bestaan uit samengestelde delen. Het moeten simpele waarden zijn (meestal string of integer). Een relatie R is in de tweede normaalvorm (2NV) dan en slechts dan als de relatie in 1NV is en elk niet-sleutel attribuut volledig van de primaire sleutel afhangt met een niet-sleutel attribuut worden de velden bedoeld die niet in aanmerking komen voor de primaire sleutel. Een relatie is in de derde normaalvorm (3NV) dan en slechts dan als de relatie in 2NV is en ieder niet-sleutel attribuut niet transitief afhankelijk is van de primaire sleutel net als bij de andere twee stappen zorgt deze normaal vorm voor het terugdringen van redundantie van data en waarmee voorkomen wordt dat er inconsistentie ontstaat bij het toevoegen, verwijderen en wijzigen van data in de database. 11

14 Er bestaan ook nog een Boyce/Codd normaal vorm (BCNV) en een vierde en vijfde normaalvorm (4NV en 5NV), maar deze zijn voor de hier gebruikte structuren niet nodig en zullen dan ook niet verder besproken worden. Meer over deze laatste normaalvormen is terug te vinden in [DAT90] RDBMS Een RDBMS, oftewel een Relationeel DataBase Management Systeem, is een applicatie waarmee databases kunnen worden beheerd. Met zo n systeem kan zorg gedragen worden voor opslag, beheer en het bevragen van data. Het is te beschouwen als een tussenlaag tussen de gebruiker en de fysieke opslag van de data. Een RDBMS zorgt ervoor, of maakt het in ieder geval makkelijker, dat de data die in een database opgeslagen moeten worden, voldoen aan de eerder gestelde eisen. In het kort zijn er in ieder geval een achttal eisen waar een RDBMS aan moet voldoen. Deze zijn terug te vinden in [GRO01]: 1. Gebruikers moeten in staat zijn data op te slaan, op te roepen en aan te passen. 2. De gebruiker moet de mogelijkheid geboden worden om een catalogus in te zien waarin data-eenheden beschreven worden. Hierbij is een catalogus een verzameling van gerelateerde bestanden. 3. Het moet mogelijk zijn dat meerdere gebruikers tegelijk aan een database werken zonder dat hierbij afbreuk wordt gedaan aan de integriteit van de database. 4. Mocht een database beschadigd raken, dan moet het RDBMS de mogelijkheid tot herstel bieden. 5. Het moet mogelijk zijn de toegang van gebruikers tot databases te reguleren. 6. De eerder genoemde integriteitregels moeten gewaarborgd zijn. 7. Een RDBMS moet dataonafhankelijk zijn. Als de structuur van een database of van tabellen in die database verandert, hoeft de databewerking niet veranderd te worden. 8. Er moeten een aantal hulpprogramma s zijn. Hierbij valt te denken aan rapportgeneratoren en query-by-example programma s (programma s die het bevragen van de informatie versimpelen). Bij het bouwen van mijn applicatie gebruik ik MySQL. Dit databasepakket voldoet niet aan alle genoemde eisen, vooral op punten 4 en 8. Dit is echter niet erg omdat ik in mijn applicatie die functionaliteit niet nodig heb. Bij het bouwen van 12

15 een volledige applicatie voor gebruikers is het aan te raden om wel aan alle bovenstaande eisen te voldoen. Nu zowel XML als RDB systemen beschreven zijn, is het tijd om te gaan kijken waarom het handig kan zijn XML om te zetten naar RDB systemen. 2.3 Waarom XML 2 RDB De huidige generatie internet browsers en web search engines kunnen prima omgaan met zogenaamde document operations. Hieronder wordt onder andere het zoeken in tekst en het presenteren van de tekst in de juiste opmaak verstaan. Om de mogelijkheden in XML echter volledig te benutten, zijn naast deze document operations, ook database operations nodig. Onder deze laatste operaties vallen data extractie (het verkrijgen van data uit een document), data integratie (het samenvoegen van data in een document), data opslag en data transformatie (het omvormen van data in een nieuwe structuur) zoals vermeld in [SUC98]. Relationele databases zijn goed in het uitvoeren deze database operations, in tegenstelling tot de huidige generatie internet browsers en search engines. De querytaal SQL is er helemaal op ingesteld dit soort bewerkingen simpel en efficiënt uit te voeren. De lange ontwikkeling van de relationele databases heeft het volgende gebracht ([GRO01]): Opslagtechnieken en query-talen die efficiënt toegang geven tot grote hoeveelheden zeer gestructureerde data. Datamodellen en methoden voor het structureren van data. Methoden voor het onderhouden van de consistentie en integriteit van data. Dit zou dus een hele goede reden zijn om XML om te zetten naar een relationele database. Het omzetten zou, als het eenrichtingsverkeer zou betreffen (alleen van XML naar RDB), zelfs betrekkelijk eenvoudig zijn. Zo eenvoudig ligt het echter niet. Het grote nadeel van relationele databases is dat deze vaak niet al te goed zijn in de document operations. Voor dit gedeelte zouden XML en vooral de viewers van XML (de web browsers e.d) erg geschikt zijn, maar deze browsers kunnen niet overweg met data zoals die opgeslagen wordt door database systemen. Er zijn wel querytalen voor XML, maar deze 13

16 werken minder goed dan SQL 3. Vooral op het gebied van structuur (gebruik van de DTD) en het toevoegen van verschillende datatypes zijn deze talen niet goed. Hierdoor is het zeker voor de meer ingewikkelde data interessant om verwerkt te worden via een database. Dit geld ook voor data die op zich niet heel ingewikkeld zijn, maar wel vergaande bewerking moeten kunnen ondergaan. Daarnaast is het XML-formaat veel makkelijker in het uitwisselen van data tussen systemen. XML is platform- en programmaonafhankelijk in tegenstelling tot de bestandsformaten van de meeste RDB systemen. Elk bedrijf dat een dergelijk RDB systeem ontwerpt, gebruikt vaak een eigen bestandsformaat en de verschillende systemen kunnen vaak niet met elkaars bestandsformaten overweg. De beste oplossing zou zijn om een RDB systeem te hebben dat als bestandsformaat de XML indeling gebruikt. Het goede nieuws is dat deze er al zijn. Het slechte nieuws is dat deze pakketten vaak erg duur zijn en van de gebruikers vaak een herscholingscursus vergen om met weer een nieuw pakket te leren werken. Voor kleinere bedrijven en instellingen is het vaak kostbaar om een dergelijke omschakeling te maken. Daarnaast zijn het vaak deze kleinere bedrijven en instellingen die net geïnvesteerd hebben in een prachtig, eventueel custom-made, RDB systeem omdat ze gehoord hadden dat een dergelijk systeem de toekomst had! Voor deze bedrijven en instellingen zou het een uitkomst kunnen zijn om aan hun bestaande systemen een extra component te koppelen die XML-bestanden omzet naar RDB-data. Dit is voordeliger dan het aanschaffen en leren omgaan met een nieuw software pakket. Voorwaarde is wel dat de conversie twee kanten op werkt. Data moeten ook teruggezet kunnen worden naar XML voor presentatie doeleinden. Daarnaast ben ik persoonlijk erg nieuwsgierig of dit in de praktijk te doen is of dat het meer problemen dan oplossingen oplevert. Om deze redenen lijkt het mij dus interessant een applicatie te bouwen die het voor elkaar krijgt XML-documenten om te zetten naar een RDB systeem. Maar zelfs als de redenen buiten beschouwing laten, is het nog steeds een interessant theoretisch probleem dat tot een oplossing gebracht moet kunnen worden op een zo n correct mogelijke manier. Een dergelijk RDB systeem zou in staat moeten zijn de voordelen van XML en de voordelen van een RDB systeem samen te voegen en op die manier een aantal van hun nadelen teniet te doen. 3 Meer informatie over deze querytalen is de vinden in mijn literatuurstudie op 14

17 2.4 Applicatie Met mijn applicatie wil ik mij vooral richten op de conversie kant van het verhaal. Het uitlezen van een database in een XML-document laat ik over aan één ieder die zich daartoe geroepen voelt, maar hiernaar is al eens gekeken door A. de Groot in [GRO01]. Bij het omzetten mag echter niet vergeten worden dat de data ook weer terug geconverteerd zouden moeten kunnen worden. Daarom is het belangrijk dat een applicatie aan een aantal eisen voldoet. Op de eerste plaats moet het RDB systeem een goede weergave geven van het XML-document. Aan de oorspronkelijke structuur en inhoud mag geen afbreuk gedaan worden. Daarnaast moet de volgorde in het XML-document gewaarborgd blijven bij conversie. In RDB systemen is volgorde niet van belang, maar bij XML wel. Bij export van de database gegevens naar XML-documenten moet dit dus op de juiste manier terug geplaatst worden. Om er zeker van te zijn dat deze export goed slaagt, is het van belang de DTD ook op te slaan in de database. Deze kan dan geraadpleegd worden bij het omzetten van RDB naar XML. Onder deze voorwaarden wil ik proberen een dergelijke applicatie te bouwen. Het hart van zo n applicatie wordt gevormd door het algoritme dat de structuur van de database haalt uit de, bij het XML-document behorende, DTD. Hiervoor zijn in het verleden al een aantal algoritmes geschreven. In het volgende hoofdstuk bekijk ik deze algoritmes nader en in hoofdstuk 4 geef ik mijn eigen versie die voldoet aan de door mij gestelde eisen. 15

18 3. XML 2 RDB: de theorie Bij het omzetten van XML-data naar een relationele database (RDB) kan een tweetal stappen onderscheiden worden. De eerste stap betreft het analyseren van de structuur van de XML-data. Vaak kan hier gebruik gemaakt worden van de DTD. Dit verdient zelfs de voorkeur. Als de XML structuur eenmaal bekend is, kan de RDB opgebouwd worden. Deze stap is onder te verdelen in de onderstaande delen die ook terug te vinden zijn in [MEN01]: 1. De DTD versimpelen - Een DTD kan behoorlijk ingewikkeld in elkaar steken. Om het geheel begrijpelijker en overzichtelijker te maken, is het wenselijk de DTD te versimpelen. Natuurlijk moet dit dusdanig gebeuren dat er zo min mogelijk afbreuk gedaan wordt aan de oorspronkelijke bedoelingen van de DTD. 2. Prototype boomstructuur schema's ontwerpen - Om een overzicht te krijgen van de samenhang tussen de verschillende elementen en attributen in de DTD, is het handig deze relaties 'uit te tekenen' in een boomstructuur. Vanuit een dergelijke boomstructuur is het maken van een relationeel schema makkelijker. 3. Prototype relationele schema's ontwerpen - Aan de hand van ontstane boomstructu(u)r(en) is het mogelijk een voorlopig relationeel schema te fabriceren. Dit schema dient als basis voor de te ontwerpen tabellen in een RDB. 4. Sleutels vinden en normalisatie - Als het prototype van het relationele schema af is, wordt het tijd te bepalen wat de primaire sleutels worden van de tabellen in de database. Als deze sleutels bekend zijn, kan het eventueel ook nodig zijn de ontstane schema's voor tabellen te normaliseren, bijvoorbeeld om redundantie in de data te voorkomen. De tweede stap betreft het opdelen van de XML-data in het document in de nieuw aangemaakte database. Dit is verhoudingsgewijs de minst ingewikkelde stap. In de hier besproken algoritmes wordt hier dan ook weinig aandacht aan besteed. In dit hoofdstuk wordt gekeken naar vier verschillende algoritmes en hoe deze omgaan met de genoemde punten: het Global Schema Extraction (GSE) algoritme, het DTD-splitting Schema Extraction (DSE) algoritme, het Inlining Schema (IS) algoritme en het Non-DTD (ND) algoritme. De eerste twee algoritmes worden besproken in [MEN01]. De auteurs proberen in dit artikel een 16

19 geautomatiseerde manier te vinden om XML in een relationele database op te slaan. De reden om dit te willen, ligt in het feit dat technieken voor relationele databases al goed ontwikkeld zijn en het zou mooi zijn als deze technieken ook toegepast zouden kunnen worden op XML-data. Het derde algoritme wordt besproken in [SHA99]. In dit artikel wordt vooral gekeken in hoeverre queries kunnen worden toegepast op XML-data. Ook hier ligt de reden in het feit dat er voor relationele databases al zeer veel technieken ontwikkeld zijn en het zou nuttig zijn als deze technieken ook werken in het verband van XML-data. Het laatste algoritme wordt besproken in [FLO99]. De auteurs wilden er achter komen in hoeverre simpele en voor de hand liggende oplossingen voldeden, voordat er nagedacht ging worden over meer ontwikkelde methoden. 3.1 De DTD versimpelen Er zijn een aantal manieren om de DTD te versimpelen. Toch is er ook één methode die alle algoritmes toepassen. Dit betreft de entity declarations die gebruikt worden voor verwijzing binnen de DTD. Deze worden verwijderd en vervolgens worden alle declaraties die naar een entity verwijzen vervangen door de DTD componenten die deze entities vertegenwoordigen. Een voorbeeld is: <!ENTITY %txt "(#PCDATA)"> <!ELEMENT boektitel %txt> Dit wordt: <!ELEMENT boektitel (#PCDATA)> Ook worden in de attribute type declaration de waarden voor de CDATA (#IMPLIED, #FIXED, enz.) weggelaten. Hoewel in een database ook restricties worden aangegeven, wordt dit wel duidelijk bij het uitlezen van het XML bestand. Zeker wanneer het systeem voornamelijk gebruikt wordt voor archief functies en er dus weinig tot niets zal veranderen in de data. Als een systeem ook bedoeld is voor het onderhoud van de data zou dit meer problemen opleveren. In een dergelijk geval zou het eventueel wenselijk zijn deze informatie wel te bewaren. Zoals echter aangegeven in de inleiding is het systeem dat ik wil opzetten vooral bedoeld voor archivering doeleinden en daarom is het hier gerechtvaardigd de type declarations weg te laten. De volgende stap is het elimineren van operatoren in de DTD. Hierdoor wordt de DTD geflattened en is de structuur beter te vangen in een database structuur. De 17

20 verschillende algoritmes gaan hier verschillend mee om. Het GSE algoritme is het meest radicaal. Bij de voorgestelde transformaties wordt de DTD het meeste 'plat geslagen'. Het DSE algoritme laat wat meer heel van de structuur en het IS algoritme houdt de meeste operatoren intact en versimpelt voornamelijk de geneste structuren in de DTD. Het ND algoritme tenslotte kent deze transformaties niet. Dit komt omdat dit algoritme niet werkt op een DTD maar rechtstreeks op de XML-data zelf. Hieronder staat een overzicht van de transformaties die de verschillende algoritmes voorstellen. f* --> f f+ --> f f? --> f..., f,..., f,... --> f f f' --> f, f' (f, f') --> f, f' Fig.1: Transformaties bij het GSE algoritme. g* --> g* g+ --> g* g? --> g g g' --> g, g' (g, g') --> g, g' (g,g')* --> g*, g'*..., g,..., g*,... --> g*..., g,..., g,... --> g Fig.2: Transformaties bij het DSE algoritme. h+ --> h* h** --> h* h*? --> h* h?* --> h* h?? --> h? (h, h')* --> h*, h'* (h, h')? --> h?, h'? (h h') --> h?, h'?..., h*,..., h*,... --> h*,......, h*,..., h?,... --> h*,......, h?,..., h*,... --> h*,......, h?,..., h?,... --> h*,......, h,..., h,... --> h*,... Fig.3: Transformaties bij het IS algoritme. Deze transformaties zijn onder te verdelen in drie groepen: simplification transformations - deze transformaties zorgen ervoor dat het aantal operatoren per element bij de elementen terug gebracht worden. Hierdoor wordt het geheel een stuk overzichtelijker en dus simpeler. De transformaties die linksboven staan in de drie figuren, zijn hiervan een voorbeeld. flattening transformations - deze transformaties zorgen ervoor dat geneste elementen omgezet worden naar een platte variant. De transformaties die hierop betrekking hebben, zijn de transformaties die rechts boven staan. grouping transformations - deze transformaties zorgen ervoor dat groepen subelementen met dezelfde naam in een element vervangen worden door een subelement met die naam en, eventueel, een * operator. Deze operatoren zijn in de fig. 1 tot en met 3 linksonder terug te vinden. 18

21 Ik zal nu de simplification transformaties bespreken. Bij het GSE algoritme worden alle operatoren simpelweg verwijderd. Van alle elementen wordt dus uitgegaan dat ze precies 1 keer voorkomen. Veel informatie gaat op deze manier verloren en het is lastig op deze manier nog 1:M relaties te onderkennen. Het DSE algoritme verwijdert de? operator en vervangt de + operator voor de * operator. Het IS algoritme tenslotte bewaard meer informatie omdat de? operator niet verwijderd wordt. De volgende set transformaties zijn de flattening transformaties. Bij alledrie de algoritmes worden de geneste gedeelten achterelkaar gezet. De operator wordt vervangen door een, operator. Hiermee verdwijnt wel de informatie over volgorde binnen de elementen, maar, in tegenstelling tot de situatie binnen een DTD of XML-document, maakt dit niet uit in de database. In een database kan volgorde niet zonder hulpmiddelen worden weergegeven en hieraan wordt dan ook bij het uitlezen van de data aandacht besteed. De DSE en IS algoritmes hebben als extra regel dat eventuele operatoren om de geneste elementen toegekend worden aan zijn individuele elementen, iets dat in principe hetzelfde betekent, maar iets anders opgeschreven is. Omdat het IS algoritme de? operator bewaard, wordt een genest statement met de operator opgesplitst in zijn delen met een? operator, gescheiden door een, operator. De laatste groep transformaties zijn de grouping transformaties. De transformaties zorgen ervoor dat dezelfde elementen die meerdere keren voorkomen in een statement bij elkaar geplaatst worden. Het GSE algoritme heeft ook in deze stap geen operatoren en het DSE algoritme zorgt ervoor dat elementen zonder operatoren ook vervangen worden door één keer dat element zonder een operator. Dit is niet correct. Het feit dat een element meerdere keren voorkomt, zegt al dat er een + operator geplaatst zou moeten worden, of op z'n minst een * operator. Het IS algoritme vervangt elementen wel door één keer dat element met een * operator, iets wat in het licht van de net aangevoerde reden ook als meer juist beschouwd kan worden. Welke set transformaties moet nu gebruikt worden voor het versimpelen van de DTD. De transformaties van het GSE algoritme voldoen niet. Alle operatoren worden bij dit algoritme weggegooid en zo is er teveel informatie verlies. Het IS algoritme bewaard weer teveel informatie door ook gebruik te maken van de? operator. Dus ook dit algoritme voldoet niet Conclusie 19

22 Met dit commentaar in het achterhoofd stel ik de volgende transformaties voor als goed alternatief voor de besproken algoritmes. Voor de relaties in een database hoeft alleen het onderscheid gemaakt worden tussen maximaal 1 keer voorkomen of meer dan 1 keer voorkomen: simplification flattening grouping e --> e e? --> e e* --> e* e+ --> e* e** --> e* e f --> e,f (e,f) --> e,f (e,f)* --> e*,f* Fig. 4: transformaties voor versimpeling van de DTD...,e,...,e,... --> e*...,e,...,e*,... --> e*...,e*,...,e*,... --> e* De meeste transformaties zijn overgenomen uit het DSE algoritme op tweetal uitzonderingen na. Als een operator dubbel voorkomt, wordt deze vervangen door een enkel voorkomen. En de grouping transformaties uit het IS algoritme zijn gebruikt, omdat die van het DSE algoritme niet klopten. Een versimpelde DTD zou er dan vervolgens als volgt uit kunnen zien (uit [MEN01]): <!ELEMENT book (booktitle, price, author, authority*)> <!ELEMENT authority (authname, country)> <!ELEMENT authname #PCDATA> <!ELEMENT country #PCDATA> <!ELEMENT booktitle #PCDATA> <!ELEMENT price #PCDATA> <!ELEMENT monograph (title, author, editor)> <!ELEMENT editor (monograph*)> <!ATTLIST editor name CDATA> <!ELEMENT author (name, address)> <!ATTLIST author id ID> <!ELEMENT name (firstname, lastname)> <!ELEMENT firstname #PCDATA> <!ELEMENT lastname #PCDATA> <!ELEMENT address #PCDATA> Fig. 5: een versimpelde DTD met behulp van de DSE transformaties 3.2 Prototype boomstructuur schema's ontwerpen De volgende stap is het maken van het prototype boomstructuur schema. Deze bomen representeren de structuur van de versimpelde DTD. Hierbij zijn de nodes in de boom de elementen en attributen uit de DTD. Deze schema's worden 20

23 gemaakt aan de hand van een aantal regels, dat genoemd worden in [MEN01]. Voor de GSE en DSE algoritmen komen deze regels voor een deel overeen: 1. Alleen een element kan een root worden - Attributen bestaan alleen bij gratie van het element waar ze toe behoren. Om deze reden kan alleen een element en nooit een attribuut een root zijn. 2. Als er een element is dat niet voorkomt als een subelement van enig ander element in de DTD, dan wordt dit element een root voor een schema van een prototype tree. Het GSE algoritme heeft vervolgens nog één regel: 3. Als er geen enkel element in de DTD is dat voldoet aan 2, dan wordt er een element gekozen om als root te dienen In dit geval is er recursie in de DTD. Op zo'n moment moet er een willekeurig element gekozen worden om de dreigende oneindige cirkel te breken. Met behulp van deze regel wordt een root element gekozen uit de DTD. Vervolgens wordt er een boom gemaakt van de verhoudingen tussen de verschillende elementen. Eventuele attributen van een element kunnen in een boomstructuur gezien worden als subelementen van dat element. In het geval een element alleen #PCDATA bevat, wordt dit de waarde van de node die van dit element gemaakt wordt. Als een element zowel #PCDATA als subelementen bevat, wordt dit in de bijbehorende node aangegeven met een #. In het geval van recursie wordt er een foreign key aan de node toegekend. Dit wordt in het label aangegeven door er.a aan toe te voegen. Vervolgens wordt er gestopt met zoeken naar subelementen van dit element om te voorkomen in een oneindige cirkel te verzeilen. De boomstructuren voor de eerder besproken DTD komen er dan als volgt uit te zien: 21

24 Fig. 6: boomstructuren van de versimpelde DTD van het GSE algoritme Het DSE algoritme heeft dezelfde eerste twee regels maar heeft nog 3 andere regels: 3. Als een niet-#pcdata element in meer dan één element declaratie voorkomt, wordt het een root voor een boomstructuur - Stel dat element C zowel subelement is van A en van B. In dit geval kan aangenomen worden dat er een M:1 relatie bestaat tussen A, B en C. Hierdoor is het nuttig om een extra boomstructuur aan te maken met C als de root. Hetzelfde principe gaat op voor M:N relaties. 4. Als er in de DTD een niet-#pcdata element B met een * ALLEEN voorkomt in een niet-root element A, dan wordt B een root element van een nieuwe boomstructuur, als B NIET het enige subelement van A is - De reden hiervoor is dat er een kans bestaat op een 1:M of zelfs M:N relatie tussen A en B. Als er meerdere subelementen zijn in A hebben deze elementen (mits ze geen * hebben) een 1:1 relatie. Om deze reden moet er voor B een nieuwe boomstructuur komen met B als root 5. Als er recursie optreedt in de DTD wordt één van de elementen in de recursie gekozen als root. Bij root elementen die door de 2e, 3e en 5e regel bepaald zijn, wordt de boomstructuur opgebouwd net als bij het eerder besproken GSE algoritme. De uitzondering hierbij is dat een root element dat gevonden is met de 3e regel niet alleen een nieuwe boomstructuur krijgt, maar ook als nieuwe node wordt toegevoegd aan de huidige boomstructuur omdat er een M:1 relatie te verwachten is tussen de parent van dit nieuwe root element en het element zelf. Het valt 22

25 bijvoorbeeld te verwachten dat er meerdere boeken geschreven zijn door een enkele auteur en het is dus logisch om de auteur op te nemen als verwijzende sleutel in de relatie van een boek. Als er echter een root element gevonden wordt met de 4e regel, dan wordt deze niet als node toegevoegd aan de huidige boomstructuur. In dit geval moet de ancestor van dit element gevonden worden en samen met de subelementen van de gevonden root tot een nieuwe boomstructuur gemaakt worden. Dit wordt gedaan omdat er een 1:M relatie verwacht wordt tussen de ancestor en het root element. Een boek kan bijvoorbeeld meerdere authorities hebben. Hier komen vervolgens de volgende schema's uit: Fig. 7: boomstructuren van de versimpelde DTD voor het DSE algoritme Het schema dat voor het IS algoritme gemaakt wordt, gaat niet uit van deze regels. Dit algoritme bouwt voor de hele DTD in één boomstructuur en vervolgens van alle elementen zogenaamde element graphs zoals vermeld in [SHA99]. 23

26 Fig. 8: boomstructuren van de versimpelde DTD voor het IS algoritme Conclusie Het creëren van deze boomstructuren is voor een belangrijk gedeelte de voorbereiding op het genereren van de prototypes van de relationele schema's. Hoe uitgebreider deze stap wordt uitgevoerd, hoe minder werk er te doen is in de volgende stap. Het minste werk verricht het IS algoritme. Bij dit algoritme wordt voor de hele DTD structuur een boomstructuur gemaakt en vervolgens voor ieder element. Hierbij wordt nog niet nagedacht over hoe de tabellen in de RDB er uit zullen komen te zien. Het GSE algoritme gaat al iets specifieker aan de gang. Er wordt voor een deel al nagedacht over de database structuur door al voor één of meer roots te kiezen en deze te gebruiken als beginpunt van een boomstructuur. Het aantal roots geeft al een aardige indicatie van de tabellen die nodig zijn in de database. Het DSE algoritme gaat hierin nog een stapje verder. De regels die dit algoritme hanteert zijn wat uitgebreider en er kunnen op die manier ook meer boomstructuren ontstaan. Hierdoor zou je kunnen stellen dat het relationele schema bij voorbaat al wat meer genormaliseerd wordt. Conclusies over welk algoritme het meest geschikt is voor mijn doeleinden zullen getrokken in het volgende hoofdstuk. 24

27 3.3 Prototype relationele schema's ontwerpen Nadat de boomstructuren ontworpen zijn, kunnen de prototypes van de relationele schema's gecreëerd worden. Het idee hierbij is dat alle elementen en attributen in de versimpelde DTD gezien kunnen worden als attributen in het prototype voor het relationele schema. De verschillende tabellen in dit prototype schema worden gevormd door de paden vanuit de root naar de eindpunten in de eerder gemaakte boomstructuur. Het pad moet altijd eindigen bij een element of attribuut dat #PCDATA of een mengvorm van subelementen en #PCDATA bevatten omdat deze alleen 'echte' data bevatten. De relationele schema's (overgenomen uit [MEN01]) voor het GSE algoritme komen er dan als volgt uit te zien: table:book ( book.booktitle, (A) book.price, (B) book.author.id, (C) book.author.name.firstname, (D) book.author.name.lastname, (E) book.author.address, (F) book.authority.authname, (G) book.authority.country (H) ) table:monograph ( monograph.title, (A) monograph.author.id, (B) monograph.author.name.firstname, (C) monograph.author.name.lastname, (D) monograph.author.address, (E) monograph.editor.name, (F) monograph.editor.monograph.a (G) ) Fig. 9: de relationele schema prototypes voor de boomstructuren in fig. 6 Op deze schema's zijn nog wel een aantal dingen aan te merken. Allereerst de naamgeving. Doordat je als naam voor een attribuut zijn hele pad vanaf de root gebruikt, worden deze lang. Wel wordt ervoor gezorgd dat alle attributen zo een unieke naam hebben, maar het is de vraag in hoeverre dat in de uiteindelijke tabellen nodig is. Een attribuut is dan namelijk uniek te identificeren aan de hand van de tabelnaam in combinatie met de veldnaam. Een ander bezwaar ligt in de misschien te simpele voorstelling. Hierdoor ontstaat onder andere redundantie. De naam van een auteur bijvoorbeeld wordt nu twee keer opgeslagen. Deze simpele voorstelling kan juist ook als een voordeel werken. Het is niet heel erg moeilijk om de structuur van de database en zijn tabellen te doorgronden op deze manier. Nu kijken we hoe dit in zijn werk gaat bij het DSE algoritme. In tegenstelling tot bij het vorige algoritme worden in deze schema's niet de mogelijke sleutels opgenomen (de vet gedrukte attributen in fig. 7). Deze sleutels worden later ingevoegd als de functionele afhankelijkheden en mogelijke sleutels gezocht 25

28 worden. Het schema dat overgenomen is uit [MEN01], komt er nu als volgt uit te zien: table:book(booktitle, price) table:authority(country, authname) table:author(address, id, firstname, lastname) table:monograph(title, name) Fig. 10: de mogelijke sleutels voor de boomstructuren in fig. 7 Aangezien er in dit schema geen gelijke namen zijn, wordt de naam niet bepaald door het pad vanuit de root. Hierdoor is het geheel goed overzichtelijk. Een nadeel is dat er een aantal velden verdwenen is uit het schema. Deze elementen vormen de sleutels en worden in de volgende stap wel weer ingevoegd, maar de inzichtelijkheid komt dit in deze stap niet ten goede. Het volgende algoritme dat besproken wordt is het IS algoritme. Dit algoritme volgt een andere koers dan de vorige twee algoritmen bij het opstellen van de prototype relationele schema's. Voor het genereren van een voorlopig relationeel schema zijn er een drietal technieken in dit algoritme: Basic Inlining Techniek Shared Inlining Techniek Hybrid Inlining Techniek Basic Bij deze techniek worden relationele schema s gemaakt voor alle elementen omdat het in principe mogelijk is dat een XML-document geroot kan worden bij ieder element in de DTD. Er zijn twee situaties die nog nader bekeken moeten worden, namelijk het geval waarin er 1:M relatie is en recursie. In beide gevallen lost dit algoritme dit op met behulp van een extra, foreign key. Het schema dat overgenomen is uit [SHA01], dat hierdoor ontstaat ziet er als volgt uit: book(bookid, book.title, book.author.name.firstname, book.author.name.lastname, book.author.address, author.authorid) booktitle(booktitle.id, booktitle) article(articleid, article.contactauthor.authorid, article.title) article.author(article.authorid, article.author.parentid, article.author.name.firstname, article.author.name.lastname, article.author.address, article.author.authorid) contactauthor(contactauthorid, contactauthor.authorid) title(titleid, title) monograph(monographid, monograph.parentid, monograph.title, monograph.editor.name, monograph.author.name.firstname, monograph.author.name.lastname, monograph.author.address, 26

Informatie & Databases

Informatie & Databases Informatie Wat is informatie en waaruit het bestaat? Stel op een kaart staat het getal 37 geschreven. Wat kun je dan zeggen van het cijfer 37? Niets bijzonders, toch? Alleen dat het een getal is. Gaat

Nadere informatie

Les 10 : Aanmaken van een database (deel2).

Les 10 : Aanmaken van een database (deel2). Les 10 : Aanmaken van een database (deel2). Wat is een database? Een centrale opslagruimte voor gegevens. Alle informatie wordt centraal opgeslagen en kan door iedereen geraadpleegd worden. Voordelen van

Nadere informatie

Sparse columns in SQL server 2008

Sparse columns in SQL server 2008 Sparse columns in SQL server 2008 Object persistentie eenvoudig gemaakt Bert Dingemans, e-mail : info@dla-os.nl www : http:// 1 Content SPARSE COLUMNS IN SQL SERVER 2008... 1 OBJECT PERSISTENTIE EENVOUDIG

Nadere informatie

Databases - Inleiding

Databases - Inleiding Databases Databases - Inleiding Een database is een verzameling van een aantal gegevens over een bepaald onderwerp: een ledenbestand van een vereniging, een forum, login gegevens. In een database worden

Nadere informatie

Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64

Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64 Klas Veldnaam Datatype Lengte KLASNAAM Short Text 3 Characters JONGENS Number Integer MEISJES Number Integer Lessen Veldnaam Datatype Lengte KLASNAAM Short Text 3 Characters DOCCODE Short Text 3 Characters

Nadere informatie

Workshop 3x. Normaliseren. Normaliseren. Hiëarchische database ODBMS. Relationele database. Workshop 14 oktober 2010. A. Snippe ICT Lyceum 1

Workshop 3x. Normaliseren. Normaliseren. Hiëarchische database ODBMS. Relationele database. Workshop 14 oktober 2010. A. Snippe ICT Lyceum 1 Workshop 3x Analytisch vermogen Huiswerk Lestijden 10:00 12:30 Pauze 10:15 10:30 Deze les: Hiëarchische database Relationele database ODBMS Normaliseer stappen Hiëarchische database Elk record in een database

Nadere informatie

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1 DATAMODEL SQL Middelbare School Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1 INHOUDSOPGAVE 1. Informatiedomein 3 1.1 Informatiedomein 3 1.2 Toepassingen 3 2.

Nadere informatie

XML Introductie.

XML Introductie. XML Introductie joost.vennekens@denayer.wenk.be http://telescript.denayer.wenk.be/~jve extenstible Markup Language Aanbrengen van extra informatie in tekst Betekenis van de tekst beschrijven Uitbreidbaar:

Nadere informatie

Alure - stappenplan Importeren relaties

Alure - stappenplan Importeren relaties Alure - stappenplan Importeren relaties Versie 1.0 06-10-2014 Inhoudsopgave Stap 1. Definiëren lijst... 2 Stap 2. Selecteren velden... 2 Stap 3. Excel bestand... 3 Stap 4. Instellingen - Dossiernummer...

Nadere informatie

Systeemontwikkeling, Hoofdstuk 4, Tabellen maken in MS Access 2010

Systeemontwikkeling, Hoofdstuk 4, Tabellen maken in MS Access 2010 4 Tabellen maken in MS Access In dit hoofdstuk starten we met de bouw van ons informatiesysteem met de belangrijkste bouwstenen: de tabellen. 4.1 Starten met MS Access Als je het programma Microsoft Access

Nadere informatie

Koppeling met een database

Koppeling met een database PHP en MySQL Koppeling met een database 11.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt

Nadere informatie

Correspondentie inzake overnemen of reproductie kunt u richten aan:

Correspondentie inzake overnemen of reproductie kunt u richten aan: Vrijwel alle namen van software- en hardwareproducten die in deze cursus worden genoemd, zijn tegelijkertijd ook handelsmerken en dienen dienovereenkomstig te worden behandeld. Alle rechten voorbehouden.

Nadere informatie

Cursus Analyse voor Web Applicaties 1. Webdesign / Web Programmeren Analyse voor web applicaties SDM methode + Basis UML

Cursus Analyse voor Web Applicaties 1. Webdesign / Web Programmeren Analyse voor web applicaties SDM methode + Basis UML Cursus Analyse voor Web Applicaties 1 Organisatie Opleiding Module Onderwerp Syntra AB Webdesign / Web Programmeren Analyse voor web applicaties SDM methode + Basis UML Analyse op basis van SDM en UML

Nadere informatie

Databases gebruiken. Databases gebruiken

Databases gebruiken. Databases gebruiken Databases gebruiken In deze module wordt van de kandidaat verwacht dat hij een goed begrip heeft van databases en aantoont competent te zijn in het gebruik van een database. Doel van de module De kandidaat:

Nadere informatie

Rapporten. Labels en Rapporten in Atlantis 1. Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports)

Rapporten. Labels en Rapporten in Atlantis 1. Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports) Labels en Rapporten in Atlantis 1 Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports) Rapporten Een rapport is eigenlijk altijd een tekst bestand, die vorm wordt gegeven

Nadere informatie

Les 2 Eenvoudige queries

Les 2 Eenvoudige queries Les 2 Eenvoudige queries XAMP Apache server ( http ) mysql server PHP myadmin IAM SQL oefeningen Database phpmyadmin Import : sql_producten.sql, sql_winkel.sql, sql_festival.sql SAMS SQL in 10 minuten

Nadere informatie

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd. BASISINSTRUCTIES SQL SQL : Structured Query Language is een taal gericht op het ondervragen van een relationele database en die aan veel klassieke databasemanagementsystemen kan worden gekoppeld. SQL is

Nadere informatie

Module V - XML. Stefan Flipkens - Cursus: Internet - Intranet (2004-2005) V 1

Module V - XML. Stefan Flipkens - Cursus: Internet - Intranet (2004-2005) V 1 Module V - XML Extensible Markub Language is een eenvoudig en flexibel text-formaat voor de opslag van data. Het is een meta opmaak (markup) taal voor de beschrijving van gestructureerde gegevens. De stukjes

Nadere informatie

AFO Vergelijken van documenten

AFO Vergelijken van documenten AFO 114 - Vergelijken van documenten 114.1 Inleiding Met behulp van AFO 114 kunt u titelbeschrijvingen vergelijken als voorbereiding op het samenvoegen van gelijke records. Gebruik deze AFO voor: Het opsporen

Nadere informatie

Technisch Ontwerp W e b s i t e W O S I

Technisch Ontwerp W e b s i t e W O S I Technisch Ontwerp W e b s i t e W O S I WOSI Ruud Jungbacker en Michael de Vries - Technisch ontwerp Website Document historie Versie(s) Versie Datum Status Omschrijving / wijzigingen 0.1 20 nov 2008 Concept

Nadere informatie

SQL en XML. XML schema s & DMO. Entiteitsklasse en attribuut. SQL en XML. Datamodellering Schema een ruim begrip (zie Møller, p.

SQL en XML. XML schema s & DMO. Entiteitsklasse en attribuut. SQL en XML. Datamodellering Schema een ruim begrip (zie Møller, p. SQL en XML Datamodellering 2007 1 XML schema s & DMO Schema een ruim begrip (zie Møller, p. 96) DTD schema W3C Schema In dit overzicht: Wat zijn de belangrijke zaken uit XML voor datamodellering? (onvolledig)

Nadere informatie

Zelftest XML Concepten

Zelftest XML Concepten Zelftest XML Concepten Document: n1035test.fm 18/02/2010 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING Om een idee te hebben van wat we verwachten als voorkennis

Nadere informatie

EXAMEN juni 2016 Gegevensbanken

EXAMEN juni 2016 Gegevensbanken EXAMEN juni 2016 Gegevensbanken 8 juni 2016 14.00 u. Het examen bestaat uit twee vragen die schriftelijk uitgewerkt worden. Instructies a. De vragen moeten worden opgelost in de volgorde waarin ze genummerd

Nadere informatie

NHibernate als ORM oplossing

NHibernate als ORM oplossing NHibernate als ORM oplossing Weg met de SQL Queries Wat is ORM? ORM staat in dit geval voor Object Relational Mapping, niet te verwarren met Object Role Modeling. ORM vertaalt een objectmodel naar een

Nadere informatie

Hoofdstuk 17: Grafieken en diagrammen: waarom

Hoofdstuk 17: Grafieken en diagrammen: waarom Hoofdstuk 17: Grafieken en diagrammen: waarom 17.0 Inleiding In Hoofdstuk 16: Grafieken en diagrammen - gids, bekeken we hoe we diagrammen invoegen, bewerken en opmaken. In dit hoofdstuk zullen we de principes

Nadere informatie

Entiteit Zaken en gebeurtenissen waarvan gegevens moeten worden vastgelegd worden een entiteit genoemd: b.v. mens, voorstelling, auto.

Entiteit Zaken en gebeurtenissen waarvan gegevens moeten worden vastgelegd worden een entiteit genoemd: b.v. mens, voorstelling, auto. Relationele databases SqlServer en Oracle zijn relationele client server databases. De verwerking van de opdrachten vindt plaats op de server. Access is een relationele pc database. De verwerking van de

Nadere informatie

Bijlage Inlezen nieuwe tarieven per verzekeraar

Bijlage Inlezen nieuwe tarieven per verzekeraar ! Bijlage inlezen nieuwe tarieven (vanaf 3.2) Bijlage Inlezen nieuwe tarieven per verzekeraar Scipio 3.303 biedt ondersteuning om gebruikers alle tarieven van de verschillende verzekeraars in één keer

Nadere informatie

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous 2006-2007 Inhoudsopgave 1 2 1.1 Programmeertaal PHP5..................... 2 1.2 MySQL database......................... 3 1.3 Adobe Flash...........................

Nadere informatie

AFO 113 Authoritybeheer

AFO 113 Authoritybeheer AFO 113 Authoritybeheer 113.1 Inleiding Authority records die gebruikt worden in de catalogusmodule kunnen via deze AFO beheerd worden. U kunt hier records opzoeken, wijzigen, verwijderen of toevoegen.

Nadere informatie

AAN DE SLAG MET QDAC VOLLEDIG

AAN DE SLAG MET QDAC VOLLEDIG AAN DE SLAG MET QDAC VOLLEDIG INHOUD Het uiterlijk van QDAC... 2 De rode draad... 4 Openen van een Excel bestand... 4 Totaliseren van velden... 6 Sorteren van velden... 7 Analyses: Gaps... 8 Openen van

Nadere informatie

XML & XSLT voor DMO. Datamodellering 2008. Een XML datamodel. conceptueel model logisch / fysiek model: platform afhankelijk

XML & XSLT voor DMO. Datamodellering 2008. Een XML datamodel. conceptueel model logisch / fysiek model: platform afhankelijk XML & XSLT voor DMO Datamodellering 2008 1/24 Een XML datamodel Datamodelleren conceptueel model logisch / fysiek model: platform afhankelijk Logisch-fysieke model voor XML-platform = XML schema, b.v.:

Nadere informatie

Normaliseren voor Dummies

Normaliseren voor Dummies Waarom normaliseren? Normaliseren voor Dummies Gegevensredundantie leidt tot gegevensinconsistentie! Dit cryptisch antwoord betekent het volgende: indien men dezelfde gegevens onnodig herhaaldelijk opslaat

Nadere informatie

Les S-01: De basisbeginselen van SQL

Les S-01: De basisbeginselen van SQL Les S-01: De basisbeginselen van SQL 1.0 Relationele databases en SQL Een database is een bestand waarin gegevens worden opgeslagen in de vorm van tabellen. Zo kan een huisarts met behulp van een database

Nadere informatie

XML. Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Marc de Graauw http://www.marcdegraauw.com/

XML. Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Marc de Graauw http://www.marcdegraauw.com/ XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) De geschiedenis van XML SGML Standard Generalized Markup Language IBM: back to the sixties... Markup: structuur, niet processing HTML:

Nadere informatie

gravita PSUR-C conversie en import van relaties in PSU Relatiebeheer Algemeen

gravita PSUR-C conversie en import van relaties in PSU Relatiebeheer Algemeen gravita PSUR-C conversie en import van relaties in PSU Relatiebeheer Algemeen Het converteren van adres- en andere relatiegegevens in PSU Relatiebeheer, en wat dat betreft elke koppeling tussen verschillende

Nadere informatie

Leerjaar 1/2 ICT-Academie. Niveau 4. Applicatie ontwikkeling

Leerjaar 1/2 ICT-Academie. Niveau 4. Applicatie ontwikkeling Databases SQL Leerjaar 1/2 ICT-Academie Niveau 4 Applicatie ontwikkeling Auteur: R. Meijerink Datum: Januari 2013 0. Inleiding Databases / SQL In deze lessen wordt je geleerd databases te bouwen in SQL-code.

Nadere informatie

Handleiding Importeren/ Exporteren Brouwvisie (& pro)

Handleiding Importeren/ Exporteren Brouwvisie (& pro) Handleiding Importeren/ Exporteren Brouwvisie (& pro) Document : Handleiding Importeren/Exporteren Brouwvisie (& Pro) Versie : 1.0 Datum : Dinsdag 16 April 2019 Auteur : Oscar Moerman 1 Inhoud 1. Inleiding...

Nadere informatie

1. Databanken. Wat is een databank? Verschillende opslagmethodes

1. Databanken. Wat is een databank? Verschillende opslagmethodes 1. Databanken Wat is een databank? Verschillende opslagmethodes Tekst bestanden Spreadsheet Relationele gegevensbanken Relationeel model De gestandaardiseerde opvraagtaal SQL Beheer van een mysql databank

Nadere informatie

TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica

TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica Extra Tentamen Databases 1, 2M400, 8 oktober 2003. Alle uitwerkingen van de opgaven moeten worden ingevuld in de daarvoor bestemde vrije

Nadere informatie

MA!N Rapportages en Analyses

MA!N Rapportages en Analyses MA!N Rapportages en Analyses Auteur Versie CE-iT 1.2 Inhoud 1 Inleiding... 3 2 Microsoft Excel Pivot analyses... 4 2.1 Verbinding met database... 4 2.2 Data analyseren... 5 2.3 Analyses verversen... 6

Nadere informatie

Naam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50%

Naam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50% Naam project Lost And Found Animals Url Lokaal gehost Groepsleden Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50% 1. Beveiliging in de toepassing Naam gebruiker Wachtwoord

Nadere informatie

Trainingsomschrijving ACCESS 97 / 2000 / 2003NL

Trainingsomschrijving ACCESS 97 / 2000 / 2003NL Module 1 Inleiding Module 2 Ontwerpen van tabellen Module 3 Relationele databases en queries Module 4 Formulieren en rapporten Module 5 Geav. formulieren en rapporten Module 6 Macro s en menu s Module

Nadere informatie

Tentamen Informatica 6, 2IJ60,

Tentamen Informatica 6, 2IJ60, Tentamen Informatica 6, 2IJ60, 29-04-2005 Dit tentamen bestaat uit 6 opgaven. Bij elke opgave staat aangegeven hoeveel punten te behalen zijn. Één punt ontvang je cadeau voor de aanwezigheid. Het eindresultaat

Nadere informatie

Serienummers worden met hun ID opgeslagen

Serienummers worden met hun ID opgeslagen Solution Builder SE : BSE101 Versie : 8.0.0.4818 Releasedatum : 10-03-2015 Geschikt voor Synergy Enterprise : v.a. batch 249 ALGEMEEN Serienummers worden met hun ID opgeslagen Serienummers die aan entiteiten

Nadere informatie

Grafen. Indien de uitgraad van ieder punt 1 is, dan bevat de graaf een cykel. Indien de ingraad van ieder punt 1 is, dan bevat de graaf een cykel.

Grafen. Indien de uitgraad van ieder punt 1 is, dan bevat de graaf een cykel. Indien de ingraad van ieder punt 1 is, dan bevat de graaf een cykel. Grafen Grafen Een graaf bestaat uit een verzameling punten (ook wel knopen, of in het engels vertices genoemd) en een verzameling kanten (edges) of pijlen (arcs), waarbij de kanten en pijlen tussen twee

Nadere informatie

De mogelijkheden van XML voor de langdurige bewaring van digitale documenten. DAVID studiedag 30 nov 2000

De mogelijkheden van XML voor de langdurige bewaring van digitale documenten. DAVID studiedag 30 nov 2000 De mogelijkheden van XML voor de langdurige bewaring van digitale documenten DAVID studiedag 30 nov 2000 Prof. Jan Engelen, Steven Depuydt K.U.Leuven - ESAT Onderzoeksgroep Document Architecturen Waarom

Nadere informatie

SQL datadefinitietaal

SQL datadefinitietaal SQL datadefinitietaal We kunnen er het schema van de database mee bepalen: metadata toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: CREATE : toevoegen van metagegevens DROP : verwijderen

Nadere informatie

3. Structuren in de taal

3. Structuren in de taal 3. Structuren in de taal In dit hoofdstuk behandelen we de belangrijkst econtrolestructuren die in de algoritmiek gebruikt worden. Dit zijn o.a. de opeenvolging, selectie en lussen (herhaling). Vóór we

Nadere informatie

In deze appendix wordt bekeken wat er moet gebeuren voordat

In deze appendix wordt bekeken wat er moet gebeuren voordat Normaliseren A In deze appendix wordt bekeken wat er moet gebeuren voordat een systeem kan worden gedefinieerd. Dit begint met een analyse van de gegevens die de basis vormen. Daarbij wordt gekeken naar

Nadere informatie

PHP-OPDRACHT SITE BOUWEN

PHP-OPDRACHT SITE BOUWEN PHP-OPDRACHT SITE BOUWEN PERIODE 4 LEERJAAR 1 Opleiding: Duur: Applicatieontwikkelaar 1 onderwijsperiode (4-8 weken) Voorkennis: Basiscursus PHP 5.4 Victor Peters (978 90 125 8499 9) Basiscursus XHTML,

Nadere informatie

SQL Aantekeningen 3. Maarten de Rijke mdr@science.uva.nl. 22 mei 2003

SQL Aantekeningen 3. Maarten de Rijke mdr@science.uva.nl. 22 mei 2003 SQL Aantekeningen 3 Maarten de Rijke mdr@science.uva.nl 22 mei 2003 Samenvatting In deze aflevering: het selecteren van tuples, operaties op strings, en aggregatie functies. Verder kijken we naar iets

Nadere informatie

Database Structuur via menus

Database Structuur via menus Data Dictionary Database Structuur via menus Na het normaliseren en maken van een data dictionary kunnen de tabellen worden ingevoerd in de database. In deze les wordt getoond hoe dit in Access gebeurt.

Nadere informatie

Van CaseTalk naar een database in SQLite studio

Van CaseTalk naar een database in SQLite studio Van CaseTalk naar een database in SQLite studio Dit document legt uit hoe je een SQL export uit CaseTalk kunt importeren in het DBMS (Database Management System) SQLite Studio. SQLIte studio is handig

Nadere informatie

Technisch ontwerp. Projectteam 6. Project "Web Essentials" 02 april 2009. Versie 2.1.0

Technisch ontwerp. Projectteam 6. Project Web Essentials 02 april 2009. Versie 2.1.0 Projectteam 6 Faculteit Natuur en Techniek Hogeschool Utrecht Projectleider: Hans Allis, hans.allis@student.hu.nl Technisch ontwerp Project "Web Essentials" 02 april 2009 Versie 2.1.0 Teamleden: Armin

Nadere informatie

Autoconnect VIPS: Gebruikersgids (Vehicle Information Preregistration System)

Autoconnect VIPS: Gebruikersgids (Vehicle Information Preregistration System) Autoconnect VIPS: Gebruikersgids (Vehicle Information Preregistration System) Versie 1.1 Aangemaakt op 22/01/2016 Aangemaakt door Michiel Thai Laatste wijziging op 11/02/2016 Laatste wijziging door Katharine

Nadere informatie

Deel 2: Endnote bibliografische software gebruiken als databasemanager en editor

Deel 2: Endnote bibliografische software gebruiken als databasemanager en editor Deel 2: Endnote bibliografische software gebruiken als databasemanager en editor Versie feb. 2015 pag. 38 Endnote output: 1. Organiseer je database 2. Doorzoek de referenties in je database 3. Publiceren,

Nadere informatie

Release Notes Carta 14.1

Release Notes Carta 14.1 Release Notes Carta 14.1 Datum: 2-6-2014 09:43 Auteur: Hans Wijntjes Project: Carta 14.1 Versie: 1.0 Inhoud 1 Inleiding... 3 2 Importfunctie... 3 2.1 Stap 1 Kolomdefinities... 3 2.2 Stap 2 Gedrag... 4

Nadere informatie

Gebruikershandleiding

Gebruikershandleiding Release 1.3 Gebruikershandleiding Datum: oktober 2012 All rights reserved Alle rechten zijn voorbehouden. Deze documentatie blijft eigendom van Ternair Software Solutions b.v. en is uitsluitend bedoeld

Nadere informatie

Intranet: content-beheersystemen 1

Intranet: content-beheersystemen 1 Intranet: content-beheersystemen 1 een web-applicatie waarmee men zonder veel technische kennis op het internet/intranet kan publiceren er is een verschil tussen inhoud en presentatie inhoud verandert

Nadere informatie

Content tips & tricks

Content tips & tricks Content tips & tricks E-learning vormt de basis van je lessen en als docent steek je veel tijd in het ontwikkelen en vormgeven van deze content. Met deze handleiding maken we dit proces net even makkelijker

Nadere informatie

Les 15 : updaten van gegevens in de database (deel2).

Les 15 : updaten van gegevens in de database (deel2). Les 15 : updaten van gegevens in de database (deel2). In de volgende reeks lessen zal alle vorige leerstof uitgebreid aan het bod komen. Zie ook de vorige lessen en documenten om informatie op te zoeken

Nadere informatie

Snelgids voor het bouwen van een IT- RDBMS in EXCEL.

Snelgids voor het bouwen van een IT- RDBMS in EXCEL. Snelgids voor het bouwen van een IT- RDBMS in EXCEL. door Johan van der Maas. Tabel2 Kolom1 Kolom2 Kolom3 Kolom4 Tabel1 Kolom1 Kolom7 Kolom6 Kolom7FK Kolom8 Kolom9 Kolom10 Kolom11 Kolom14 Tabel3 Kolom7

Nadere informatie

Data Definition Language

Data Definition Language Data Definition Language We gaan hier dezelfde database gebruiken als in de vorige les. Nu gaan we deze echter maken met behulp van DDL gedeelte van SQL. Om in het SQL deel van Microsoft Access te komen

Nadere informatie

Release notes Swing 5.0.6 & 5.0.7

Release notes Swing 5.0.6 & 5.0.7 Release notes Swing 5.0.6 & 5.0.7 Copyright 2016 Swing Jive Swing is een product van ABF Research Jive Full screen weergave Swing 5 beschikt nu ook over een full screen weergave. Deze is te activeren via

Nadere informatie

#Stap 1 Uw account activeren en inloggen

#Stap 1 Uw account activeren en inloggen Inhoud #Stap 1 Uw account activeren en inloggen... 2 #Stap 2 Een test dossier aanmaken... 3 #Stap 3 Uw overzichtspagina... 3 #Stap 4 Het Dashboard... 4 #Optie 1 Bekijken... 4 #Optie 2 Wijzigen... 5 #Optie

Nadere informatie

Mailmerge Auteur : Reint Endendijk Versie : 1.0 Datum : 25 juni 2010

Mailmerge Auteur : Reint Endendijk Versie : 1.0 Datum : 25 juni 2010 Auteur : Reint Endendijk Versie : 1.0 Datum : 25 juni 2010 2 Volgens Wikipedia is mailmerge: Een software product dat een bestand (of database) van namen en adressen samenvoegt met een sjabloon, om zodoende

Nadere informatie

Databases en SQL Foundation (DBSQLF.NL)

Databases en SQL Foundation (DBSQLF.NL) Databases en SQL Foundation (DBSQLF.NL) EXIN Hét exameninstituut voor ICT ers Janssoenborch - Hoog Catharijne Godebaldkwartier 365 3511 DT Utrecht Postbus 19147 3501 DC Utrecht Nederland T +31 30 234 48

Nadere informatie

EXAMEN juni 2018 Gegevensbanken

EXAMEN juni 2018 Gegevensbanken 22 juni 2018 9.00 u. EXAMEN juni 2018 Gegevensbanken Het examen bestaat uit drie vragen die schriftelijk uitgewerkt worden. Instructies a. De vragen moeten worden opgelost in de volgorde waarin ze genummerd

Nadere informatie

8. De invoer van gegevens

8. De invoer van gegevens 8. De invoer van gegevens 8.1. Inleiding Voor het invoeren van gegevens kan het DML-statement INSERT INTO worden gebruikt. Om dit statement correct te kunnen gebruiken, moet je wel antwoord weten op de

Nadere informatie

Tentamen Informatica 6, 2IJ60,

Tentamen Informatica 6, 2IJ60, Tentamen Informatica 6, 2IJ60, 18-03-2005 Dit tentamen bestaat uit 6 opgaven. Bij elke opgave staat aangegeven hoeveel punten te behalen zijn. Één punt ontvang je cadeau voor de aanwezigheid. Het eindresultaat

Nadere informatie

Dit voorbeeldproject beschrijft het gebruik van web services (open standaarden) voor de ontsluiting van kernregistraties bij de gemeente Den Haag.

Dit voorbeeldproject beschrijft het gebruik van web services (open standaarden) voor de ontsluiting van kernregistraties bij de gemeente Den Haag. Voorbeeldproject Een Haagse SOA Dit voorbeeldproject beschrijft het gebruik van web services (open standaarden) voor de ontsluiting van kernregistraties bij de gemeente Den Haag. Aanleiding Vanuit de visie

Nadere informatie

Wat is nieuw in deze handleiding: Dit is een nieuwe handleiding welke nieuwe functies beschrijft.

Wat is nieuw in deze handleiding: Dit is een nieuwe handleiding welke nieuwe functies beschrijft. Doel Module Fronter 92 Dit document is gemaakt door Fronter Ltd fronter.com. Het document mag alleen gekopieerd of digitaal verspreid worden volgens contract of in overeenstemming met Wat is nieuw in deze

Nadere informatie

En hoe gaan ze dit allemaal terugvinden?

En hoe gaan ze dit allemaal terugvinden? En hoe gaan ze dit allemaal terugvinden? Taak 1.2.10 Thomas Muller Paul van der Linden MT1A Tutor: van Griensven Docent: van den Biggelaar Gemaakt door Thomas Muller en Paul van der Linden Pagina 1 van

Nadere informatie

Count-e Statistieken. Statistieken

Count-e Statistieken. Statistieken Count-e Statistieken 1. Voorbereiding... 2 1.1. Statistiek definities... 3 2. Afdrukken Statistieken... 5 3. Functies gebruiken... 6 3.1. Veldinhoud selecteren... 6 3.2. Celinhoud tonen... 6 3.3. Velden

Nadere informatie

Handleiding CMS. Auteur: J. Bijl Coldfusion Consultant

Handleiding CMS. Auteur: J. Bijl Coldfusion Consultant Handleiding CMS Auteur: J. Bijl Coldfusion Consultant Inhoudsopgave 1.0 Inleiding 3 2.0 Introductie CMS en websites 4 3.0 Inloggen in beheer 5 4.0 Dashboard 6 4.1 Bezoekers totalen 6 4.2 Bezoekers 7 4.3

Nadere informatie

Les 3. Controleer op updates Views vervolmaking. Voorbereiding

Les 3. Controleer op updates Views vervolmaking. Voorbereiding Les 3 Controleer op updates Views vervolmaking Voorbereiding 1. Installeer en activeer de volgende modules: 1. Views Autocomplete 2. Views Bulk Operations (VBO) 3. Vieuws Bulk Edit 2. Open de instellingen

Nadere informatie

Legal Eagle - Integratiemodule. 2011 Sdu Uitgevers / A. Koppenaal

Legal Eagle - Integratiemodule. 2011 Sdu Uitgevers / A. Koppenaal Legal Eagle - Integratiemodule / A. Koppenaal I Legal Eagle - Integratiemodule Inhoudsopgave Algemene informatie 1 1 Voorbereidend... werk 2 Gebruik van de integratie module 3 1 Export... van debiteuren

Nadere informatie

Functionele Componenten

Functionele Componenten Functionele Componenten 1 OCTOBOX is rule-based software die ingezet wordt voor de verwerking en afhandeling van inkomend berichtenverkeer. De software is voor meerdere doeleinden toepasbaar en richt de

Nadere informatie

SQL & Datamodelleren

SQL & Datamodelleren SQL & Datamodelleren HVA-CMD-V1-datamodelleren Algemene handleiding bij het lesprogramma 2012-2013 Inhoud Inhoud... 2 Inleiding... 3 Leerdoelen:... 3 Plaats in het leerplan:... 3 Werkwijze:... 3 Lesstof:...

Nadere informatie

Structured Query Language (SQL)

Structured Query Language (SQL) Structured Query Language (SQL) Huub de Beer Eindhoven, 4 juni 2011 Database: in essentie 0 of meer tabellen elke tabel nul of meer kolommen (of velden) elke tabel nul of meer unieke rijen elke query werkt

Nadere informatie

Zonnepanelen Hoe krijg je de data op je website?

Zonnepanelen Hoe krijg je de data op je website? Zonnepanelen Hoe krijg je de data op je website? Beste website-bezoeker, Omdat ik al heel wat vragen kreeg over het gedeelte zonne-energie op mijn website, heb ik besloten om de werkwijze die ik gevolgd

Nadere informatie

Midi PDF Bladmuziek lezer

Midi PDF Bladmuziek lezer Inleiding. Ruim 20 ordners aan bladmuziek, meeste daarvan uitgeprint van een PDF. Even snel een nummer opzoeken wil dan ook niet, terwijl ik alles wel op alfabetische volgorde heb. Dat was het niet helemaal

Nadere informatie

Technische nota AbiFire Rapporten maken via ODBC

Technische nota AbiFire Rapporten maken via ODBC Technische nota AbiFire Rapporten maken via ODBC Laatste revisie: 23 januari 2018 Inhoudsopgave 1 Inleiding... 2 2 Systeeminstellingen in AbiFire... 3 2.1 Aanmaken extern profiel... 3 2.2 Toewijzing extern

Nadere informatie

Nieuwe ICF-module. Nb. Huidige berichten hoeven niet eerst volledig verwerkt te worden om te kunnen overstappen op deze nieuwe module.

Nieuwe ICF-module. Nb. Huidige berichten hoeven niet eerst volledig verwerkt te worden om te kunnen overstappen op deze nieuwe module. Nieuwe ICF-module Vanaf versie 5.1.4.26 is er een nieuwe ICF-module, voor de ENK Pro en Enterprise-gebruikers, die de samenstelling EF aan hebben staan. Het inlezen en verwerken van elektronische inkoopfacturen

Nadere informatie

De Kleine WordPress Handleiding

De Kleine WordPress Handleiding Introductie Dit is geen uitgebreide handleiding om een WordPress website of blog mee te bouwen. Het is ook geen overzicht van alle aspecten die een WordPress website zo bijzonder maken en geen verhandeling

Nadere informatie

Central Station. CS website

Central Station. CS website Central Station CS website Versie 1.0 18-05-2007 Inhoud Inleiding...3 1 De website...4 2 Het content management systeem...5 2.1 Inloggen in het CMS... 5 2.2 Boomstructuur... 5 2.3 Maptypen... 6 2.4 Aanmaken

Nadere informatie

Versie Datum Status Auteur(s) Opmerking juli 2017 Definitief Carol Esmeijer

Versie Datum Status Auteur(s) Opmerking juli 2017 Definitief Carol Esmeijer Compad Bakkerij Afdrukprocess Document beheer Versie Datum Status Auteur(s) Opmerking 1.0 12 juli 2017 Definitief Carol Esmeijer Inleiding In dit document wordt een toelichting gegeven op de manier waarop

Nadere informatie

Wijzigingen Release 1.4 oktober 2010

Wijzigingen Release 1.4 oktober 2010 Wijzigingen Release 1.4 oktober 2010 Inleiding Er is met name geïnvesteerd in meer controle voor beheerders, zodat deze MWIB zelf beter kunnen beheren. De mogelijkheid om acties te verwijderen is toegevoegd,

Nadere informatie

ManageWare Pro Postbus 568 3700AN Zeist Tel.: 030-692 5701 Fax: 084-718 8468. Documentenbeheer

ManageWare Pro Postbus 568 3700AN Zeist Tel.: 030-692 5701 Fax: 084-718 8468. Documentenbeheer Documentenbeheer Inleiding ConsultManager heeft nu een professionele module om documenten te archiveren, te koppelen aan cliënten, artsen, etc., en te beheren. Het was al mogelijk om externe documenten

Nadere informatie

Service Pack notes CRM SPE SP4

Service Pack notes CRM SPE SP4 Service Pack notes CRM SPE SP4 V1.0 INHOUD Agendarechten... 3 Nieuw uiterlijk... 3 Link tussen de offerte en activiteit... 4 Functies en persoonsindeling... 6 Conversie... 6 Upload documenten vanuit de

Nadere informatie

Inrichting Systeem: Locaties & Toegang

Inrichting Systeem: Locaties & Toegang Inrichting Systeem: Locaties & Toegang EasySecure International B.V. +31(0)88 0000 083 Info@EasySecure.nl Support.EasySecure.nl v2.0.11 22-09-2014 In deze handleidingen worden de volgende functies binnen

Nadere informatie

4orange Connect. 4orange, 2015. Hogehilweg 24 1101 CD Amsterdam Zuidoost www.4orange.nl

4orange Connect. 4orange, 2015. Hogehilweg 24 1101 CD Amsterdam Zuidoost www.4orange.nl 4orange Connect 4orange, 2015 Hogehilweg 24 1101 CD Amsterdam Zuidoost www.4orange.nl 2 Inhoud Inhoud... 2 1. Achtergrond... 3 2) Browsen... 4 3) Scheduler... 4 4) Frequenties en kruistabellen... 4 5)

Nadere informatie

Informatica: C# WPO 13

Informatica: C# WPO 13 Informatica: C# WPO 13 1. Inhoud Bestanden uitlezen, bestanden schrijven en data toevoegen aan een bestand, csv-bestanden 2. Oefeningen Demo 1: Notepad Demo 2: Read CSV-file Demo 3: Write CSV-file A: Plot

Nadere informatie

C a s e S t u d y Y i f e C o n t a c t i n f o r m a t i e

C a s e S t u d y Y i f e C o n t a c t i n f o r m a t i e C a s e S t u d y Y i f e C o n t a c t i n f o r m a t i e Koen Piers Boudewijnlaan 1 Ondernemingsnr. 0808.450.557 0486/666.543 3590 Diepenbeek Rekeningnr. 979-5766597-49 koen@aurealis.be België D o e

Nadere informatie

Normaliseren versie 1.1

Normaliseren versie 1.1 Normaliseren versie 1.1 Datamodellering 27 1 Wat is normaliseren? Data organiseren in tabelvorm, zó dat: er minimale redundantie is update operaties (toevoegen, wijzigen, verwijderen) eenvoudig zijn uit

Nadere informatie

Service Pack notes CRM SPE SP3

Service Pack notes CRM SPE SP3 Service Pack notes CRM SPE SP3 Versie 1.1 INHOUD Opslag documenten in de database... 3 Wijzigen methodiek opslag documenten... 3 Controleren documenten... 3 Repareren documenten... 3 Documenten verplaatsen

Nadere informatie

2.2 Een tabel ontwerpen

2.2 Een tabel ontwerpen 2.2 Een tabel ontwerpen 2.2.1 Gegevens analyse Alvorens de tabellen van een database te kunnen gaan opzetten, dient u eerst te bepalen, welke gegevens daarin moeten worden opgenomen. Bepaal eerst het doel

Nadere informatie

1 Calculatie XE, 9.00 update 16 2

1 Calculatie XE, 9.00 update 16 2 1 Calculatie XE, 9.00 update 16 2 1.1 Nieuw: Uitbreidingen n.a.v de ARW 2012 2 1.1.1 Beschrijving / doel 2 1.1.2 Instelling(en) 4 1.1.3 RAW inschrijfstaat rapportage 6 1.1.4 RAW inschrijfstaat rapportage

Nadere informatie

Dataconversie met Oracle Spatial

Dataconversie met Oracle Spatial Realworld klantendag 19 september 2013 Voorstellen 1 2 Computer Science & Engineering (TU/e) 3 Realworld Systems 4 Datamigraties Alliander Stedin Agenda 1 Architectuur Inleiding Ontwerp migratie 2 Rapportage

Nadere informatie