【问题标题】:Representing Hierarchical Data with repeated node structures用重复的节点结构表示分层数据
【发布时间】:2012-09-12 20:51:20
【问题描述】:

我最近问了一个关于分层网站设计的合适数据结构的问题。看看另一边,我将如何实现以下目标:

父母
- 制作
- 模型 1
- 孩子 1
- 孩子 2
- 模型 1
- 孩子 1
- 孩子 2
- 模型 1
- 孩子 1
- 孩子 2

每个模型的孩子 1 + 2 将是相同的。我可以使用父/子节点和递归来表示分层数据(显然不是最好的)。我是否必须为每个模型与重复列表创建多对多关联?

谢谢!

【问题讨论】:

  • 你的问题和你之前的question有什么不同?
  • 前面的答案展示了如何表示 OOP 结构。在这里,我想知道将数据存储在 mysql 表中的最佳方式......我假设......多个多对多关联。

标签: php sql hierarchy


【解决方案1】:

创建一个具有值、类型和父级的节点类

type 可以是“make”、“model”、“child”或 parent... 并且该值可以用作字符串持有者,并且您仍然可以将任何类型的孩子添加到孩子中,从而导致此

[node type=parent]
    [node type=make value="make1"]
        [node type=model value="model1"]
            [node type=child value="child1"]
                [node type="date-created"]
                [node type="some-field"]
             [node type=child value="child2"]
                [node type="date-created"]
                [node type="some-field"]

节点类中除了 parent 和 type 之外的唯一字段应该是所有节点中都应该存在的字段

【讨论】:

  • 这基本上就是我要做的。我可以在数据库表中表示不同的叶子,引用一个类型并使用工厂模式来创建路径的结构。选定的数组可以被序列化、缓存和重复使用,而无需每次加载都调用大量递归函数。为了处理重复的节点,我将一个唯一的节点列表存储在一个分支表中,并使用关联表进行自我连接,以允许创建一个日期创建但与每个模型相关联。然后我可以使用关联表中的 id 字段来存储针对唯一节点的任何数据。
猜你喜欢
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-16
  • 2021-05-20
  • 2020-11-27
  • 1970-01-01
相关资源
最近更新 更多