Maison >base de données >tutoriel mysql >Form表单域的动态设计-竖表方式存储数据的优势(3)
在前面(1)(2)中分析了表单域的动态实现。也就是说表单域或者说页面显示的每一个空间不是写死的html标签。而是根据检索数据作循环以及判断动态生成的表单。 那么这种设计的优势在于可以通过直接改变数据库中对表单域的表进行修改来实现页面显示的的表单域
在前面(1)(2)中分析了表单域的动态实现。也就是说表单域或者说页面显示的每一个空间不是写死的html标签。而是根据检索数据作循环以及判断动态生成的表单。
那么这种设计的优势在于可以通过直接改变数据库中对表单域的表进行修改来实现页面显示的的表单域的修改。那么这个动态的表单提交以后,数据的记录又该怎样存储呢?
首先看一下表单域的来源数据表以及页面表单的表现形式:
数据表:
页面的显示:
很显然页面的显示的表单域都是来源于上一张截图的数据表。那么就有如下的问题:
当提交表单的时候这些表单的数据应该如何存储呢?
1.设计包括表单域中28个字段的一张表?但是这样的动态的表单域的设计就是为了能够使表单可以随着不同的需求进行变化 。
如果删除了表单域中的字段到是影响不是太大,如果增加了或是修改表单域的字段,那么表单提交存储到数据库中的时候必然会丢失字段,严重的情况会造成程序的运行错误。
2.采用竖表的方式:
采用竖表的方式分析如下:简历一张专门存储表单value的表。如下图:
这个表单value的表核心的字段是fied_id 和value。
这样一来,当在表单提交的时候,将每一个表单域和value值作为一条记录存储到数据库中。每一次表单提交,实际上是向这个表中插入了多条记录,而这个多条记录组成了表单一次提交的一条数据。
也就说,数据的存储有传统的横向存储,转变成了纵向存储。这样以来就解决了前面第一种方案所不能解决的问题。也使得这样的设计做到了完全的动态话。
在数据显示的时候,只要将根据设定的主键将竖表转换成横向显示就可以了(sql语句实现)
简单的说:竖表存储解决了一个问题:使得动态数据不受横表字段数目固定的限制。