我有一个包含大约500多个字段的表单(这是一个10页的表单,不同的数据类型)。你能告诉我关于从表格中存储数据的最佳方法吗?我可以在多个逻辑上划分的表中创建500个字段,但这看起来很多(或者这可能是最好的方式?!),因为我有一些这些表单。我正在研究序列化数据并存储在longtext mysql字段中。这将有其缺点(我想的是,如果客户希望将来搜索单个字段),但它似乎是一个非常快速的解决方案。如果您愿意与您分享类似情况的经验,我将不胜感激。
答案 0 :(得分:3)
假设您不希望用户一次性填写表单!因此,您需要某种工作流程来存储草稿并修改以前的副本等。
同时假设表格的某些部分是可选的。
您可以使用主表定义一组数据库表,以跟踪状态,用户名等,以及表单的每个可选部分的子表。
或者您可以定义一个XML模式,其中包含表单中的所有可能字段等,以及一些状态信息。
如果你总是处理整个表单并且不想搜索你的表单集合那么XML的结果稍微好一点,因为有一些漂亮的技巧可以将数据从XML移动到HTML表单然后再返回。如果您需要根据表单中的值进行搜索,那么最好使用基于SQL的解决方案。
答案 1 :(得分:2)
您可能需要500列 - 除非它们可以放在其他表中。没有看到你的要求就很难说清楚。
序列化它将使得使用数据库的优势之一变得不可能 - 查询某些列值。
答案 2 :(得分:0)
create table profile_details (
user_id number,
field_name varchar,
field_value varchar
);
现在,您不仅不受字段数量的限制,而且在开发和维护应用程序时,您还可以随意添加和删除它们。
select firstname, lastname, zipcode
from profiles p
join profile_details d1 on (p.user_id=d1.user_id)
join profile_details d2 on (p.user_id=d2.user_id)
where d1.field_name='hobby' and d1.field_value='fishing'
and d2.field_name='income' and d2.field_value>cast(250000 as number);