0

CMS を刷新中ですが、どのソリューションを採用すればよいかわからない状況に陥っています。基本的に、各クライアントは、Web サイトのコンテンツを独自のデータベースに格納しています。これには、コンテンツ、調査、訪問者が使用する検索語、メニュー構造などが含まれます。

クライアントのウェブサイトのコンテンツの多くは動的であり、CMS を介して変更することができます。このデータはすべて、私が設計したリレーショナル データベースに保存されますが、これらの設定をテーブルに保持するのはやり過ぎになる状況がいくつかあります。

たとえば、CMS を使用すると、受信者のリストに電子メールを送信できます。彼らは私たちのサーバーを使用することを選択するか、独自のSMTPサーバーを配置することができます. ただし、この場合、「mailService」の列を含むテーブルを作成し、特定の値を保持するのは少しやり過ぎです。テーブルには 1 行しか保持されないからです。

このサイトやグーグルで少し検索して思いついたいくつかのアイデアを次に示しますが、それらの長所と短所が何であるかはよくわかりません。

  • 基本的に、上記のようにすべての設定をテーブルに保持しますが、これは避けたいことです。
  • これらすべての「単一の」設定を XML ファイルに保持し、設定が変更されたときに変更します。
  • 次の列を持つ設定と呼ばれるテーブルを用意します: id、preferenceName、value 。新しい設定ができるたびに、追加、変更、または削除するだけです (このオプションは好きではありません。あまりにも多くの値をハードコーディングする必要があると感じているからです...少なくとも途中で私は実装を見ています)

私は XML のアイデアに少し傾いていますが、ここ Stackoverflow の優れたコミュニティからフィードバックを得たいと思っています :) たぶん、XML を使用することは、私が完全に見落としているか、あなたの愚かな理由で恐ろしい考えになるでしょう。 -なぜ、この解決策を実行しなかったのですか。ご意見ありがとうございます。

4

3 に答える 3

2

データベース テーブルが既にある場合は 1 つ使用し、設定の名前を適切なカテゴリに分割します。

mail_service:recipients
mail_service:sender
mail_service:smtp:hostname
mail_service:smtp:username
mail_service:smtp:password

それ以外は、読みやすさのために XMLよりもyamlを好みます。これは XML に似ていますが、雑然としたものはありません。

 mail_service:
     recipients:
       - recipient1@domain.com
       - recipient2@domain.com
       - recipient3@domain.com
       - recipient4@domain.com

  visuals:
    header:
      text_color: #BBCCDD
      background_color: #FFFFFF

Symfony YAML クラスは、そのファイルを PHP 配列に解析する優れたスタンドアロン ライブラリです。

単純な PHP ファイルを使用することもできます。

$settings = array(
 "mail_service:recipients" => " .... ",
 "mail_service:sender" => " .... ",    
 "mail_service:smtp:hostname" => " .... ",
 "mail_service:smtp:username" => " .... ",
 "mail_service:smtp:password" => " .... ");
于 2010-07-05T18:45:08.280 に答える
1

xmlルートは、新しい属性を簡単に追加したり、属性をグループ化したりできるという意味でうまく機能します。欠点は、SQLを使用して設定データを移行または更新できないことです。プログラムで行う必要があります。また、必要に応じて、個々の属性の設定を照会することもできません。

言うまでもなく、SQLを介してクエリや更新を行う必要がない少数の設定を維持している場合は、xmlが適切に機能します。それ以外の場合は、データベース内の名前と値のペアのテーブルが適切な方法です。

于 2010-07-05T18:40:49.383 に答える
1

XML ファイル (XML である必要はありませんが、Java の場合は、使用しない理由が見つかるまでプロパティ ファイルを使用します) または単一のキー/値テーブル (id フィールドは使用できません) を使用します。異なるインストールを区別するための外部キーでない限り、あまり役に立ちません)。

個人的には、SQL の汎用性と自己完結型の機能が気に入っています。データベースを使用しても、まだ存在しない複雑さが追加されることはありません (たとえば、パフォーマンスが問題になる場合に独自の XML キャッシュを拡張する必要がある場合に、同じレベルのキャッシュを無料で利用できます)。私が XML を選ぶのは、値が非常に複雑な構造で、SQL による操作が面倒な場合だけです。

なぜ「多くの値をハードコーディングする」必要があると思うのか、具体的には、ファイル ソリューションよりもデータベース ソリューションの方がハードコーディングが多くなる理由がわかりません。

于 2010-07-05T18:48:25.627 に答える