R2D2 > XML 2 RDB: R2D2 > Van DTD naar databasestructuur > Sleutels vinden en positionering

6.1.4 Sleutels vinden en positionering

De derde en vierde stap van het algoritme worden hier in een keer besproken. De derde stap in het algoritme zorgt ervoor dat de primaire sleutels aangemaakt worden. De vierde stap behandelt het toevoegen van de mogelijkheden voor het bijhouden van de positie ven elementen binnen het XML-document.

Allereerst het aanmaken van de sleutels. Dit gebeurt ook in de functie makeRelSchema. Bij het genereren van de regels voor de file transfer.txt en de SQL-statements worden meteen deze velden toegevoegd. Voor de primaire sleutels wordt dit de naam van de tabel plus de letters ID. Vervolgens wordt in de SQL-statements aangegeven dat het om primaire sleutels gaat en in het wegschrijven naar het bestand transfer.txt wordt dit aangegeven door de veldnaam te laten beginnen en eindigen met een underscore ('_'). Vervolgens wordt gekeken welke velden een verwijzende sleutel zijn naar ander tabellen. Deze velden krijgen ook de letters ID aan hun naam toegevoegd. Ook wordt in deze functie de velden die nu nog #PCDATA heten vervangen door de naam van de tabel gevolgd door Val.

Nu moet nog de mogelijkheid in gebouwd worden om de positie vast te leggen. Dit gebeurt door in ieder tabel definitie een veld toe te voegen waarin een positie opgeslagen kan worden, genaamd pos. Impliciet zorgt dit ervoor dat alleen van elementen die meerdere keren voorkomen de positie wordt bijgehouden. Deze elementen hebben namelijk een eigen tabel. Koppeltabellen krijgen geen extra veld. Naast het toevoegen van dit extra veld wordt er ook een nieuwe tabel gemaakt, posTable, waarin de positie en de naam van de tabel waarin deze positie zich bevind worden opgeslagen. Hierdoor is bij het terugzetten van de data uit de database naar een XML-document de oorspronkelijke volgorde van de elementen weer terug te vinden.