ほとんどの場合、短い英数字コードを使用して、展開されたテキストを含むルックアップテーブルを使用することをお勧めします。必要に応じて、データベーステーブルからプログラム内の列挙型テーブルを動的に構築します。
例えば、トランザクションタイプを含むフィールドがあり、可能な値はSale、Return、Service、Layawayです。私はコードと説明でトランザクションタイプテーブルを作成し、コードを "SA"、 "RE"、 "SV"、 "LY"とし、コードフィールドを主キーとして使用します。その後、各トランザクションレコードで、そのコードを投稿します。これは、レコードそのものとインデックスの整数キーよりも少ないスペースしか必要としません。それがどのように処理されるかは、データベースエンジンに依存しますが、整数キーよりも劇的に効率が低下しません。それはニーモニックであるため、使い方が簡単です。レコードをダンプして、値が何であるかを簡単に確認し、どのレコードがどれであるかを簡単に確認できます。翻訳なしでユーザーの出力にコードを表示することができ、ユーザーはそれらを理解することができます。これは、整数キーに比べてパフォーマンスが向上します。多くの場合、省略形はユーザーには便利です。表示をコンパクトにしてスクロールを避けるために省略記号を使用することが多いため、トランザクションテーブルに参加する必要はありません翻訳を得る。
私は間違いなくすべてのレコードに長いテキスト値を格納しません。この例のように、私はトランザクションテーブルを使い果たして「棚上げ」を保管したくないでしょう。これは非効率的であるだけでなく、いつかはユーザーが "Layaway sale"に変更したい、あるいは "Lay-away"のような微妙な違いに変更したいと言うことは間違いありません。その後、データベース内のすべてのレコードを更新するだけでなく、このテキストが出現する場所ごとにプログラムを検索して変更する必要があります。また、テキストが長くなればなるほど、プログラマがライン上のどこかでそれを間違って綴る可能性が高くなり、あいまいなバグが作成される可能性が高くなります。
また、トランザクションタイプテーブルを持つと、トランザクションタイプに関する追加情報を保存するのに便利な場所が提供されます。 「whatevercode = 'A'やwhatevercode = 'C'やwhatevercode = 'X'なら...」というコードを書くことは決してありません。それが何であれ、これらの3つのコードは他のコードとは何とか違っています。それはトランザクションテーブルにあり、そのフィールドをテストします。 「まあ、それらはすべて税関連のコードです」と言った場合、「tax_related」というフィールドを作成し、各コード値に対して適切な値をtrueまたはfalseに設定します。それ以外の場合、誰かが新しいトランザクションタイプを作成するときには、それらのすべてのものを見て、どのタイプのものを追加すべきか、どのタイプを追加すべきでないのかを判断する必要があります。私は、これらの3つのコード値にいくつかのロジックが適用されているが、他にはない理由を理解しなければならなかったたくさんの難解なプログラムを読んだ。そして、リストに4番目の値を含めるべきだと思うとき、プログラマが間違いを犯した場合、実際には何らかの形で異なっているために行方不明になります。
私が変換テーブルを作成しない唯一のタイプは、リストが非常に短く、保存する追加のデータがない場合です。ユニバースの性質から、変更する可能性は低いことが明らかです値を安全にハードコーディングできます。真/偽、肯定/否定/ゼロ、男性/女性のように。 (そして、ちょっと最後のものでさえ明らかに、 "トランスジェンダー"などを含むと主張する人々がいる)
いくつかの人々は、あらゆるテーブルには自動生成された連続整数キーがあると主張する人もいる。このようなキーは多くの場合優れた選択ですが、コードリストの場合は、上記の理由で短いアルファキーが好まれます。
出典
2009-09-02 17:54:16
Jay
正確な複製:http://stackoverflow.com/questions/229856/ways-to-save-enums-in-database – ChssPly76