首页 > 编程知识 正文

动态表单数据库设计,mysql系统数据库

时间:2023-05-06 10:00:24 阅读:13298 作者:720

使用联机编辑器设计的表单包含必须存储在数据库中的信息,如输入框、明细表(动态添加行)等。 现在有三种想法。

1 .一个表单对应于数据库的一个或多个物理表(主从表)。 这个设计在很多业务的情况下,其数据库的物理表会不断膨胀。 另外,在修改表单时,还需要修改对应的物理表结构。 如果物理表中有很多数据,更改物理表)方案将锁定该表,并且联机APP将访问这些表。

2 .使用在一张物理表中保存有与所有表单对应的字段信息和对应的值的横表纵向存储的想法。 这种好处是,在扩展表单的情况下,例如,在添加字段的情况下,只需要在这样的表中插入一个数据,但随着表单的增加,该表的信息量将增加到倍数级别,同时数据统计查询将在以后的数据呈现中进行

3 .使用当前方案自由数据库和否SQL数据库存储表单域和值(key:value )。 这样修改表单很方便,但是为了存储数据,每次都需要解析html中需要将哪个字段(key )存储在数据库中,以及其值是什么。 另外,关于以后的数据统计,报告的提示也像mongodb那样难以实现

有人做过失眠滑板相似的动态表单设计师,可以说一下你的实现构想吗?

讨论1

第一种方法是没有发生

第三个其实是个好方法,接触过类似的海外网站。 它是一个完全基于nosql的数据库,易于扩展,许多高级数据库对报告的支持也不差

第二种方法稍微详细一点说,很多市面上的定制报告软件或工具都是基于这一设计。 虽然进行过相关项目,对复杂表单的支持稍弱,但基础表单还没有问题。 模仿数据库设计,定义表,定义表字段,定义表字段。 然后,实例表(TableInstance )和实例属性表(tableFiledInstance ),fieldInstance与TableInstance和fiedConfig、fiedConfig 对该设计可以固定封装crud,达到了与数据库操作一致的效果。 扩展关系表时,楼主可以创建更多的外键清单和外键实例表,但如果支持复杂的表结构,上述封装将变得相当复杂

讨论2

一个方案,类似于你的第二种方式吧,但也有缺点。 准备两块表。 在扩展旁边的表、表a和表单时,例如在添加字段时,在此表中插入数据。

另一块表。 表b用于成功存储数据。 字段名不再与业务有关,全部用于key1、key2、key3……等。 与表a中的表单field name一一对应。 表2的列也可以预先准备n列。 表2中的列不够后,向程序中动态添加m列。

让我先阐述一下优点。 与你的第一个方案相比,修改表格结构的次数大大减少了。 此外,如果预先准备的列足够,则不需要修改表结构。 然后,存储数据的表2仍然是常见的关系结构,因此不会影响数据统计查询的核心sql。

核心sql不受影响。 因为这个方案的缺点也很明显。 对每个查询进行表a到表b的关联。 首先,从表a中获取要选择的表名以及哪个key1、key2、key5和key6。 然后根据这些从表2中获取数据。 还是有点麻烦。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。