2011-01-20 49 views
0

首先我認爲這個問題可以與任何語言,但我指定我所用的東西。動態測量應用邏輯PHP/MSSQL

對不起,如果我也開始擔心,但我想找出構建動態調查管理系統的最佳方法。 我的客戶基本上對我說,該數據已被存儲在MS SQL作爲他的客戶端只得到了MS SQL連接器SAS,這是要幹什麼報告。

我的邏輯到目前爲止是這樣的: 1st。設置調查本身,即要求標題,快速瀏覽等,等等。 2nd。定義你的問題。 3rd。發佈調查。

到目前爲止,我所做的工作是當他們「發佈調查」時,我爲這項調查創建了一個專用的數據庫表格,其中將包含響應。 從這個管理員的一面,他們將無法修改的問題,也許問題的標題,但也差不多了。他們不能添加/刪除問題。

問題是,創建個人數據庫表是一件好事嗎?我唯一擔心的就是說管理員創建了30個問題,我將在該專用表中創建30個列。爲了解決這個問題,SAS系統很容易爲數據提取報告。管理員不會在管理面板中看到調查回覆。

回答

2

我也做了一個語言考試的分級類似的東西。我選擇了用下表

+------+ +-------------+ +-------------+ +-------------+ +----------+ 
| 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  | 
                +-------------+ 

這種模式讓我easilly有15個問題的考試,30題考試和50題的考試更靈活的方法。爲了適應這種模式的調查,你可能只需要刪除isAnswer和isGood一部分,你應該是好的,有像年齡,收入,性別匿名通用數據取代用戶數據。

0

根據文檔中的註釋,PHP中的MS SQL Support最好不過。 PHP是您被允許用於該項目的唯一語言嗎?如果不是的話,你可能會考慮使用C#,VB.Net或更多與SQL Server兼容的東西。否則,您最初可能會將數據存儲在MySQL中,並在您需要執行分析時將其導出到MS SQL Server。

+0

我在問客戶端使用MYSQL,但顯然他的客戶端已經爲MSSQL購買了連接器。不要誤會我的意思,我也不是PHP/MSSQL的忠實粉絲:-(我可能會考慮MYSQL,然後導出到MSSQL中,但取決於SAS將如何經常做它的魔力 – PHPology 2011-01-23 21:35:59

0

不知道,如果我真的能理解你的問題。但我曾經建立過這樣一個調查系統。而且它出來相當快,易於使用有關以下表(如果我沒記錯的話):

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

的SAS將獲取從虛擬的任何表中的數據。如果一個或兩個表中的所有內容都會更容易。

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(這可能是真/假的測試或對調查的數值) option_label

table_users ID 用戶名 通 名

table_answers ID options_fk(外鍵table_question_options) users_fk (外鍵table_users)

這樣,一切都連接在一起(的選項,或疑問或東西不重用到不同的調查)

+0

我明白傑夫和你是什麼說,並且爲了公平地表達我的想法,我會創建一個表來存儲所有回答的問題,但由於這個SAS系統,我認爲這是一個不錯的選擇,我並不是真的想要創建多個表並且通常從來沒有這樣的代碼,我真的想要其他人的意見:-) – PHPology 2011-01-23 21:32:32

0

恕我直言,以基比,PHP/MSSQL的支持其實是很不錯的。我們經常這樣做,性能最好的PHP/MySQL和匹配編譯的C#/ MSSQL(在我們非常有限和不科學的測試中)。這假設你在Win機器上運行PHP。用TLS連接器運行PHP到單獨的MSSQL框是另一個蠟球,並且可能是一個配置的痛苦。

無論如何,我們有一個類似的場景,用一張桌子來管理窗體(Form w/FormID作爲主窗體),另一個管理字段/問題(Fields w/FieldID,FieldType如Y/N,選擇等),另一個將一個字段「分配」給一個表單(FormFields w/FormFieldID,FormID,FieldID,數組中的參數用於選擇項目等)。然後又一組表格來處理回答問題。

我同意小組的其他成員。確保正常化,並且不要爲每個問題創建單獨的列。開始時它會有更多的工作,但是當您只需向表中添加幾行而不是重新編寫查詢並重新設計表格時,您會感激不盡。

+1

並且道歉的人在問題發佈六個月後回覆!我的錯。 – 2011-05-27 16:06:36