4

私たちが構築しているオンライン アプリケーション (php & mysql) では、ユーザーがデータ キャプチャ用の独自のフォームを作成し、既存の ORM を尊重して、このデータをデータベースに記録できる必要があります。

フォームが「ハードコーディング」されている場合は、正規化されたデータを自分で格納するように db テーブルを設定するだけですが、ユーザーがフォームに含まれるフォーム フィールドを定義するため、どの方法で実装するのが最善かわかりません。この機能。

DB 用にある種のメタデータまたはデータ抽象化レイヤーについて考える必要がありますか? Google は、これをどのように行う必要があるかについて確信が持てないため、あまり役に立ちませんでした。

正しい方向への指針をいただければ幸いです。

4

2 に答える 2

1

多くのコンテンツ管理システムは、さまざまな方法でこの問題に対処しています。

たとえば、Drupal では、ユーザーはCCK モジュールを使用して独自のカスタム コンテンツ (カスタム フォームを使用) を作成できます。モジュールは、ユーザーが作成できるさまざまなタイプのフィールドを定義し、データを格納する特定のデータ タイプのテーブルを生成します。

いくつかのヒント:

  1. フィールドの種類を定義する- ユーザーがさまざまなフィールドの種類 (選択ボックス、文字列、ラジオなど) を選択できるようにすることを検討してください。

  2. ユーザー定義フィールドのテーブルを作成する- 各フィールド タイプには特定の SQL データ タイプがあります。これらのデータ型を使用してテーブルを定義します。たとえば、選択ボックスが列挙型にマップされ、入力テキスト要素が varchar 列にマップされる場合があります。

  3. 新しいテーブルにデータを追加する- 新しいテーブルを使用して、ある程度正規化された方法でデータを保存します。

もちろん、さまざまなアプローチがありますが、これらはいくつかの提案にすぎません。

于 2009-11-20T16:10:03.897 に答える
1

私は自分の問題の解決策を見つけたと思うので、同様の問題に遭遇したすべての人のために、次の記事を見てください -

http://www.adaniels.nl/articles/an-alternative-way-of-eav-modeling/

http://weblogs.sqlteam.com/davidm/articles/12117.aspx

お役に立てれば。

于 2009-11-23T15:34:15.120 に答える