这种情况如何判断是否需要更新 表结构 , 更新了会影响之前的数据吗
这种情况怎么判断是否需要更新 表结构 , 更新了会影响之前的数据吗?
业务环境: 由客户去订制好表单模板(拖拽组件的方式),最终动态生成前端表单。 现在,需要根据不同的表单模板的名,用户设计好一张表单,数据库里动态创建一张表存储用户填写的value。
上面的需求基本上是能完成的,但是当用户更新订制的表单模板,模板名不变,表单模板的结构变了 数据库中按照表单模板名 创建的存储value的表肯定在结构上要发生变化。
现在就是想问问,有什么好的业务逻辑去帮忙判断这个存储value的表应该更新?比如我更新了模板,多添加了一行一列。
表单模板: Name Date
Sex Age
这是两行两列的模板,最终动态生成前端表供用户填写。表单模板的名称会存储到数据库如:
NAME_
Name
Date
Sex
Age
设计的存储数据的表是根据表单模板的名称在java代码里拼sql建的:
id_ Name Date Sex Age
xx xx xx xx xx
现在就是要解决更新的问题,比如表单模进行更新,新增加了一行一列 Address
那应该这样
id_ Name Date Sex Age Address
xx xx xx xx xx
yy yy yy yy yy yy
当然还有种担心的是: 存储数据的表更新其实是表结构发生变化,如果之前存储了很多数据,在添加新的列字段的时候,写什么sql语句,不会让我之前存储的数据受到影响? 有改变表结构还能维护好之前存储的数据的 sql语句吗?
------解决方案--------------------
我觉得,如果是改表结构的话,直接Alter Table就可以了。
另外,其实可以用这样的表结构,可以一步到位适应不同的字段:
TemplateTable --记录模板
( template_id, --模板编号
column_name, --字段名
allow_null
position_x ,position_y --字段在模板中的位置
...
)
ObjectTemplate --对象类型/模板的对照关系
(object_type, template_id)
ObjectMain --对象记录表
(object_id, --对象编号
object_type, --对象类型
...
)
ObjectContent --对象内容表
(object_id,
column_name,
value
)
业务环境: 由客户去订制好表单模板(拖拽组件的方式),最终动态生成前端表单。 现在,需要根据不同的表单模板的名,用户设计好一张表单,数据库里动态创建一张表存储用户填写的value。
上面的需求基本上是能完成的,但是当用户更新订制的表单模板,模板名不变,表单模板的结构变了 数据库中按照表单模板名 创建的存储value的表肯定在结构上要发生变化。
现在就是想问问,有什么好的业务逻辑去帮忙判断这个存储value的表应该更新?比如我更新了模板,多添加了一行一列。
表单模板: Name Date
Sex Age
这是两行两列的模板,最终动态生成前端表供用户填写。表单模板的名称会存储到数据库如:
NAME_
Name
Date
Sex
Age
设计的存储数据的表是根据表单模板的名称在java代码里拼sql建的:
id_ Name Date Sex Age
xx xx xx xx xx
现在就是要解决更新的问题,比如表单模进行更新,新增加了一行一列 Address
那应该这样
id_ Name Date Sex Age Address
xx xx xx xx xx
yy yy yy yy yy yy
当然还有种担心的是: 存储数据的表更新其实是表结构发生变化,如果之前存储了很多数据,在添加新的列字段的时候,写什么sql语句,不会让我之前存储的数据受到影响? 有改变表结构还能维护好之前存储的数据的 sql语句吗?
------解决方案--------------------
我觉得,如果是改表结构的话,直接Alter Table就可以了。
另外,其实可以用这样的表结构,可以一步到位适应不同的字段:
TemplateTable --记录模板
( template_id, --模板编号
column_name, --字段名
allow_null
position_x ,position_y --字段在模板中的位置
...
)
ObjectTemplate --对象类型/模板的对照关系
(object_type, template_id)
ObjectMain --对象记录表
(object_id, --对象编号
object_type, --对象类型
...
)
ObjectContent --对象内容表
(object_id,
column_name,
value
)