关于使用后端实现动态表单功能的心得

embedded/2024/9/23 4:32:55/

1、设计方案

1、直接存整体表单结构的json串

优点:相对Mysql细化结构存储,不用在后端处理大量增、删、改的逻辑。如果用mysql对结构体做逻辑删除,可利于回滚。也可用redis、mongodb等实现

缺点:控制粒度不够,不利于需要关联复杂查询的情况,事务控制只能真对整个结构体。需要前端可靠支撑,如前端生成ID或者直接将名称作为表单、字段、选项的唯一识别。

2、使用Myql存表单细化的结构,基本如下

表单表:存储不同表单,如不同页面可能有不同表单。

字段表:存储表单字段信息,比如字段类型、选项类型、输入框类型、筛选类型(展开类型)、字段排序、是否必填、所属表单ID等。

选项表:存储字段为选项类型的选项,如选项名、所属字段ID、所属表单ID等。

表单数据表:使用了哪个表单,并存储表单数据,需存表单ID。

字段数据表:使用表单的哪些字段,并存储字段数据。如输入框类型的输入值、选项标签、表单ID、选项ID。

选项数据表:勾选了哪些选项,需存表单ID、字段ID、选项ID。

优点:可支持复杂查询,以及数据统计等。

缺点:需要在后端处理大量增、删、改,以及校验逻辑。

需要十分注意数据表是存实时数据还是历史数据,实现方案将有很多差别


http://www.ppmy.cn/embedded/13737.html

相关文章

SpringBoot+Vue开发记录(四)

说明: 本篇文章的主要内容是软件架构以及项目的前端Vue创建 一、软件架构 我道听途说的,听说这个东西很关键很重要什么的。 软件架构(software architecture)是一个系统的草图,是一系列相关的抽象模式,用于指导大型软…

C++中的有哪些构造函数

在C中,构造函数可以根据其功能和参数列表的不同划分为多种类型。以下是一些常见的构造函数类型: 默认构造函数(Default Constructor):没有任何参数的构造函数,用于创建对象时进行默认初始化。如果类没有显…

OpenHarmony鸿蒙南向开发案例:【智能猫眼(基于3518开发板)】

样例简介 本Demo是基于Hi3518开发板,使用开源OpenHarmony开发的RTSP协议流媒体应用。达到将Hi3518开发板中摄像头获取的数据通过RTSP协议传输到手机并显示 。 rtsp实现可参考文档:openharmony_1.0.1实现RTSPServer 运行效果 样例原理 如上图所示&…

【C++风云录】精益求精:探索C++开发中的性能优化艺术

超越性能瓶颈:C项目中的质量保证与性能调优策略 前言 在现代软件开发中,自动化测试和质量保证是确保软件质量和稳定性的关键环节。通过使用各种性能分析工具和优化工具,开发人员能够更好地了解程序的行为并改进代码质量。 欢迎订阅专栏&…

Nginx莫名奇妙返回了404

描述 nginx作为反向代理,代理python的服务,但是通过代理访问服务的时候,报了404的错误。 难受的是客户现场没有查看日志的权限,只有查看配置文件的权限,我们检测了几遍配置文件也没有找到问题,哎~ 问题引…

ASP.NET Core 标识(Identity)框架系列(四):闲聊 JWT 的缺点,和一些解决思路

前言 前面的几篇文章讲了很多 JWT 的优点,但作为技术人员都知道,没有一种技术是万能的 “银弹”,所谓有矛就有盾,相比 Session、Cookie 等传统的身份验证方式,JWT 在拥有很多优点的同时,也有着不可忽视的缺…

豆瓣9.7,这部Java神作第3版重磅上市!

Java 程序员们开年就有重磅好消息,《Effective Java 中文版(原书第 3 版)》要上市啦! 该书的第1版出版于 2001 年,当时就在业界流传开来,受到广泛赞誉。时至今日,已热销近20年,本书第…

UE5 android package

1. plug 里删除所有IOS插件; 2.jdk11必须; 3.setting -windows-compiler Version 设置成你的版本; 4.andorid 变绿; 5.target SDK version :34; 6.package game date inside apk? check 7.allow large OBB files c…