如何让灵活的html表单字段轻松运行sql报告?

时间:2010-12-06 12:35:54

标签: html database architecture webforms

我正在建立一个允许申请人提交申请表的网站。申请表的字段需要灵活,以便进行更改。

传统方法是将每个表单字段映射到数据库列,但随着系统发展引入新字段,这在增长方面非常有限。在引入新列时,由于“缺少数据”,现有数据库行将具有空值或某种“默认”值。

但是,如果我将字段设为键/值驱动方法,则稍后进行报告将非常困难。

所以如果有人做过类似的实施,我正在寻找一些建议/建议。感谢。

示例1(字段 - >列):

  

应用表单可能包含以下内容   字段:

     
      
  • 名字
  •   
  • 姓氏
  •   
     

和相关的数据库表   如下所示:

     
      
  • first_name nvarchar(255)
  •   
  • last_name nvarchar(255)
  •   

示例2(键/值对):

  
      
  • first_name(键列),john(值列),文本框(类型)
  •   
  • last_name(键列),smith(值列),文本框(类型)
  •   

我发现了一些像polldaddy.com wufoo.com这样的例子,它允许动态的web / html表单生成,但我认为在我的情况下,由于报告要求,它们是无用的。我认为它们的实现与我的“示例2”类似。

更新

我找到了this project (mvc dynamic forms),我相信这些概念与我需要达到的相似。我将深入了解该项目。

1 个答案:

答案 0 :(得分:1)

为了运行应用程序(请参阅OLTP),您将需要使用您提到的键/值对方法,这是在灵活性方面实现所需要的唯一合理方法(并且具有系统这是可维护的。)

解决报告问题的一个好方法是为事务(OLTP)和报告(OLAP)位分别设置数据库模式。 Differnet模式并不意味着不同的物理数据库 - 尽管在某些时候将它们分开可能是有意义的。

然后你会有某种ETL进程在两者之间迁移数据(从OLTP源到目标OLAP表)。

如果将OLTP,OLAP和ETL逻辑保存在同一个位置,将更容易管理并保持良好的清洁分离。或者,您可以将ETL逻辑构建到您的应用程序中 - 它实际上取决于您如何构建解决方案的其余部分(您是否完全抽象出数据访问)以及您的驱动程序是什么(这是一个内部工具) ,基于云,或者它是人们部署到自己的工具包上的系统。

单独的OLTP / OLAP设置的美妙之处在于它们都适合于各自的工作 - 而不会影响另一方。