0
私はテーブルをId
、Name
、Status
としました。これがために縫い目T-SQL列挙型の数値または文字列
1 John Online
2 Elsy Offline
:C#では私は
public enum DriverStatus
{
Online = 0,
Offline = 1,
Busy = 2,
SoonFree = 3
}
は、現在のデータベースで、私はStatus
列のvarchar
データ型を使用して、これは私のようなレコードを持っていることを意味ドライバの状態のための列挙型を持っています悪いと私はので、この必要性は、ステータスカラム型tinyint
に変更すると思う:
- T-SQL
Tinyint
が範囲0と1バイトのみのサイズです-255。 - ステータスカラムでは通常
varchar
であるため、ソートすることはできません。そのため、列挙優先順位ではなくアルファベット順にソートされます。 DriverStatus
enum値の名前を変更した場合、一貫性を保つためにデータベースを更新する必要があります。我々は唯一の理由は、あなたが任意の本当に良い理由がで列挙型の文字列を持っている。ここで、0または3のようなテキストではない数です見るように、デバッグする方が簡単であることだった列挙型のカラムに対してvarchar
を使用する理由
は、その後、私は他の人に尋ねましたデータベース?
を可能にしました。データを理解するのが簡単です。将来の開発者またはレポート作成者であれば、値の意味を他にどのように知ることができますか?あなたが本当にそれらをソートする必要がある場合は、あなたの視点でそれらを翻訳するためにCASE WHENを使用してください。ルックアップのテキスト値よりも数値を選択する唯一の理由は、ソートの目的であると私は間違いなく考えています。 –
'StatusCode'と' StatusDescription'を関連付ける別のテーブルをデータベースに持つことができます。あなたは実際にそれを使用する必要はありませんが、誰かが見ることができるでしょう。 –
可能な解決策:1)データベーステーブルを表現するC#エンティティクラスを開き、コアが記述されていればそれを調べます。 2)純粋なデータベースプロジェクトの場合、列挙型キー値のための別のテーブルが存在することがあります。レポート作成者はそれに参加してユーザーフレンドリーな価値を得ることができます。 –