>>>convert the incoming XML stream into a set of relational tables that
>>>meta-modeled XML structures. Anyone who has done this before knows,
XML
>>>to Relational Mapping can get quite complicated.
I have. The worst is the nesting and finding what nodes to update.
There almost has to be ground rules.
I have broken relational theory in order to map XML
-storing multiple data points in a single column i.e. an array
-using generic data type specific tables for all data, this is a cool
way but so slow....
Example:
XML for Person:
<Person Age=30 Name="George Bush"/>
A Relational Mapping:
Id Column Type Column Name
1 int Age
2 nvarchar(30) Last Name
Now create a table for the XML Type, but it has no columns!!!!!
Person
Key int
That's all just one column!
Now store the values in these type specific tables:
IntValues
Key int
node_type int
Value int
CharValues
Key int
node_type int
Value varchar(255)
Lets say that a XML Person is Node_type 1.
Person IntValues
(1) (1) (1) (30) <----- Primary Key 1 for
Person contains a 30
CharValues
(1) (1) (George Bush)
Next create Generic "Tree" implemented as a relational table that will
map limited hierarchical nesting.
Exmaple:
prd_id int
node_id int
parent_id int
rank int
node_type char
thumbnail varchar(120
product_id int
lvl int
hierarchy varchar(900)
This table is used to map "node_type" which are XML types Person,
Company etc.
Why? Would you ever do this???
1) so you can have on the fly schema changes...storing metadata is a
snap
2) so you can map any arrangement of complex data
3) so you can go hierarchical
4) you can always MAP to a relational table for speed later.
Tony Leotta
www.pillarsoftware.com
--
http://cms-list.org/
more signal, less noise.