2009-07-22 2 views
0

多くのデータベースフィールドを表示するGUIの場合、GUIラベルがハードコードされずに動的に設定されるように、field:labelマップを持つことが望ましいです。例えばGUIラベルをデータベースフィールドにどのようにマップしますか?

  • 高さ: "高さ(cm)"
  • 年齢: "年時代"
  • bloodAlcPct: "血中アルコール%"
  • monthsIncarcerated: "刑務所の月"

これらの文字列はどこに格納しますか?データベースフィールドにどのようにマッピングされますか?ユーザーがこれらのラベルに頻繁な変更を要求すると、安全に想定できます。

答えて

1

テーブルのフィールドに関する情報を保持するメタテーブルを使用できます。そのテーブルを持っていれば、そのテーブルの用途が増えます。

+1

これにはかなりの量の追加クエリが含まれていませんか? – Glenn

+0

ユースケースに応じて、スタートアップ時に単一のクエリでクラス/構造体にlablesをロードし、それを使って終了することができます。 通常、ラベルは頻繁に変更されません。 – Mostlyharmless

1

私はあなたのデータベースのものを保存するのではなく、それはすべての良いORMに行われているように彼らは、データベースのテーブルを表し、あなたのOOモデルにマッピングされていません(ジャンゴで、Kohanaの-ORM、ActiveRecordのなど見て)

編集:

これは、あなたがハードコードされたものに依存します。ハードコードは、通常、フォームまたは出力でフィールドを使用するたびに、コード内にそのコードがあることを示します。 ORMクラスでは、それは一度だけ定義され、その後は再利用されます。異なる言語を使用する場合は、_getメソッドを使用することもできます。

ラベルをある場所で定義する必要があります。データベースから情報を取得する必要があるため、データベースに入れておくとオーバーヘッドが大きくなります。 GUIの種類に応じて、多分何回も使用します。

最後に、コードのバランス、パフォーマンス、可読性/拡張性の2つの点があります。それをクラスにカプセル化すると、ラベルがユーザーによって変更された場合を除き、両方の観点からきれいになります。それは動的データであり、データベースになければなりません。

とにかく、これは特定の状況や個人的な趣味の問題です。したがって、ここには正しい解決策や間違った解決策はありません。

+0

ラベルをクラスファイルにハードコードすることを意味しますか? – Glenn

+0

だから、データベーステーブルを表すOOモデル...そこにラベルを格納すると、それはまだハードコーディング...右でしょうか? – Mostlyharmless

+0

私が編集で言うように、あなたがクラスで一度定義し、DRY(あなた自身を繰り返さないでください)に従うならば、それは本当にハードコーディングされていませんが、定期的に変更する必要があるいくつかの理由があります(この場合は_getで多言語化することもできます)。 – txwikinger

関連する問題