假设我有以下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_id
在 node
表(同 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]
.
在我看来,这看起来更清晰,尽管您有完全相同的问题,而且这是通常用于多对多的模式。
做这件事的标准方法是什么?
暂无答案!
目前还没有任何答案,快来回答吧!