精华内容
下载资源
问答
  • 基于实现不需开发方修改软件,用户即可自主添加自定义属性字段的目的,采用连接表的方法完成对表属性段的添加;利用多重条件定位每条数据的新增属性;实现了自定义字段添加的设计目标。
  • 自定义字段设计与实现(Java实用版)

    万次阅读 多人点赞 2017-04-12 18:13:37
    自定义字段又叫做“开放模型”,用户可以根据自已的需求,添加需要的字段,实现个性化定制。 如现有一套CRM系统,客户模块中客户信息,需要实现不同行业,不同业态都可以个性化需求。那我们知道客户信息表T_CUSTOM,...
    1. 前言
      自定义字段又叫做“开放模型”,用户可以根据自已的需求,添加需要的字段,实现个性化定制。
    2. 使用自定义字段的目的,使用自定义字段解决哪些问题
      如现有一套CRM系统,客户模块中客户信息,需要实现不同行业,不同业态都可以个性化需求。那我们知道客户信息表T_CUSTOM,如姓名,性别,电话
      等基本通用属性是可以通用的,但如药疗行业客户需要记录体重,血压等,而运输行业的客户更关注货物品类,产量等,而又如快速消费品行业关注客户的爱好,年龄,星座啊,这些问题该如何处理呢?
    3. 自定义字段的设计与实现
      a、相关数据库表说明
      自定义模板表:T_CUSTOM_FIELD_TEMPLATE
      客户信息表:T_CUSTOM
      业态行业类型与自定模板对应用表:T_BUSINISS_TEMPLATE
      注:T_BUSINISS_TEMPLATE不同的业态、行业类型对应不同的自定义模板

      b、相关数据库表结构说明
      

      自定义模板表:T_CUSTOM_FIELD_TEMPLATE
      这里写图片描述

    注:模板内容如下

    [{"label":"货品名称","fieldName":"productName","type":"textfield","required":true,"sequence":1,"rows":3,"minLength":5,"maxLength":20,"vtype":"none","vtypeContent":"","vtypeText":"","defaultValue":"apple Mac","readOnly":false},{"label":"产量","fieldName":"turnout","type":"numberfield","required":true,"sequence":2,"minValue":5,"maxValue":20,"decimalPrecision":2,"defaultValue":20000,"readOnly":false},{"label":"爱好","fieldName":"loves","type":"combobox","required":false,"sequence":4,"singleOption":[{"itemValue":"1","itemName":"看书"},{"itemValue":"2","itemName":"羽毛球"}],"defaultValue":"1"}]

    客户信息表

    这里写图片描述
    这里写图片描述
    运输行业扩展模板
    这里写图片描述
    这里写图片描述
    自定义字段的类型有,文本框、数字框、日期框、单选框、多选框
    新增文本框类型的自定义字段
    这里写图片描述
    新增数字框类型的自定义字段
    这里写图片描述
    新增日期框类型的自定义字段
    这里写图片描述
    新增单选框框类型的自定义字段
    这里写图片描述
    新增多选框类型的自定义字段的界面可以参考单选框界面。

    看到这里,有一定基础的同志们肯定会有豁然开朗的感觉。
    数据库表中数据如下:
    这里写图片描述
    医疗行业新增用户界面
    这里写图片描述
    快消行业新增用户界面
    这里写图片描述
    运输行业新增用户界面
    这里写图片描述
    点新增客户按钮后,会根据用当前的不同业态自动加载不同的自定义模板,在界面显示不同的业务自定义字段。
    d、涉及相关知识点的剖析和处理
    • 新增不同的自定义字段保存到自定义模板中

    //获取post请求的所有参数以及参数对应的值
       Map<String, String[]> params = request.getParameterMap();  
                JSONObject jsonObject = new JSONObject();
                for (String key : params.keySet()) {  
                    String[] values = params.get(key);  
                    for (int i = 0; i < values.length; i++) {  
                        String value = values[i];  
                        jsonObject.put(key, value);
                    }  
                } 
                String content = jsonObject.toString();

    用上面的代码,新增不同的自定义字段在后台就可以统一处理了,然后将自定义字段的JSON拼装起来。
    • 新增用户时,在后台获取到模板内容,扩展字段怎么显示在前台新增页面。

    后台代码如下:

    String content = customFieldTemplate.getContent();
    request.setAttribute("content", content);

    在页面动态加载自定义模板,页面代码如下:

    <div id="customFieldDiv" class="easyui-panel" title="自定义字段"
                      style="width:96%;height:200px;padding:5px;">
                </div>
    var dataStr = '${content}';
    
            var jsondatas=eval("("+dataStr+")"); 
            var resultHtml = "";
            $.each(jsondatas,function(i,n){  
                if(n.sequence == (i + 1)){
                    resultHtml = resultHtml + '<table class="table" style="width: 100%;">';
                    if(n.type == 'textfield'){
                        resultHtml = resultHtml + '<tr><td><input labelAlign="right" labelWidth="100px;" label="'+n.label+'" style="width:300px;" type="text" name="'+n.fieldName+'" value="'+n.defaultValue+'" class="easyui-textbox" data-options="required:'+n.required+'"/></td></tr>';
                    }else if(n.type == 'numberfield'){
                        resultHtml = resultHtml + '<tr><td><input labelAlign="right" labelWidth="100px;" label="'+n.label+'" style="width:300px;" type="text" name="'+n.fieldName+'" value="'+n.defaultValue+'" class="easyui-numberbox" data-options="required:'+n.required+',min:'+n.minValue+',precision:'+n.decimalPrecision+'"/></td></tr>';
                    }else if(n.type == 'datetime'){
                        resultHtml = resultHtml + '<tr><td><input labelAlign="right" labelWidth="100px;" label="'+n.label+'" style="width:300px;" type="text" name="'+n.fieldName+'" value="'+n.defaultValue+'" class="easyui-datebox" data-options="required:'+n.required+',min:'+n.minValue+'"/></td></tr>';
                    }else if(n.type == 'combobox'){
                        resultHtml = resultHtml + '<tr><td><select labelAlign="right" labelWidth="100px;" label="'+n.label+'" style="width:300px;"  name="'+n.fieldName+'" class="easyui-combobox" data-options="required:'+n.required+'">';
                        $.each(n.singleOption,function(j,m){ 
                            resultHtml = resultHtml + '<option value="'+m.itemValue+'">'+m.itemName+'</option>';
                        });
                        resultHtml = resultHtml + '</select>';
                        resultHtml = resultHtml + '</td></tr>';
                    }
    
                    resultHtml = resultHtml + '</table>';
                }
            }); 
            $('#customFieldDiv').append(resultHtml);
    1. 小结
      自定义字段的另一种解决方案EAV(Entity-Attribute-Value),大家可以百度。
      自定义模板内容和客户表中的护展字段模板数据都是大文本类型(longtext), mysql5.7 支持json,可以将这两个字段改为json类型。另外hibernate映射数据库中的json字段解决方案可以参考http://blog.csdn.net/qian_meng/article/details/48394379。通过上面两点可以对系统进行进一步的优化。
      自定义字段的类型,除文本框、数字框、日期框、单选框、多选框外还可以添加图片、声音、视频等其他类型。
      自定义字段数量很多时,又类型不同,怎样布局,使用页面更美观、舒服也有一定难度。
    展开全文
  • 关于自定义字段数据库设计

    千次阅读 2013-10-31 17:34:16
    请问这种自定义字段数据库应该怎么样去设计。可以相对保证查询效率?     暂时有两种方案: 1. 直接与物理表结构映射, 字段的调整反应在物理表上, 这种数据处理的效率会比较高, 但控制起来比较复杂, 当

    一般企业级管理系统,都会存在某些功能模块数据信息,可以让用户在原有字段上添加N个自定义字段信息(字段名、数据类型、是否必选、排序等)。这些自定义字段信息,可以用于编辑、查询、统计等。

    请问这种自定义字段,数据库应该怎么样去设计。可以相对保证查询效率?

     

     

    暂时有两种方案:

    1. 直接与物理表结构映射, 字段的调整反应在物理表上, 这种数据处理的效率会比较高, 但控制起来比较复杂, 当表中已经有大量数据量, 调整结构的开销会很大

    2. 使用 xml 字段, 表中使用 xml 存储数据, xml 的结构与用户需求的字段做映射, 这种方式数据处理效率会比较低, 相关的数据操作都涉及 xml 的操作, 不过结构调整起来会比较方便

     

    展开全文
  • {"list": [{"type": "input","options": {"width": "100%","defaultValue": "","required": true,"dataType": "string","pattern": "","placeholder": "","disabled": false},"name": "单行文本","key": ...

    {

    "list": [

    {

    "type": "input",

    "options": {

    "width": "100%",

    "defaultValue": "",

    "required": true,

    "dataType": "string",

    "pattern": "",

    "placeholder": "",

    "disabled": false

    },

    "name": "单行文本",

    "key": "1575017955000_4917",

    "model": "input_1575017955000_4917",

    "rules": [

    {

    "type": "string",

    "message": "单行文本格式不正确"

    },

    {

    "required": true,

    "message": "单行文本必须填写"

    }

    ]

    },

    {

    "type": "radio",

    "options": {

    "inline": false,

    "defaultValue": "",

    "showLabel": false,

    "options": [

    {

    "value": "Option 1",

    "label": "Option 1"

    },

    {

    "value": "Option 2",

    "label": "Option 2"

    },

    {

    "value": "Option 3",

    "label": "Option 3"

    }

    ],

    "required": false,

    "width": "",

    "remote": false,

    "props": {

    "value": "value",

    "label": "label"

    },

    "disabled": false

    },

    "name": "单选框组",

    "key": "1575017956000_56800",

    "model": "radio_1575017956000_56800",

    "rules": []

    },

    {

    "type": "textarea",

    "options": {

    "width": "100%",

    "defaultValue": "",

    "required": false,

    "disabled": false,

    "pattern": "",

    "placeholder": ""

    },

    "name": "多行文本",

    "key": "1575017958000_40759",

    "model": "textarea_1575017958000_40759",

    "rules": []

    }

    ]

    }

    展开全文
  • 设计和实现,很大部分是通过数据库和存储过程进行,界面只是让用户选择数据列和设置条件,并把这些内容保存在数据库中,查询是通过存储过程拼SQL语句完成,并把结果集返回。设计结构基础登记表-->查询设置表--&...

    需求

    先说一下需求:实现用户自定义的查询,用户可以自定义要查询的列、自定义条件条件、自定义排序。除了查询使用外,还可以使用于各个需要根据条件进行约束的业务,如权限;

    本设计和实现,很大部分是通过数据库和存储过程进行,界面只是让用户选择数据列和设置条件,并把这些内容保存在数据库中,查询是通过存储过程拼SQL语句完成,并把结果集返回。

    设计结构

    基础登记表-->查询设置表-->存储过程运行

    1b0fc54f3d54eefc9593dd855a95b2a3.png

    表设计

    首先定义基础登记表,基础登记表分为三个部分:表登记、列登记、表间关系登记;

    表登记的数据表包含如下字段:

    字段描述

    字段名

    类型

    说明

    登记表自增长关键字

    id_table

    int

    自增长

    基础表

    tablereg_name

    varchar(60)

    数据库中名称

    基础表中文名

    tablereg_cnname

    varchar(60)

    业务上显示的名称

    关键字段名

    prk_name

    varchar(60)

    关键字字段

    关键字段中文名

    prk_cnname

    varchar(60)

    关键字中文名称

    审核后是否可以删除

    checkdel_flag

    char(1)

    用户控制业务操作

    使用后是否可以删除

    useddel_flag

    char(1)

    用户控制业务操作

    控制操作权限

    belong_type

    char(1)

    用户控制业务操作

    用户可配置

    config_flag

    char(1)

    用户控制业务操作

    业务主表标志

    mainbusiness_flag

    char(1)

    用户控制业务操作

    是否需要审核

    check_flag

    char(1)

    用户控制业务操作

    需要定义审批流程

    checkflow_type

    char(1)

    用户控制业务操作

    审批流程ID

    id_workflow

    int

    用户控制业务操作

    数据库名称

    schema_name

    varchar(100)

    用户控制业务操作

    消息通知标志

    message_flag

    char(1)

    用户控制业务操作

    是否权限控制

    permission_flag

    char(1)

    用户控制业务操作

    列登记的数据表包含如下字段:

    字段描述

    字段名

    类型

    说明

    自增长关键字

    id_column

    int

    自增长关键字

    登记表关键字

    id_table

    int

    归属表的ID

    顺序号

    serial_num

    int

    标示列的顺序

    字段表

    column_name

    varchar(60)

    字段中文名

    column_cnname

    varchar(60)

    数据类型

    data_type

    char(1)

    1 数字;2 字符;3 时间;

    原始数据类型

    data_type_original

    varchar(20)

    记录数据库中的数据类型 如 int datetime 等

    原始列数据类型

    column_type_original

    varchar(30)

    是否权限控制

    permission_flag

    char(1)

    业务使用

    下拉列表ID

    id_list

    int

    标识下拉框的数据源,可以是枚举或是数据源

    表间关系登记表

    字段描述

    字段名

    类型

    说明

    登记表关系ID关键字

    id_tabrela

    int

    自增长

    主表

    id_table

    int

    表的ID

    关联表

    id_table_rela

    int

    表的ID

    主表字段名

    column_name

    varchar(100)

    主表的关键字

    主表字段中文名

    column_cnname

    varchar(100)

    主表的关键字中文名

    关联表字段

    column_name_rela

    varchar(100)

    关联表的关键字,一般是外键

    关联表别名

    relatable_name

    varchar(100)

    关联名别名,显示用

    关联表查询别名

    tableas_name

    varchar(100)

    拼SQL语句时表别名

    这三个表的数据,根据数据库中系统表的内容进行初始化填写。并且开发了一个界面,进行一些业务上的设置,主要是设置表中“用户控制业务操作”的那些字段;

    后续内容请看第二部分;

    展开全文
  • 我的问题就是 to B项目中因为每家客户需求不一样,需要多个自定义字段,这时数据库结构如何设计或者如何实现查询速度等性能方面会好一点? https://ningyu1.github.io/site/post/108-custom-field/ 我目前了解到...
  • c#导出导入excel 自定义字段 自定义列 OleDb方式的excel导入 可以实现自定义字段,不按照模版的方式导出
  • java自定义字段实现

    千次阅读 2019-08-02 15:53:50
    来个需求,要求用户可以添加自定义字段,由于之前没做过相关的代码实现。 当时的第一反应是想着动态添加数据库表字段,越想越不靠谱,搜一下才知道真的是想错了。 这里根据开头给的链接的那篇博文参考实现的需求,...
  • <?... //数据库中查询的记录为二维数组,赋值给$a $a=array(array('aaa'),array('bbb'),array('ccc'),array('ddd','eee')); print_r($a);... //添加自定义字段 } print_r($a); echo "<br>"; ...
  • wordpress可以设置自定义字段,方便扩展功能,wordpress利用巧妙的数据库设计达到这一目的,posts表存放文章,页面和附件等,与之对应的postmeta表用来存储自定义的字段,采用post_id,key,value这样的设计来存放...
  • 自定义获取数据库表字段名称提供一个通过二次开发,自由获取数据集字段名称的接口 com.neusoft.saca.dataviz.chartdata.service.metadatafilter.MetadataFilter,并配置为Spring Bean,添加到运行路径下。...
  • 首先数据库设计Sort字段字段默认值0. 然后查询的时候根据字段的降序排序。假如想对哪条数据进行上升排名只需要往对应的sort字段插入当前的时间戳。 假如想让第一名变成第四名,这时候优势就显示出来了。只需要拿到...
  • NLog自定义字段写入数据库表,示例

    千次阅读 2018-05-07 09:18:00
    //自定义字段写入NLog日志 private void saveNLog(InvokeLogModel model) { LogEventInfo ei = new LogEventInfo(); ei.Properties["InvokeResult"] = model.InvokeResult; ei.Properties["Request...
  • to_python() # 把数据库数据转成python数据 from_db_value() # 把数据库数据转成python数据 get_pre_value() # 把python数据压缩准备存入数据库 get_db_pre_value() # 把压缩好的数据转成数据库查询集 get_prep_...
  • java实体类字段自定义-数据库字段和程序实体类属性不一致解决方案.docx
  • 问题描述需求是这样的:1、由客户来根据需求设计表单内容样式 点击保存后 前端可以生成JSON格式数据,JSON数据如下:{"list": [{"type": "input","options": {"width": "100%","defaultValue": "","required": true,...
  • 数据库表字段自定义

    2014-01-13 09:02:06
    数据库表字段的自定义添加及字段信息,给大家参考
  • 数据库自定义字段及相关检索

    千次阅读 2010-03-31 17:22:00
    应用开发过程中,有时候会有用户可以自定义字段的要求。比如我们对于人员信息的维护提供了姓名,性别,出生日期,备注等基本信息,但客户可能希望自己可以自定义一些字段来保存特定的信息,并对这些信息进行检索。这...
  • 该日志模块包括,提供写文本和写数据库两种模式的基本功能;通过自定义model所需要的字段,记录日志信息; 可以实现记录所需记录的操作、和系统运行过程中出现的异常;
  • PostgreSQL数据库中最有用的功能之一就是创建自定义“视图”,这些视图仅仅是预先定义的SQL查询,它们存储在数据库中并可以在需要时重复使用。因此,以这种方式储存经常使用的SQL查询比每次都手工输入要更有效率而且...
  • log4net 自定义字段保存到数据库 sqlserver2008
  • CakePHP的CustomFields插件 CakePHP 2.x的自定义字段插件。 现在,您可以将自定义字段添加到CakePHP应用和各个模型/控制器中。 如何使用 下载或结帐 您可以下载ZIP文件: ...现在,此插件使用数据库表读取自定义字段
  • 自定义字段/表头,简单自定义表单

    千次阅读 2019-05-22 11:52:55
    项目需求,自定义表头,自由增减字段 表结构: 查询sql: SELECT CONCAT('{',GROUP_CONCAT(CONCAT('"',l.form_item_code,'"'),':',CONCAT('"',l.value,'"')),'}') data FROM lottery_charge_form l WHERE l....
  • 这里用到了MDC,一开始在MDC里面存入这2个自定义字段的值,之后当捕获到异常时,log4j根据级别准备执行上述sql语句以存储信息到数据库中对应的数据表,PID,CURRENTSTATE就是自定义的字段,sql语句中从MDC取值为’%X{...
  • 帝国CMS自定义模型数据库字段

    千次阅读 2013-12-09 10:52:03
    后台-》系统-》数据表与系统模型-》新增数据表这里有了数据表,和模型后在新建模板时,就可以选择该数据表和模型,从而实现自定义数据字段及模型的要求!!
  • wincc连接自定义数据库脚本,用VBS做的,更新数据和插入数据都有
  • 使用Log4net自定义信息(变量或属性或字段)存入数据库,支持log4net1.2.10

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 248,735
精华内容 99,494
关键字:

自定义字段数据库设计