3つの状態のみになり得るオブジェクトのリストがあります。
データの簡略化された例:
Substance State
H2O solid
H2O fluid
CO2 gas
... ...
TINYINT(2)
使用する方が良いですか、それとも他のものを使用する方が良いENUM
ですか?値をそのまま(VARCHAR)挿入する必要がありますか、それとも数値を使用する必要がありますか?値の外部テーブル?
3つの状態のみになり得るオブジェクトのリストがあります。
データの簡略化された例:
Substance State
H2O solid
H2O fluid
CO2 gas
... ...
TINYINT(2)
使用する方が良いですか、それとも他のものを使用する方が良いENUM
ですか?値をそのまま(VARCHAR)挿入する必要がありますか、それとも数値を使用する必要がありますか?値の外部テーブル?
1バイト未満には何も格納されません。
TINYINT(2)と3つのメンバーを持つENUMは、どちらも1バイトのストレージになります。どちらでも構いません。
ENUMの良いところは、わかりやすい英語の名前を使用でき、コンパクトに保存できることです。ENUMの悪い点は、それらがANSISQLではないことです。
ID を介して外部テーブルを参照します。そのテーブルは、情報をテキストとして表示します。select ステートメントでは、結合するだけです。私が何について話しているのかわからない場合は、例を聞いてください:)
ただし、さまざまな理由から、ENUM は使用しません。ここで最も重要なものを見つけてください: http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/
state(id int , desc varchar) としてマスターテーブルを作成します。問題によると、
id | desc
1 | Solid
2 | Liquid
3 | Gas
そしてソリューション(メイン)テーブルで状態テーブルのIDを参照してください
タイプBITの列に情報を格納し、null値を許可できると思います
桁。以下は、値とデータのマッピングです。
H2O固体 --> TRUE
H2O流体 --> FALSE
CO2 ガス --> NULL