R2D2 > XML 2 RDB: de theorie > De DTD versimpelen > Conclusie

4.1.1 Conclusie

Met dit commentaar in het achterhoofd stel ik de volgende transformaties voor als goed alternatief voor de besproken algoritmes. Met het oog op 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*
...,e,...,e,... --> e*
...,e,...,e*,... --> e*
...,e*,...,e*,... --> e*
Fig. 4: Transformaties voor versimpeling van de DTD

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