如何最好地保存重叠的数据?

时间:2017-03-14 12:34:08

标签: javascript json xml database save

假设我有一个由多个章节组成的文本,这些章节由多个段落组成,这些段落由多个句子组成。在JSON中,我可以将其保存如下:

// Pseudo Code
    chapter {
     paragraphs {
      sentences {
      }
     }
    }

但是,让我们介绍另一个需要保存/跟踪的单元,并让它称之为“#”;'部分。一节也有句子,可以延伸多段,但完全独立于段落,即它不会总是干净地整理段落,但有时只是一段句子,其他时间延伸超过1 1/2段落

我不知道在JSON或XML中保存的位置和方式。我也不想重复自己并将这些信息保存在其他地方,因为我的应用程序将它们集中在一个地方是有意义的。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

不是简单的解决方案,但这可以起作用......

较小的共同点是句子,我会在每个句子上加上一个非强制性属性,引用(或不引用)部分

chapter : [
  1 : {                                // Chapter 1
    paragraphs : [
      1 : {                            // Paragraph 1.1
        sentences : [
          1 : {
            text : 'sentence 1',
            section : ''
          },
          2 : {
            text : 'sentence 2',
            section : 'section 1'
          }
        ]
     }, 
     2 : {                              // Paragraph 1.2
       sentences : [
          1 : {
            text : 'sentence 3',
            section : ''
          },
          2 : {
            text : 'sentence 4',
            section : 'section 1'
          }
        ]
      }
    ]
  }
  2 : {                                // Chapter 2
    paragraphs : [
      1 : {                            // Paragraph 2.1
        sentences : [
          1 : {
            text : 'sentence 5',
            section : 'section 1'
          },
      }
    ]
]

在此,第1节将第2句(第1章/第1段),第4句(第1章/第2段)和第5句(第2章/第1段)分组

答案 1 :(得分:0)

您需要注意的是,多年来在标记社区中已经做了很多关于重叠层次结构建模的工作。维基百科有一个概述:

https://en.wikipedia.org/wiki/Overlapping_markup

这可能是开始阅读的好地方。

还有来自数据处理社区的工作:迈克尔杰克逊的1970年代的JSD / JSP方法包括大量的材料,当存在边界冲突时,将一个层次结构转换为另一个层次结构&#34 ; (即两个层次结构都不直接映射到另一个)。 20世纪80年代的(不成功的)ISO ODA(办公文档架构)标准特别关注文档的逻辑结构(章节,部分,段落)与分页表示(页面集,页面,列,块)之间的关系。这是两个重叠层次结构的一个特例;当然,XSLT背后的许多思考都涉及从文档的逻辑层次结构到其分页表示所需的转换。

因此,在重新发明轮子之前,先看看其他人如何解决这个问题。