ソフトウェアで、Web インターフェイスを介してユーザーが設計したフォームを作成できるようにする必要があります。つまり、質問、タイプ (テキスト、ラジオ、チェックボックスなど)、必要に応じてオプション (ラジオ/チェック) を作成し、追加して、フォーム内のすべてのフィールドを作成するまでこのプロセスを続けます。
表示/入力/印刷以外にクエリは実行されません。つまり、無制限に入力できる「アンケート」が追加されます (20 回、数百万回の場合もあります)。
いくつかの調査の後、EAV タイプのソリューションは良さそうに思えましたが、それについては否定的な見方がたくさんあります。多くの人が、この種の状況で NoSQL データベースを使用することを提案していますが、私には利点がまったくわかりません。多くのフィールドを含むフォームがあり、その後、多くのフィールドを含む結果が得られます。
一部のフィールド (text/text_area/date) には 1 つの可能な値がありますが、多くのフィールドには複数のオプション (ラジオ ボタン、ドロップダウンの選択、チェック ボックス) があります。
従来の SQL でのサンプル設計を次に示します。
フォーム: Creator_id、名前
form_field: form_id、order、question、type (テキスト、text_area、date、radio、select、check)
form_field_option: form_field_id, name, value, order (これはラジオ/選択/チェックに使用されます)
form_result: form_id, application_id (私が使用する名前ではありませんが、すべての結果は「アプリケーション」に属します)
form_field_value: form_result_id, form_field_id, form_field_option_id, value (オプションのフィールドの値が空白の場合、テキストのフィールド form_field_option_id は空白になります)
これに基づいてフォームを作成し、結果を取得するのはかなり簡単に思えます。正確に効率的である場合とそうでない場合がありますが、典型的な形式は 5 ~ 30 の質問です。
これを NoSQL データベース、つまり Mongo などに配置する利点はありますか? もしそうなら、それらが何であるかの具体例とサンプルデザインを教えてもらえますか? 「これには NoSQL の方が適している」などの回答をたくさん見てきましたが、この分野での経験はありません。結果の取得が速いためですか、それとも何ですか? また、NoSQL を使用するとどのような欠点が生じるのでしょうか?
ありがとう