动态调查应用程序逻辑PHP / MSSQL

时间:2011-01-20 14:44:47

标签: php sql-server sas survey

首先,我认为这个问题可以与任何语言相关,但我指定了我正在使用的内容。

对不起,如果我也开始厌烦,但我正在努力寻找建立动态调查管理系统的最佳方法。 我的客户基本上已经告诉我,数据必须存储在MS SQL中,因为他的客户端只有SAS的MS SQL连接器,它将进行报告。

到目前为止我的逻辑是这样的: 1。设置调查本身,即询问标题,快速概述等。 第2位。定义你的问题。 3。发布调查。

到目前为止,我所做的是,当他们“发布调查”时,我已经为此次调查创建了一个专门的数据库表,用于存储响应。 从管理方面来看,他们将无法修改问题,也许是问题标题,但这是关于它的。他们无法添加/删除问题。

问题是,创建单个数据库表是一件好事吗?我唯一担心的是,管理员创建了30个问题,我将在该专用表中有30列。为此,SAS系统可以很容易地为报告提取数据。管理员不会在管理面板btw中看到调查回复。

5 个答案:

答案 0 :(得分:3)

我为语言评分考试做了类似的事情。我选择使用以下表格进行更灵活的方法

+------+    +-------------+    +-------------+    +-------------+    +----------+
| Exam |    | Question    |    | Choice      |    | Answer      |    | User     |
+------+    +-------------+    +-------------+    +-------------+    +----------+
| id   |    | id          |    | id          |    | id          |    | id       |
| name |    | questionNb  |    | choice      |    | user_id     |    | name     |
+------+    | question    |    | question_id |    | exam_id     |    | email    |
            | exam_id     |    | isAnswer    |    | question_id |    | password |
            +-------------+    +-------------+    | choice_id   |    +----------+
                                                  | isGood      | 
                                                  +-------------+ 

这个模型让我轻松地进行了15个问题考试,30个问题考试和50个问题考试。要使此模型适用于调查,您可能只需删除isAnswer和isGood部分,您应该做得很好并用匿名的一般数据(如年龄,收入,性别)替换用户数据。

答案 1 :(得分:2)

为每个问题创建一个列是完全错误的,在运行时为了面向业务目的而改变数据库是“永远不会做”。 阅读关于“关系数据库”的内容应该是这样的:

table_surveys ID survey_name

table_questions ID fk_survey(table_surveys的外键) QUESTION_TEXT (问题值?也许)

table_questions_options ID question_id(table_questions的外键) option_value(测试时可以是true / false,也可以是调查的数值) option_label

table_users ID 用户名 通过 名称

table_answers ID options_fk(table_question_options的外键) users_fk(table_users的外键)

这样一切都联系在一起(没有重复使用选项,或问题或内容进入不同的调查)

答案 2 :(得分:0)

根据文档中的评论,PHP中的MS SQL Support充其量是最好的。 PHP是唯一允许用于项目的语言吗?如果没有,您可能需要考虑使用C#,VB.Net或与SQL Server更兼容的东西。否则,您最初可以将数据存储在MySQL中,并在需要进行分析时将其导出到MS SQL Server。

答案 3 :(得分:0)

不知道,如果我真的理解你的问题。但我曾经建立过这样一个调查系统。关于以下表格(如果我没记错的话),它的发布非常简单快捷:

USER, SURVEYS, QUESTIONS, ANSWERS, [some mapping tables]

SAS将从虚拟任何表中获取数据。如果一个或两个表中的所有内容,它甚至会更容易。

答案 4 :(得分:0)

对Kibbee充满敬意,PHP / MSSQL支持实际上非常好。我们经常这样做,性能优于PHP / MySQL并匹配编译的C#/ MSSQL(在我们非常有限和不科学的测试中)。这假设你在Win机器上运行PHP。使用TLS连接器将PHP运行到单独的MSSQL框中是另一个问题,可能很难配置。

无论如何,我们有一个类似的场景,并使用一个表来管理表单(表单作为主要的FormID),另一个管理字段/问题(字段w / FieldID,字段类型,如Y / N,文本,选择等等,以及另一个“分配”字段到表单(FormFields w / FormFieldID,FormID,FieldID,数组中的参数选择项目等)。然后是另一组表来处理问题的回答。

我同意该组的其他成员。确保规范化,不要为每个问题创建单独的列。最初会有更多的工作,但是当你只需要在表格中添加几行而不是重新编写查询并重新设计表格时,你会感激不尽。