【自定义表单】自定义表单设计
短信预约 -IT技能 免费直播动态提醒
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.分页查询sqlSELECT 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.idWHERE df.form_code='product_info'LIMIT 0,1) liLEFT JOIN diy_form_data dfd ON li.id = dfd.entity_idLEFT JOIN diy_form_field dff ON dfd.field_id=dff.id
来源地址:https://blog.csdn.net/qq_41466440/article/details/129447452
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341