非结构化xml的数据库模式

gopyfrb3  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(234)

假设我有以下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>

也就是说,有两种类型的实体( foo s和 bar s) 它遵循一个基本结构(foo的id&name,bar的id&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 是一个引用自身的垂直键值表,因此嵌套不是问题。
我的问题是如何把 foo 以及 bar 表到a node . 这种关系是一对多的关系 foo 可以有很多 nodes )所以理论上我应该用 foo_idnode 表(同 bar ). 但我觉得这很奇怪因为不可能有 node 那是属于两个人的 foo 和一个 bar . 而且,不可能有 node 有一个 parent 属于一个 foo 或者 bar 同时。也就是说,这三个属性以某种方式排除在外。
另一种选择是再创建两个表: node_foo_rel: id [int], id_node [int], id_foo [int] , node_bar_rel: id [int], id_node [int], id_bar [int] .
在我看来,这看起来更清晰,尽管您有完全相同的问题,而且这是通常用于多对多的模式。
做这件事的标准方法是什么?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题