【自定义表单】自定义表单设计

2023-11-09

1.后端设计1

diy_field_pool      字段池(我们定义好的字段类型)
diy_form            表单表(记录用户自定义的表单)
diy_form_field      表单字段表(记录某张表单中有哪些字段)
diy_form_entity     表单实例表(记录某张表单中的某条数据实例)
diy_form_data       表单数据表(记录某张表单在某条实例下,哪些字段对应的数据)
  • 系统初始化字段池
    我们提供一批预定义的字段类型,初始化数据到diy_field_pool表中,用户也能自己定义自己的字段池。

  • 用户创建自定义表单
    用户通过选用字段池(diy_field_pool表)中提供的字段,创建一张自定义表单,表单的属性信息记录在diy_form表中,表单包含的字段(从字段池中选好的字段)记录在diy_form_field表中。这样用户就创建了一张自定义表单。

  • 用户填写表单
    用户使用创建好的表单填写数据,每新增一条数据,在diy_form_entity表就会新增一条记录,该表单中有几个field,就会同时在diy_form_data表中新增几条 data 数据。数据结构关系如下图所示:

//1.
CREATE TABLE `diy_field_pool` (
  `id` bigint(20) NOT NULL COMMENT '主键id',
  `field_type` varchar(32) NOT NULL COMMENT '字段类型',
  `field_type_name` varchar(32) NOT NULL COMMENT '字段类型名称'
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='字段池';

//2.
CREATE TABLE `diy_form` (
  `id` bigint(20) NOT NULL COMMENT '主键id',
  `form_code` varchar(32) NOT NULL COMMENT '表单code',
  `form_name` varchar(32) NOT NULL COMMENT '表单名称'
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='表单表';

//3.
CREATE TABLE `diy_form_data` (
  `id` bigint(20) NOT NULL COMMENT '主键id',
  `form_id` bigint(20) NOT NULL COMMENT 'diy_form表id',
  `entity_id` bigint(20) NOT NULL COMMENT 'diy_form_entity表id',
  `field_id` bigint(20) NOT NULL COMMENT 'diy_form_field表id',
  `value` varchar(512) NOT NULL COMMENT '数据值'
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='表单数据表';

//4.
CREATE TABLE `diy_form_entity` (
  `id` bigint(20) NOT NULL COMMENT '主键id',
  `form_id` bigint(20) NOT NULL COMMENT 'diy_form表id',
  `entity_code` varchar(32) NOT NULL COMMENT '实例code',
  `entity_name` varchar(32) NOT NULL COMMENT '实例名称'
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='表单实例表';

//5.
CREATE TABLE `diy_form_field` (
  `id` bigint(20) NOT NULL COMMENT '主键id',
  `form_id` bigint(20) NOT NULL COMMENT 'diy_form表id',
  `field_pool_id` bigint(20) NOT NULL COMMENT 'diy_field_pool表id',
  `form_field_code` varchar(32) NOT NULL COMMENT '表单code',
  `form_field_name` varchar(32) NOT NULL COMMENT '表单名称'
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='表单字段表';

// 1.分页查询sql
SELECT li.id,dff.form_field_code,dff.form_field_name,dfd.`value` FROM 
(SELECT dfe.id, dfe.entity_code FROM 
diy_form df 
LEFT JOIN diy_form_entity dfe ON dfe.form_id = df.id
WHERE df.form_code='product_info'
LIMIT 0,1) li

LEFT JOIN diy_form_data dfd ON li.id = dfd.entity_id
LEFT JOIN diy_form_field dff ON dfd.field_id=dff.id
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【自定义表单】自定义表单设计 的相关文章

  • 如何将“mysql source”命令与 mysql 变量一起使用?

    我需要从 mysql shell 执行一个基于如下条件的 SQL 文件 mysql gt 源 var 其中 var 包含文件名 这不可能 source是MySQL客户端程序在本地识别并执行的命令 变量存在于服务器上 因此客户端不知道什么 v
  • 有没有办法在 MySQL 中有效地对 TRUNCATE 或 DROP TABLE 进行 GRANT ?

    我最近在 MySQL 5 5 x 中尝试过 GRANT SELECT INSERT UPDATE DELETE TRUNCATE ON crawler TO my user localhost WITH GRANT OPTION 这会导致错
  • 每行中非空列的计数

    我有一个包含 4 列的表 在第 5 列中我想存储前 4 列中有多少个非空列的计数 例如 其中 X 是任意值 Column1 Column2 Column3 Column4 Count X X NULL X 3 NULL NULL X X 2
  • 如何使用 dql 从数据表中获取唯一值?

    我有一个表 其中有一列存储了各种值 我想使用 dql 从该表中检索唯一值 Doctrine Query create gt select rec school gt from Records rec gt where rec city ci
  • SQL 按计数排序

    如果我有一个表和这样的数据 ID Name Group 1 Apple A 2 Boy A 3 Cat B 4 Dog C 5 Elep C 6 Fish C 我希望根据 Group 的总和从小到大进行排序 例如 A 2条记录 B 1条记录
  • 在shell命令行中创建mysql触发器

    我需要在命令行中创建一个mysql触发器 这个sql在mysql控制台中运行良好 sql USE DB1 DROP TRIGGER IF EXISTS my trigger DELIMITER CREATE TRIGGER my trigg
  • R:ifelse 中的字符串列表

    我正在寻找与 MySQL 中的 where var in 语句类似的东西 我的代码如下 data lt data frame id 10001 10030 cc1 rep c a b c 10 attach data data new lt
  • sql server 2008 对 exec 语句的限制

    我只需要仔细检查 t sql 中的 EXEC 命令是否有字符限制 如果我有一个带有 varchar max 的变量并使用 EXEC 执行命令 你认为这样可以吗 thanks 应该没问题 根据这篇 MSDN 文章 http msdn micr
  • 为 java 项目创建安装

    我创建了一个 java 项目 它使用数据库来检索 编辑和保存数据 我使用 Netbeans 完成了该项目 现在我想在该项目之外创建一个安装 为此 我想包含与项目一起安装的数据库 我用来连接数据库的代码是 Class forName com
  • 优化 LATERAL join 中的慢速聚合

    在我的 PostgreSQL 9 6 2 数据库中 我有一个查询 该查询根据一些股票数据构建计算字段表 它为表中的每一行计算 1 到 10 年的移动平均窗口 并将其用于周期性调整 具体来说 CAPE CAPB CAPC CAPS 和 CAP
  • 使用转义换行符和回车符取消转义字符串

    我正在尝试编写一个 PLPGSQL 函数来混淆 审查 编辑文本 Obfuscate a body of text by replacing lowercase letters and numbers with symbols CREATE
  • MySQL:“您的 SQL 语法错误...靠近键...”? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我发现了一个非常酷的用于丢失密码的脚本 但是这一行给我带来了问题 r mysql query INSERT INTO keys u
  • 对于返回超过1个值的SQL select,当Id为GUID时它们如何排序?

    我想知道 SQL Server 如何对查询返回的数据进行排序 并且各个表的 Id 列都是 uniqueidentifier 类型 我在创建所有 GUID 时使用 NHibernate GuidComb 并执行以下操作 Sheet sheet
  • 如何将彼此“接近”的纬度/经度点分组?

    我有一个用户提交的纬度 经度点的数据库 并且正在尝试将 接近 点分组在一起 接近 是相对的 但目前看来约为 500 英尺 起初 我似乎只能按前 3 个小数位具有相同纬度 经度的行进行分组 大约是一个 300x300 的盒子 了解当您远离赤道
  • SQL Server 批量插入 - “批量加载数据转换错误”

    bulk insert dbo A FROM d AData csv WITH FIELDTERMINATOR ROWTERMINATOR n 将批量数据插入数据库时 在检查可疑数据后 我遇到了无法解释的错误 消息 4867 16 级 状态
  • 如何比较行内的重叠值?

    我似乎对这个 SQL 查询有问题 SELECT FROM appts WHERE timeStart gt timeStart AND timeEnd lt timeEnd AND dayappt boatdate 时间格式为军用时间 物流
  • nvarchar 值“3001822585”的转换溢出了 int 列

    我使用以下方法将 Excel 文件导入到 SQL Server Excel 文件将所有值作为字符串 我可以导入文件 除了Barcode SalePrice and Price2 我收到错误 nvarchar 值 3001822585 条形码
  • Python MySQL 操作错误:1045,“用户 root@'localhost' 的访问被拒绝

    我试图通过以下方式从我的 python 程序访问数据库 db mysql connect host localhost user Max passwd maxkim db TESTDB cursor db cursor 但是 我在第一行代码
  • RANK() OVER PARTITION 并重置 RANK

    如何获得在分区更改时重新启动的 RANK 我有这张表 ID Date Value 1 2015 01 01 1 2 2015 01 02 1
  • 最近邻居的 Postgis SQL

    我正在尝试计算最近的邻居 为此 我需要传递一个参数来限制与邻居的最大距离 例如 半径1000米内最近的邻居是哪些 我做了以下事情 我用数据创建了表 id name latitude longitude 之后 我执行了以下查询 SELECT

随机推荐

  • 纯前端css实现酷炫loading动画

    纯前端css实现酷炫loading动画 1 平滑加载 2 按步加载 3 虚线加载 4 电池加载 5 内嵌加载 6 斑马线加载 7 水柱加载 8 信号加载 9 四个动点加载 1 平滑加载 div class progress 1 div pr
  • MVP 实现登录注册

    http blog csdn net dfskhgalshgkajghljgh article details 51317956
  • react+antd系列之日期选择框DatePicker

    1 默认时间
  • stm32cubemx生成不了keil工程文件_STM32cubeMX教程定时器实现定时1秒LED闪烁

    软件 STM32CubeMX V4 25 0 keil u5 固件库版本 STM32Cube FW F1 V1 6 1 硬件 OneNet 麒麟座V1 4 在STM32CubeMX中新建项目 选择正确的MCU型号 首先设置RCC和SYS 如
  • 若依图片文件上传

    1 前端代码 使用若依自带的
  • Grafana ALert功能使用webhook,并预警数据信息

    使用webhook预警的时候如果能够同时获取预警的数据信息是最好不过的 这里我们就来看下怎么获取这些东西 数据源依然选用InfluxDB 具体配置过程可以参考前边两篇文章 现在从webhook配置开始 无参对接 在Grafana的Alert
  • LeetCode108.将有序数组转换为二叉搜索树

    题目来源 108 将有序数组转换为二叉搜索树 力扣 LeetCode 二叉搜索树定义 二叉搜索树 Binary Search Tree 又 二叉查找树 二叉排序树 它或者是一棵空树 或者是具有下列性质的 二叉树 若它的左子树不空 则左子树上
  • 2023华为OD机试真题【处理器问题/深度优先搜索】

    题目描述 某公司研发了一款高性能AI处理器 每台物理设备具备8颗AI处理器 编号分别为0 1 2 3 4 5 6 7 编号0 3的处理器处于同一个链路中 编号4 7的处理器处于另外一个链路中 不同链路中的处理器不能通信 现给定服务器可用的处
  • mysql 读写分离

    读写分离引入时机 大多数互联网业务中 往往读多写少 这时候数据库的读会首先成为数据库的瓶颈 如果我们已经优化了SQL 但是读依旧还是瓶颈时 这时就可以选择 读写分离 架构了 读写分离首先需要将数据库分为主从库 一个主库用于写数据 多个从库完
  • C/C++中浮点数的存储方式

    原文地址 C C 中浮点数的存储方式 作者 andyhzw 根据国际标准IEEE 754 任意一个二进制浮点数V可以表示成下面的形式 V 1 s M 2 E 1 1 s表示符号位 当s 0 V为正数 当s 1 V为负数 2 M表示有效数字
  • 使用umi3和antd pro5从零实现全栈中后台管理系统

    0 前言 使用umi3和antd pro5从零实现全栈中后台管理系统 0 1 涉及技术栈 前端 TS React React Hooks umi3 antd pro5 后端 express mongodb jwt 0 2 实现的功能 后端用
  • STM32CUBEMX F103 HAL库开发 两路定时器的Encoder编码器模式

    机器人开发过程中 对于直流电机来说 编码器至关重要 它不仅可以使我们对电极进行精确的速度闭环 位置闭环 还可以通过时间积分 根据运动学关系 获得速度 位置等信息 STM32的定时器有编码器模式 大大的方便我们的开发 使用STM32cubeM
  • 刨根问底:C++中浮点型变量(float, double)的比较问题。

    首先 让我们先来看一段代码 include
  • CVE-2022-25845 反序列化漏洞分析

    测试环境 jdk1 8 fastjson 1 2 80 win10 实验POC public class Poc extends Exception public void setName String str try Runtime ge
  • python __next__()方法_Python迭代器的用法,next()方法的调用

    迭代器的用法 首先说两个概念 一个是可迭代的对象 一个是迭代器对象 两个不同 可迭代的 Iterable 就是可以for循环取数据的 比如字典 列表 元组 字符串等 不可使用next 方法 迭代器 Iterator 也是可以依次迭代取出数据
  • msrcr图像增强算法 matlab,图像处理之Retinex增强算法(SSR、MSR、MSRCR)

    视网膜 大脑皮层 Retinex 理论认为世界是无色的 人眼看到的世界是光与物质相互作用的结果 也就是说 映射到人眼中的图像和光的长波 R 中波 G 短波 B 以及物体的反射性质有关 其中I是人眼中看到的图像 R是物体的反射分量 L是环境光
  • BugkuCTF-MISC题粗心的佳佳

    下载得到3个文件 预期解法应该是根据图片写出脚本 把混淆过的二维码恢复 我发现照着password png也能看出原本的二维码大概长啥样 手动修复得到一张二维码 扫码得到IXE1VDYmMjk base64解码得到压缩包密码 q5T6 29
  • GUI Guider设计UI界面移植到STM32

    GUI Guider设计UI界面移植到STM32 一 什么是GUI Guider 什么是 GUI Guider GUI Guider 是恩智浦为 LVGL 开发了一个上位机GUI 设计工具 可以通过拖放控件的方式设计 LVGL GUI 页面
  • java热部署

    Class forName和ClassLoader loadClass 简书 Eclipse安装热部署热加载插件JRebel 免费版 idea也可用 that summer CSDN博客 Eclipse中使用JRebel实现项目热部署 Ma
  • 【自定义表单】自定义表单设计

    1 后端设计1 diy field pool 字段池 我们定义好的字段类型 diy form 表单表 记录用户自定义的表单 diy form field 表单字段表 记录某张表单中有哪些字段 diy form entity 表单实例表 记录