1

phpとmysqlを使用してカスタムCMSを作成しようとしています。各ページにはいくつかのゾーンがあります。各ゾーンはモジュールを出力できます。たとえば、ニュースモジュールがあり、モジュール管理セクションでニュースカテゴリと単一のニュースアイテムをすでに追加しています。しかし、ここから始まります。エンドユーザーは、このモジュールのさまざまな出力を取得したいと考えています。たとえば、ユーザーが「スポーツ」カテゴリのニュースを表示したい、ユーザーが上位5つの最後のニュースを表示したい、またはユーザーがニュースを何かで並べ替えたい、または、または、または....モジュールが取ることができる他の多くのオプション。

私の質問は、これらのオプションを処理および管理するためのソリューションは何ですか。--news_optionsのようなすべてのモジュールにmodule_optionテーブルを提案しますか?-すべてのモジュールオプションを保持する単一のテーブルを提案しますか?

私が意味することを理解できることを願っています;)db図が必要かどうかも知らせてください。

4

1 に答える 1

1
  1. 最初のアプローチは、モジュールごとに異なるテーブルを使用することです。次に、異なるインスタンスの設定をフィールドに保持できます。扱いやすい形に。

    例:

    Table: News
    ----------------------------------------------------------------------
    | id      +     news_title     +     option 1     +    option 2      |
    ----------------------------------------------------------------------
    
  2. 次のアプローチでは、キー名と 1 つのフィールドと別のフィールドのキー値を保持するグローバル構成テーブルを使用できます。この方法では、異なるモジュールから異なるテーブルを作成する必要はありません。

    例:

    表: モジュールオプション

    --------+-----------------+-------------------+---------------------+
    |  id   |   module_id     |    setting_name   |   settings_value    |
    --------+-----------------+-------------------+---------------------+
    |   1   |   1             |     option 1      |   option value 1    |
    --------+-----------------+-------------------+---------------------+
    |   2   |   1             |     option 2      |   option value 2    |
    --------+-----------------+-------------------+---------------------+
    

どちらを選択するかは、プロジェクトのコーディング方法によって異なります。どちらにも独自の長所と短所があります。ただし、考慮すべきいくつかの点

  • オプションに長いテキストを入力する方法が含まれている場合、オプションのサイズが大きく異なるため、2 番目のアプローチは不適切です。
  • すべてのモジュール設定が固定長フィールドに付随する場合、2 番目のオプションが間違いなく最良の方法です。
于 2012-07-08T17:43:07.863 に答える