2013-08-07 45 views
-1

我試圖想到一種設置調查類型的好方法。一個要求是基於其他問題的值彈出問題,例如,如果用戶回答問題A的值爲「是」,那麼在更遠的道路上,他們將被問到questionX。這個答案需要是強制性的(儘管questionA本身可能不是強制性的)。調查數據庫設計 - 基於來自其他問題的答案的條件問題

現在我正在試圖決定是在數據庫層上實現這些條件還是按照limesurvey的方式執行這些操作:在運行時添加簡單的表達式,以便在questionX這個字段爲questionA.value == "YES",但它可能變得像questionA.value == "YES" || (questionZ.value == "NO && questionF.value > 30)那樣複雜。

除了在運行時手動解析這些表達式出現的明顯併發症,還有其他可能會遺忘的問題嗎?

回答

0

我確定如果你問10個人,你會得到10個不同的答案,但我會把調查邏輯放在應用層而不是數據庫中。

從個人經驗來看,績效很可能不會成爲您最大的挑戰。圍繞業務規則維護代碼將是最困難的事情。

我的建議是將規則/邏輯放在應用程序層,以便您可以很好地維護應用程序。將這種邏輯放入數據庫非常複雜。

評估運行時語句和布爾表達式是否會影響性能。只要確保你沒有過度循環數據集,我相信你會沒事的。