存储可以有条件地显示为文本文件一部分的文本块的最佳数据结构是什么?

时间:2018-11-14 16:30:03

标签: postgresql python-2.7 database-schema django-1.9

让我们设置场景。这是一个文本文件:

INTRODUCTION

Paragraph 01
Paragraph 02
Paragraph 03

SECTION XXXXXX

Paragraph 01
Paragraph 02

SECTION YYYYYY

Paragraph 01

SECTION ZZZZZZ

Paragraph 01
Paragraph 02
Paragraph 03

每个段落内部可以包含更多段落,但让我们保持简单。

我们希望通过遵循以下简单规则以编程方式构建文本文件:

  • 部分始终存在,至少包含一个段落
  • 可以根据一个或多个条件显示或不显示任何段落。条件定义为根据上下文评估的代码(例如,考虑Python中的eval函数)。
  • 上下文将在运行时提供
  • 段落可以以数字开头。因此,我们不能将数字作为段落的一部分(段落可以存在或不存在,并且它们的编号必须遵循正确的顺序:1、2、3等)

要构建的文本类型为使用条款,隐私政策等。为简单起见,基于网络表单回复包含或多或少内容的法律文本

编辑:文本与表格分开生成。我们只有回应。

因此,我的方法是将文本(段落)的大块存储为数据库的列。每列以及:

  • 所在部分的位置
  • 要评估为条件的代码。如所述,将在运行时提供用于评估该代码的上下文。

由于我们可以评估一个或多个条件以确定最终文本中是否包含文本块,因此我不确定要使用哪种数据结构。

关系数据库?列的数量是动态的,因为在每种情况下最初都存在无限数量的要评估的条件。

NoSQL数据库?,是否将结构存储为JSON,包含文本和条件数组?

有什么其他方法吗?

1 个答案:

答案 0 :(得分:0)

我用另一种方法解决了这个问题。

我们通过将2种类型的小部件拖放到画布中(代表文本文件的内容),在前端构建文本文件:

  • 简单的文本块
  • 有条件的小部件:它们将基于运行时在前端评估的条件显示/隐藏文本块(这是关键)。类似于Angular ng-if

然后我们也在前端编译全文。

因此,后端仅存储文本块。无需将条件逻辑转换为数据库。现在甚至听起来很傻...