如何存储设置深度的任意宽树

时间:2010-06-24 18:43:49

标签: xml database schema

我需要存储如下所示的数据:

<root>
    <child-one>
        value 1
        value 2
        ...
        value n
    </child-one>
    ...
</root>

我的意思是,这是一棵非常浅的树,叶子数量可变。

我本来希望将这些数据存储在关系数据库中,但如果没有这样做,我无法找到这样做的方法:

使用多个“加入”表格

例如:

(Object (root, child-one, child-two, ...))

(Join1 (child-one, value 1), (child-one, value 2), ... (child-one, value n) )

(Join2 (child-two, value 1), (child-two, value 2), ... (child-two, value n) )

etc. 

使用“array”数据类型(来自Postgresql)

(Object (root, child-one[], child-two[] ...))

如果我不允许使用XML存储或文档存储,那么这两个中哪一个是最佳选择?我缺少另一种策略吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用以下架构吗?

id | rootName
---|---------
 0 | root1

id | childName | fk_root
---|-----------|--------
 0 | child-one |    0
 1 | child-two |    0

id | valueData | fk_child
---|-----------|--------
 0 |   value1  |    0
 1 |   value2  |    0
 2 |   value3  |    1

这将导致/来自:

<?xml ?>
    <root1>
        <child-one>
            <value1 />
            <value2 />
        </child-one>
        <child-two>
            <value3 />
        </child-two>
     </root1>