ただの好奇心と明確な答えの欠如から...
サードパーティから送信されたデータを見ていましたが、「性別」フィールドは [0,1] で、女性 (0) または男性 (1) を示しています。
["F","M"] ではなく [0,1] を使用するより良い理由はありますか?
それはシナリオと、フィールドとその値の間の直感性に依存しますか?
データ アクセス速度やサイズの制約はありますか?
月が満月なら?
[0,1] と ["Y","N"] と ["T","F"] の使用の違いは何ですか?
ただの好奇心と明確な答えの欠如から...
サードパーティから送信されたデータを見ていましたが、「性別」フィールドは [0,1] で、女性 (0) または男性 (1) を示しています。
["F","M"] ではなく [0,1] を使用するより良い理由はありますか?
それはシナリオと、フィールドとその値の間の直感性に依存しますか?
データ アクセス速度やサイズの制約はありますか?
月が満月なら?
データを難読化して他のプログラマーが理解しにくくする場合は、F と M の代わりに 0 と 1 を使用することをお勧めします。
そうでなければ、いいえ、利点はありません。
また、私はあなたに大きな欠点を与えることができます。 私は豚を扱うアプリケーションに取り組んでいます。オスのブタは、他のオスの動物と同様に、肉の質を向上させるため、繁殖ではなく食用に使用する場合は去勢されます。
このアプリケーションはもともと、男性と女性を追跡するだけでした。しかし、ここでは、オス、メス、バロー (去勢されたブタの用語) という 3 つの異なる性別を追跡する必要があります。誰かが性別のビット フィールドで 0 と 1 を使用することを決定した場合、それを変更するのは面倒です。
明らかな用途 -> 外部キーを見落としていませんか? 元の質問がビットフィールドを暗示していたことは知っていますが、それが本当に数値である場合、0,1 性別列は性別テーブルを参照する可能性がありますか?
主な利点は、仮定が変更された場合に、3つ以上の値を許可する列を自然に拡張できることです。
また、より哲学的には、ジェンダー/セクシュアリティの概念は、バイナリフィールドで説明されるよりもはるかに流動的です。たとえば、私は同性結婚法が可決されたときにマサチューセッツ州の主要な政府の申請書を修正するために雇われました。結婚について多くの仮定がなされ、後で無効になったためです。
各エントリのビットのレベルに到達したい場合を除き、そうではありません。つまり、1 文字が 8 ビットを占めるのに対し、0 または 1 を 1 ビットに収めることができます。ほとんどの場合、これは価値がありません。
「M」または「F」の方が意味情報が多いため、より明確だと思います。
興味深いことに、誰も言語について言及していません。
M/Fは英語でOKですが、他の言語はどうですか?
繰り返しになりますが、リストには別のテーブルを使用する必要があると常に主張できます。
ここでは複雑なソリューションを作成していますが。
ビット (またはブール) フィールドは、決定的に 2 つの選択肢しかない場合にのみ使用する必要があります。
私の2セント。
SQL でユーザー定義型を作成するか、c#/vb で列挙型クラスを作成し、前述のサイズと速度の理由からデータベースに 0,1 を格納します。
パフォーマンスの違いは些細なことです。人間のM/Fのためのより直感的なものを使用してください。
それは本当に問題ではありません。
サイズの制約について本当に、本当に、本当に心配している場合は、[0,1] を使用すると数ビット節約できます。
Int の比較は、String の比較よりも少し簡単です。文字列を比較するときは、大文字と小文字を考慮する必要があります。
列挙型を使用しないのはなぜですか? これにより、次のことが可能になります
単一の文字は整数と同じストレージスペースを使用するため、簡単な答えはノーです。
長い答えは、アプリケーションの作成方法によって異なります。アプリケーション層にGender.FemaleとGender.Maleをそれぞれ0と1の値にマップする列挙型があったため、データベースに0または1の性別フィールドがあるアプリを作成しました。
レコード内のフラグについては、1/0 よりも "Y"/"N" または "T"/"F" を好みます。
フラグを質問として表現したい場合は、 Y/N を使用すると、「Y」が質問に肯定的に回答することに同意し、「N」が否定的な回答を意味することが明確になります。
SHOULD_SPECIAL_DISCOUNT_APPLY - Y or N
フラグを肯定的なステートメントとして表現したい場合は、 T/F の方が明確です。T - ステートメントが真であることを意味し、F はステートメントが偽であることを意味します。
SPECIAL_DISCOUNT_APPLIES - T or F
0 または 1 には、True または False への単純なマッピングはありません。どちらを意味するかによって異なります。'1' が True/Yes を意味し、'0' が False/No を意味することを保証することはできません。電子機器やソフトウェアでは常にそうであるとは限りません。それは...
性別は実際には 2 進数ではないため、男性と女性の間には「インターセックス」状態が連続して存在し、性別がまったくない人もいます。浮動小数点型を使用するのが最善です。女性の場合は 0 (少なくとも哺乳類ではデフォルト)、男性の場合は 1 で、中間条件の場合は中間値、値がない場合は NaN です。
しかし、人間の心臓にはタイプがないため、これが完全に適用されることは決してないことを覚えておいてください. 複素数は多くの場合、適切な近似値ですが。
まあ、SQL Server では間違いなく重要です。この場合、ビット列タイプを使用する必要があります (1/0 または True/False - ただし、言いたいこと)。これは、char(1) の 1 バイトと比較して、わずか 1 ビットのストレージです。
本当にデータベースに依存します。
これらすべてを読み、少し調査を行った後、次の結論に達しました。
[0,1] フィールドは国際的であるため便利であり、定義の静的テーブルにリンクすると、より多くの句を含めるように拡張できます。
["Y","N"] と ["T","F"] はおそらく世界中で認識されていますが、英語に関連しています。
["M","F"] 性別タイプのフィールドも英語ベースであり、性別を言及したくない人や性別が不明確な人 (雌雄同体) を考慮すると使用が制限されます。