多表头和可变表头(一条信息的数据量大小可变。)该怎么设计数据库的表结构。
我现在有一个表单需要存入数据库。但是客户要求该表单的 表头可变。也就是他要自定义表单。这种情况我该怎么为这张表单设计表结构了?同时该表单中的所有字段都要参加计算的,有些项的值是其他项通过计算得出的。虽然是简单的加减乘除,但是客户要求可以自动的计算。小弟用的Spring MVC+JPA 数据库mysql 或者 oracle
一般一个表单中的字段分为固定的字段和 动态的字段。 将固定的字段,设计成一张表,称为主表。 将动态的字段放在放在一张关联表。 这个关联表像数据字典一样。
字段有 id code value 设计成字符串类型。 具体的类型转换 可以通过 编程语言或者sql来进行转换和计算。 我在公司就是这么做的。
每种数据类型多准备一些,比如50个字符串,50个int,50个boot等要用到的类型,然后做一个记录表,在用户定义表头时记录用户都分别使用了多少列
在计算的时候动态生成SQL语句来完成计算
每种数据类型多准备一些,比如50个字符串,50个int,50个boot等要用到的类型,然后做一个记录表,在用户定义表头时记录用户都分别使用了多少列
在计算的时候动态生成SQL语句来完成计算
自定义表单。这种情况我该怎么为这张表单设计表结构了?
答:这种情况可以用一个明细表来保存,明细表里要主键,字段和值,然后动态加载到表单上,也可以在数据库中多设计几个字段,弄一个设置表,用户设置后显示相应的值
表单中的所有字段都要参加计算的,有些项的值是其他项通过计算得出的
答:这个可以通过Js来实现公式解析及执行,可参考
http://www.jb51.net/article/19982.htm
两种方式
(如 你想保存 "姓名"、"性别"、"年龄"三列,列数不固定)
1、将常用的横表变成纵表
常用的就是 数据库中设计三列 name,sex,age
现在数据库里面设置 为 key,value
因此保存为
key value
name 张三
sex 男
age 18
这样即使你列不固定,添加数据即可
不过这样你在取数据的时候要进行一次行转列
2、就是"chuqiang1101"和"PB人生"说的那样,设计两张表,做一个关联
每种数据类型多准备一些,比如50个字符串,50个int,50个boot等要用到的类型,然后做一个记录表,在用户定义表头时记录用户都分别使用了多少列一般一个表单中的字段分为固定的字段和 动态的字段。 将固定的字段,设计成一张表,称为主表。 将动态的字段放在放在一张关联表。 这个关联表像数据字典一样。