0

多数のカテゴリを含む Web サイトを構築しており、それぞれに固有のフォーム フィールドがあります。カテゴリが非常に多いため、それらのフォーム フィールドをデータベースに保存したいと考えました。

  1. カテゴリはcategoryテーブルに格納されます。

    id | name
    -------------
    1  | Car info
    
  2. そのカテゴリのフィールドはcategory_fieldテーブルに格納されます。

    id | fk_id_category | type  | label
    -------------------------------------------------------------
    1  | 1              | text  | Your name
    2  | 1              | radio | What type of car do your drive?
    
  3. category_fieldユーザーが選択できる定義済みのオプションがいくつかある場合、これらはcategory_field_optionテーブルに格納されます。

    id | fk_id_category_field | label
    -----------------------------------------
    1  | 2                    | 'Convertible'
    2  | 2                    | 'Truck'
    3  | 2                    | 'Minivan'
    

ここで、ユーザーがフォームに入力するときに、これへの参照をform_entryテーブルに保存します。

    id | fk_id_user | fk_id_category
    --------------------------------
    1  | 1          | 1

そのフォーム エントリの詳細はform_entry_detailsテーブルに保存されます。でも:

  • の場合はcategory_field.typetext答えを文字列として保存する必要があります

    id | fk_id_form_entry | fk_id_category_field | [answer]
    -------------------------------------------------------
    1  | 1                | 1                    | John Doe
    
  • category_field.typeがの場合、radio外部キーをに保存したいcategory_field_option

    id | fk_id_form_entry | fk_id_category_field | [fk_id_category_field_option]
    --------------------------------------------------------------------------
    2  | 1                | 2                    | 2
    

どうすればこれを解決できますか? を文字列として保存できることはわかっていますが、ORM (Doctrine 1.2.4) を使用しているfk_id_category_field_optionため、実際にテーブルを参照する必要があります。category_field_option

4

1 に答える 1

0

外部キーの全体的な考え方は、この種の状況を防ぐことであるため、それはできません。外部キーを適用せずに1つのフィールドとして保存するか、2つの列を作成します。1つは外部キーID(おそらく、「ユーザー定義」に関連するデフォルト値)用で、もう1つは、ユーザー定義情報を取得し、おそらくデフォルトです。 nullに。

于 2013-01-14T03:40:49.873 に答える