非结构化XML

时间:2018-06-10 01:53:46

标签: mysql

说我有以下XML:

<fooObjects>
    <id>1</id>
    <name>something</name>
    <randomProperty>
        <subRandomProperty>5</subRandomProperty>
    </randomProperty>
    <anotherRandomProperty>1234</anotherRandomProperty>
    ...
</fooObjects>
<barObjects>
    <id>1</id>
    <url>elsething</url>
    <randomProperty>
        <subRandomPropertyX>28</subRandomProperty>
        <subRandomPropertyY>15</subRandomProperty>
    </randomProperty>
    ...
</barObjects>

也就是说,有两种类型的实体(foobar s)遵循基本结构(foo的id和名称,bar的id和amp url),然后有一堆随机属性可以有子节点。

我想创建一个MySQL模式来存储这种数据。我想我需要以下表格:

foo: id [int], name [string]

bar: id [int], url [string]

node: id [int], name [string], value [string], parent_id [int, foreign key referencing node(id)]

其中node是一个引用自身的垂直键值表,因此嵌套不是问题。

我的问题与如何将foobar表格与node相关联。这个关系是一对多的(一个foo可以有很多nodes)所以理论上我应该在foo_id表中使用node({{1} }})。但这对我来说很奇怪,因为barnode都不属于foo。此外,bar不能同时拥有node并且属于parentfoo。也就是说,这三个属性以某种方式排除。

另一个选择是再创建两个表:

bar

node_foo_rel: id [int], id_node [int], id_foo [int]

这对我来说看起来更干净,但你有完全相同的问题,这是通常用于多对多的模式。

这样做的标准方法是什么?

0 个答案:

没有答案