【问题标题】:best way to store survey data?存储调查数据的最佳方式?
【发布时间】:2009-02-10 23:22:17
【问题描述】:

我正在开发一个非常小的调查应用程序,可能是 3-4 页的 Web 应用程序。所以我的问题是保存调查数据的最佳方法是什么?

顺便说一句,到目前为止,我想出了以下方法。

  1. 保存到数据库并将每个调查标记为未完成。当用户提交最后一份调查表时,检查调查的完整性,如果完成则将其标记为完成。

  2. 保存到会话,而不是在用户提交最后一份调查表时保存到数据库。

您如何看待这些方法?

【问题讨论】:

    标签: web-applications survey


    【解决方案1】:

    我对这类事情有些头疼,如果可能的话,我建议不要使用 Sessions。当您的网站流量适中时,或者如果 ASP.NET 只是喜欢它,您可能会发现您丢失了所有会话,因为 .NET 试图释放一些内存。

    我会尽快将其放入数据库中。使用 Guid.NewGuid() 生成一个唯一的不可猜测的键,您可以在查询字符串中从一页传递到下一页:这将是您从数据库中检索记录的键。

    另外两个你没有考虑过的选项:

    1. 将响应从一页发布到下一页。 (这可能比它的价值更麻烦。)

    2. 使用 asp:Wizard 控件。这样,您的 3-4 页实际上将是单个页面上的 3-4 个步骤。每个阶段的数据都会自动为您存储在 ViewState 中,因此当您进入最后一步时,您仍然可以访问第一步的输入字段。

    (不过,我仍然会选择您的选项 1。)

    【讨论】:

    • 我会选择第一个选项,因为它比会话更强大。 guid(唯一标识符) 好主意,我会将 guid 添加到表中,因为它将完全消除会话的需要。谢谢
    【解决方案2】:

    如果您预计您的应用程序将来可能会增长(提供更长的调查,甚至可能以用户可以在“中间”结果相同并稍后恢复的形式),我肯定会选择数据库选项。

    【讨论】:

      【解决方案3】:

      不要为此使用会话。微软有一个很好的例子,说明如何不在他们在 TechEd 使用的应用程序中进行调查。每次您必须考虑答案时,会话都会超时。使用 ajax,保存每个答案,甚至是部分答案。如果您遇到数据库性能问题,请在一定时间内收集所有调查的所有答案,并将它们保存在一起。 使用一些 javascript,您可以仅在过去几秒钟内发生更改或在窗口关闭之前对服务器进行回调。

      当然,除非你有回答问题的时间限制。

      【讨论】:

        【解决方案4】:

        这是我的做法:

        • 我从数据库中生成“问题”,因此只有一页用于显示不同的问题。
        • 只要用户单击“下一步”,我就会保存每个问题的答案。这有一个很大的优势,即用户可以回来并从她离开的地方开始。
        • 我使用指针跟踪进度,该指针与保存结果一起更新。
        • 我不使用会话,因为我不想冒丢失数据的风险,也不想占用内存。
        • 当指针 == 问题数时,标记为已完成。

        【讨论】:

          【解决方案5】:

          如果您希望他们能够在调查中途保存他们的结果并在另一个时间回来完成它,那么您必须存储调查的开始时间和结束时间才能知道他们完成它。到目前为止,您还必须存储它们的所有值。

          由于它很小,我会保留它在会话中,然后在完成后将其保存到数据库中。

          【讨论】:

            【解决方案6】:

            我认为第二个选项是您最好的选择。如果您的网站访问量很大,选项 1 会给数据库带来更大的压力,并且还会因为不完整的调查而使数据库变得混乱。 Sessions 听起来是一个更好的选择,因为实际上,除非数据完整,否则您不想要数据,对吗?

            【讨论】:

              【解决方案7】:

              两者看起来都不错,这取决于您期望用户做什么或期望用户表现什么。

              第一种方法将允许用户返回(即使在关闭浏览器后)以完成调查。这是一个好点,如果您的调查很大并且用户在迷失在其他事情之前无法完成它,但如果您想强迫用户完成,这也是一个负面点,我的意思是,如果您不希望不完整调查。

              第二种方法强制用户在开始调查的同时完成调查。如果您的调查很快并且您想要有关它们的完整数据,这是一个很好的观点,但如果您的调查很长并且通常用户在完成它之前会分心,那就不好了。

              我会说每页的问题数量将是我在两种方法之间进行选择的决定因素,也许你也可以。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2018-12-01
                • 2013-09-10
                • 2014-07-28
                • 2012-05-10
                • 2011-11-26
                • 2018-12-11
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多