如果不在表之间建立关系,为应用程序设计数据库很少是完整的。AppMaster 数据库编辑器允许你在一个简单的动作中建立这种关系。你只需要在表之间画一条连接线,然后选择关系的类型(一对一,一对多,多对多),如果有必要,还可以选择字段的名称。但是,如果表必须指代自己呢?
让我们来分析一下,当有必要保持一定的记录日志时的情况。同时,它的组织方式是,记录的创建严格按照链条进行。每条记录都必须与之前和之后的记录相联系(当然,除了最开始和最后的记录)。因此,整个链条可以跟踪每个单独的记录,并且系统得到额外的保护,以防止未经授权的更改。
数据库设计
首先,我们需要在数据库设计器中创建模型本身。让我们把它命名为 Journal并添加一个文本字段。 record.
下一步是创建一个连接。要做到这一点,右击画布上的任何地方并选择 Create relation.
下一步是设置连接。要做到这一点,你需要选择与之相同的模型作为 Source和 Target(在这个例子中,Journal ),设置字段名(next 和previous ),以及连接类型(has_one )。
自引用表的设置就完成了。你可以开始创建前端设计和业务流程。
创建业务流程
让我们创建一个后端业务流程,向日记本添加新条目。它将接收新条目的文本作为一个输入参数。这将在数据库中搜索最新的条目,以便将其与新条目联系起来。对于搜索,你可以设置 _Limit = 1(因为只需要最后一条记录),这就足够了,因为默认情况下,记录将按ID排序,并按照它们被添加到数据库的顺序发布,从最后一条记录开始。
搜索的结果将是一个由一个元素组成的数组。我们需要使用 Array Element块将其提取出来,用 index 0并形成一个新的日志条目(Make Journal).最后一步是向数据库写入(DB: Create Journal)并完成该业务流程。
这个业务流程可用于创建新数据库记录的默认端点。
前端设计
对于Web应用程序的前端,只需在页面上添加三个元素即可。
- 用于输入新条目内容的文本字段
- 添加条目的按钮
- 显示所有条目的表格。
对于"ADD Journal Record" 按钮,你还需要创建一个简单的业务流程。在点击按钮时,输入字段的文本应该被发送到终端,以创建新的记录,而另一个按钮要被点击,以更新表的内容作为最后一个动作。
对于表本身,也值得设置业务流程,但在本课中,我们将不纠缠于此。所有必要的信息都可以在关于设置表的课程中找到。唯一值得注意的是,在获取数据时,你需要指定 _with参数来获取相关表的数据(尽管在我们的例子中,表是与自己相关的)。
我们可以发布应用程序,添加一些条目,并验证一切工作是否正常。每个条目确实与同一表中的条目相关。例如,对于一个ID为3的条目,有一个与前一个条目(ID为2)和下一个条目(ID为4)的链接。