R2D2 > XML 2 RDB: de theorie

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