回答:
ここでは別のアプローチをとり、他の開発者がコンパイラ/データベースと同様にコードを理解することも同様に重要であることを提案します。ブール値を使用すると、tinyintを使用する場合と同じことを行うことができますが、意図が何であるかを意味的に伝えるという利点があり、それは何か価値があります。
tinyintを使用する場合、表示される値が0と1のみであることは明らかではありません。ブール値は常にtrueまたはfalseです。
booleanMySQLでは明確なデータ型ではありません。これはの同義語ですtinyint。MySQLマニュアルのこのページを参照してください。
個人的には、tinyintを設定として使用することをお勧めします。ブール値は、名前から行うとは思わないため、誤解を招く可能性のあるコードを作成するためです。しかし、実用的なレベルでは、それは本当に重要ではありません。どちらも同じことを行うので、どちらを使用しても何も得られたり、失ったりすることはありません。
enumを使用するのが最も簡単で最速
tinyint(1)が8ビットを必要とする一方で、bit(1)はブール値を格納するために1ビットしか必要としないため、enumまたはtinyint(1)はお勧めしません。
ref
BIT(M) - approximately (M+7)/8 bytes参照:dev.mysql.com/doc/refman/8.0/en/storage-requirements.html
Dapperを使用してMySQLに接続するときの私の経験は、それが重要であることです。次のスクリプトを使用して、nullを設定できないbit(1)をnullを設定できるtinyint(1)に変更しました。
ALTER TABLE TableName MODIFY Setting BOOLEAN null;
その後、Dapperは例外のスローを開始しました。台本の前後の違いを見てみました。そして、bit(1)がtinyint(1)に変更されたことに注意してください。
次に実行しました:
ALTER TABLE TableName CHANGE COLUMN Setting Setting BIT(1) NULL DEFAULT NULL;
これで問題は解決しました。
booleanようtinyint(1)です。あなたが使用できるようにboolean、trueとfalseとMySQLはとして扱いtinyint(1)、1と0。