动态表单设计

公司前辈要我做一个动态表单数据库设计,思维愚钝,无法下手。后来前辈帮我把表结构画出来了,才茅塞顿开

现在和大家分享一下。

需求:

能够根据数据库在界面动态显示表单,包括表单类型、名称等,并且必须提供 添加新表单,修改表单等功能。

为了满足客户不断的需求变化,有时候需要为某商品增加、修改、删除、属性,这样的话以往的数据库表就很难实现,

因为表的字段是定死了 如果你需要增加一个属性的时候 ,就必须修改表,听说这是不允许的~~。

所以我们要设计一个灵活的数据库 下面以电脑设备为例:

pc 现有属性 name cpu ram disk 现在我们要为pc添加一个 mainboard 属性。

既然必须提供增加表单,那么我们创建表的时候就不能以cpu ram disk 为PC表的列名, 能够修改的话只能是值

所以应该建立以个属性表 来保存这些值

create table y_property(
 proid varchar2(16) primary
key,
 proname varchar2(64),--属性名称
 htmltype
varchar2(64),--界面类型
 isneed  number --是否必填 
 )



























proid proname htmltype isneed 
p001 型号 text 0
p002 cpu text 0
p003 ram select 0
p004 disk select 0

然后要建立以个表来保存这些电脑属性的值

create table y_provalues(
 proid varchar2(32)  ,
--属性id
 entity varchar2(32) , --实例id
 provalue varchar2(1024)
,--属性值
 constraints pro_fk_proid foreign key (proid) references 
y_property(proid),
 constraints provalues_pk primary key
(proid,entity) 
 )






































proid entity provalue
p001 e001 联想扬天V45
p002 e001 AMD5200
p003 e001 金士顿
p004 e001 wd500g
p001 e002 HP450
p002 e002 INTEL458
p003 e002 黑金刚
p004 e002 wd320g

其实也可以这样理解:

y_property 这个表就是一个类

y_provalues 这个表就是 y_property 这个类的实例。entity属性就是实例编号,就是一个实际存在的产品编号。

另外我们还可以在这个基础上面拓展其他的表使其功能更为丰富,


电脑档次表、cpu表(这样的话我们就可以y_provalues中的provalue  与其他表关联,在界面就可以提供下拉列表显示,选择)

这样下来的话就能对电脑商品添加属性了。

接下来的任务就是做一个工程实现界面的动态表单了

第一次写技术blog 感觉表达不是很清楚,。希望大家能看懂,看不懂的地方给我指出来吧

时间: 2024-10-08 06:49:02

动态表单设计的相关文章

动态表单数据库设计

需求: 能够根据数据库在界面动态显示表单,包括表单类型.名称等,并且必须提供 添加新表单,修改表单等功能. 为了满足客户不断的需求变化,有时候需要为某商品增加.修改.删除.属性,这样的话以往的数据库表就很难实现, 因为表的字段是定死了 如果你需要增加一个属性的时候 ,就必须修改表,听说这是不允许的~~. 所以我们要设计一个灵活的数据库 下面以电脑设备为例: pc 现有属性 name cpu ram disk 现在我们要为pc添加一个 mainboard 属性. 既然必须提供增加表单,那么我们创建

简易OA漫谈之工作流设计(六,快捷表单和动态表单)

如果没有表单设计功能,我们一般建物理表,再把表单挂接到流程, 我们可以把外接表单的地址填到表单地址中,地址中会传递一个id. 如果使用外接表单,在审批的时候可能会"不太友好",因为在审批单上看不到任何业务表单信息, 在腾讯的时候有一个实践就是提交流程的时候推送一些业务信息到流程引擎, 这里使用一个"快捷表单"来实现,"快捷表单"用 一个简单json(表单模型)来读取业务表中的数据. 这样在审批单中就可以显示业务表上的信息. 区别于"外接

Activiti 工作流表单设计及开发

一.前言 Activiti 5对表单的支持目前还是比较弱的,表现在对表单的开发还需要写Freemark模板,并且它的模板还需要跟class文件一起打包发布.这使得流程的表单设计必须由开发人员来开发处理.因而,开发一套易用性强的流程表单功能就显得很有必要. 二.需求 用户一般都希望能有如Microsoft的Office套件中的InfoPath那样,可以自己进行设计,并且能与工作流程绑在一起进行流转处理.如下所示: 表单中每个字段有固定的数据类型,并由不同的数据控件展示,如日期.数字.单选或多选.下

2017.2.28 activiti实战--第六章--任务表单(一)动态表单(待)

学习资料:<Activiti实战> 第六章 任务表单(一)动态表单 内容概览:本章要完成一个OA(协同办公系统)的请假流程的设计,从实用的角度,讲解如何将activiti与业务紧密相连. 第四章中讲解了两种表单:动态表单和外置表单的区别.这里将使用不同的表单来完成相同的功能. 1 动态表单:<activiti:formProperty> 2 外置表单:<activiti:formKey>

动态表单

毕业后,一直断断续续地在做这个,腻了! 从傻瓜式的字段定义: 到可视化设计: 页面效果还是一个样--丑: 可是这工具的用户,一直是我,ONLY ME! 动态表单

通达OA工作流-表单设计

第1章    什么是工作流 1.1    工作流的用途 随着企业管理信息化进程的不断深入,协同应用软件的概念已深入人心,而工作流系统正是协同应用软件的核心.通过应用 IT 技术来规范工作流程.提高工作的执行效率和准确度.使企业运营更加高效.规范.稳健,是工作流系统主要解决的问题. Office Anywhere 内置的工作流系统,适用于各行各业,实现企业各类业务的申请.审批.会签.登记.操作等环节的管理,将协同工作的过程进行详细记录,便于日后审核与查询,并实现业务数据的规范化录入.查询.统计.打

asp.net 微信企业号办公系统-表单设计-新建表单(属性设置)

点击表单设计工具栏上的 新建表单 按钮会弹出新表单属性设置框: 表单名称:新表单表名称. 数据连接:表单对应的数据库连接(此连接在 系统管理-->数据库连接 中维护). 数据表:表单对应的数据库表. 主键:数据库表的主键(主键只能是自增的int型,或uniqueidentifier(guid)类型). 标题字段:业务表中的哪个字段数据来作为待办任务的标题. 程序库分类:表单的分类,此分类在 数据字典 中维护. 任务标题:是否自动生成标题,如果是自动生成则会以 流程名称(发起者姓名) 的形式自动生

asp.net 微信企业号办公系统-表单设计-保存与发布

表单的过程中可以随时保存,以便下次继续设计. 表单设计完成后即可点击发布按钮,发布表单,发布表单后即可在流程设计时选定该表单.

javaweb日记选(动态表单及表的实现)

Java语言也可以创建动态表单,如javaweb创建表单及表 应用场景 项目中往往需要动态的创建一个表单,或者添加一个新的数据模板,这时候因为需要在运行时动态的创建表以及动态的维护表字段甚至表关系 使得普通java解决方案变得困难重重. 实现工具 Hibernate + Spring + Groovy +Freemarker Hibernate 作用很简单负责创建数据库表这样可以避免我们自己去写复杂的sql和判断. Spring 作为桥梁起到连接纽带的作用 Groovy 做为动态语言,在项目运行