1

Webページに入力された値に基づいて作成された列を使用して、データベースに動的にテーブルを作成できますか?

実際には、ユーザーがフォームやテンプレートを作成したり、リンクをメールで送信して他のユーザーからデータを取得したり、データベースに保存したりできるアプリケーションを作成する必要があります。各ユーザーは、異なるフィールドを使用して異なるフォームを作成し、それを多くの人に送信して、データを入力してフォームを送信することができます。フォームごとにフィールドが異なるため、データを保存するにはどうすればよいですか?

4

2 に答える 2

3

その場でテーブルを作成するよりも、そのデータが静的なテーブルでどのように表現されるかを確認する方がよいでしょう。

どうですか:

  • 「id」、「user_id」、「created」、「modified」などを含む「forms」というテーブル。
  • 「id」、「form_id」、「type」、「label」、「required」、「properties」などを含む「fields」というテーブル。
  • 「id」、「form_id」、「field_id」、「answer」などを含む「answers」というテーブル。

そうすれば、大量の構造的 SQL を実行するのではなく、結合に依存します。あなたの正気はあなたに感謝します。

于 2009-04-02T19:11:30.050 に答える
1

はい、できます。これは CakePHP に限ったことではありません。必要なのは、列を作成して削除するための SQL コードを知っていて、その SQL を query() 呼び出しに入れることだけです。

このページはあなたの友達です。

あなたがそれをすべきかどうかは別の問題です。通常、実行時にデータベースやテーブルの構造を変更するべきではありません。インストール時またはアップグレード時にのみ変更してください。たとえば、達成する必要があるのは、ユーザー プロファイルなどのためにカスタム フィールドを作成できるようにすることである場合、実行時にテーブル構造を変更することは答えではありません。すべてのカスタム フィールドを含む別のテーブルと、すべての値とフィールド ID およびユーザー ID を含むテーブルを用意します。これは、これを正規化する適切な方法です。はい、1 つではなく 3 つのテーブルが含まれますが、たとえば、列 user_customfield1、user_customfield2、user_customfield3 をすべて 1 つのテーブルに配置し、実行時にその構造を変更するよりも優れています。

于 2009-04-02T07:02:21.590 に答える