1

私のアプリ データベースには、2 ~ 4 個の値しか持てない特定の列があります。

例えば

  1. 性別」には 2 つの値 (「男性」、「女性」) のみを指定できます。

  2. 「婚姻状況」は、「独身」「既婚」「離婚」の3つの値を持つことができます。

  3. 「PROC_STATUS」には 3 つの値 (「保留中」、「進行中」、「完了」) があります。

  4. 「PROC_SATISFACTION」には値を指定できます (「失望」、「満足していない」、「満足」、「非常に満足」)

このようなマスター データ値が他にもいくつかあります。

このマスター データを DB に格納する最良の方法は何ですか?

データは静的であり(ほとんど変更されない)、非常に少ないため、それぞれのテーブルを作成することは良い選択肢ではないようです。

もう 1 つのオプションは、チェック制約を使用することです。

別のオプションは、コードで列挙型を作成することです。

このマスターデータをDBに保存する方法を探しています。Ia musing SQL Server 2012.

どんな助けでも大歓迎です。

4

1 に答える 1

1

システムアナリスト出身...

主な考慮事項は、国際化を行うかどうかです。多くの言語がラテン語に基づいていないと考える限り'M'、性別は非常に単純に思えます。'F'

もう 1 つの考慮事項は、データベースが本当にアプリケーションから完全に独立したリレーショナル データベースとして動作することを意図しているかどうか (サード パーティのレポート作成、データのインポートとエクスポートなど)、またはデータベースが単なるアプリケーション ストレージであるかどうかです。

IMX、国際化が必要ない場合は、性別に と のchar(1)フィールドを使用'M'します'F'。このようなカテゴリはかなり明白であるため、それ以上のことは必要ありません (システムが複雑な性別などを心配する必要がある場合を除きます)。同様に、'Y'または'N'true/false フィールドを回避でき、使用したくない場合は問題ありませんbit。アプリケーション全体で一貫性を保つだけです。混同しないでください。

それ以外の場合は、コード、コードの説明/展開、および (可能な場合) Active 列を含む検証テーブルを作成して、ユーザーが特定のコードを使用しないことを指定できるようにします (コードはそれを尊重します!)。複雑なシステムでは、アプリケーションのシステム設定領域で、SysAdmin アクセス権を持つユーザーが新しいコードを作成したり、アクティブまたは非アクティブにマークしたり、未使用のコードを検証テーブルから削除したりできます。たとえば、キャンセル済みの PROC_STATUS や、「応答なし」の PROC_SATISFACTION が必要な場合があります。外部キー制約は問題ありませんが、私の経験では、この方法を使用する多くのアプリケーションは FK を使用しません。

アプリケーションに i18n が必要で、データが地域間で移植可能である必要がある場合 (つまり、ドイツのデータベースは、言語の変更のためにいくつかの更新を行うだけで、中国のアプリケーション サーバーに接続して正常に機能できる必要があります)、実際にはデータを保存することはできません。ベース テーブルのコード。おそらく、ルックアップ ID 整数、ユーザーが地域に使用するコード、そのコードの長い名前、およびアクティブ/非アクティブ オプションを持つ検証テーブルにマップする整数を使用する必要があります。適切な i18n には、インストールに応じて、これらのテーブルに正しい値を事前入力することが含まれます。

于 2014-11-06T22:16:11.520 に答える