私は Cakephp を使用しており、ユーザーが独自のフォームを設計できるようにする必要があります (これはセットアップ ウィザードの段階で 1 回だけ行われ、実際の使用では約 12 のフォームが作成されます)。常に必要になるテーブルは、ユーザー、グループ、およびログ、設定です。事実上、これはユーザー フレンドリーなデータベース アプリです。
ビューを作成し、フォームとそれに続くデータを格納するための2つの実際のテーブルを用意することを考えていました:
Forms [id | name | structure ]
[1 | Details| {id:{type:key}q2:{type:text;validation:{select:male..}..} ]
[2 | Car | {id:{type:key};car:{type:text;validation:{select:Honda... }}]
列「構造」には、フィールド、タイプ、および検証ルールをリストする json または xml 文字列が含まれます。
Forms_data [id | form_id | survey_id | key | value ]
[1 | 1 | 1 | q1 | Male ]
[2 | 1 | 1 | q2 | 1/1/76]
[3 | 2 | 1 | Car | Honda]
[4 | 2 | 1 | Eng | Petrol]
[5 | 1 | 2 | q1 | Fem ]
[6 | 1 | 2 | q2 | 2/3/81]
[7 | 2 | 2 | Car | Ford ]
[8 | 2 | 2 | Eng | Diesel]
Forms_data テーブルには、フォームの各フィールドのデータが含まれます。survey_id は、フォームの対象者を意味します。調査対象の 1 人は、それらについて多くのフォームを作成できます。キーは varchar になりますが、値は可能な限り最大のデータ型 (「段落テキスト」など) のサイズである必要があります。
または、(params/sanitised などを介して) ユーザーに「CREATE TABLE」を実行させ、データベースに実際のテーブルを作成させて、システムのクエリと最適化を最大限に活用し、cakephp ですべての魔法の機能を動作させる必要がありますか?