3

3つの状態のみになり得るオブジェクトのリストがあります。

データの簡略化された例:

Substance State
H2O  solid
H2O  fluid
CO2  gas
...  ...

TINYINT(2)使用する方が良いですか、それとも他のものを使用する方が良いENUMですか?値をそのまま(VARCHAR)挿入する必要がありますか、それとも数値を使用する必要がありますか?値の外部テーブル?

4

4 に答える 4

2

1バイト未満には何も格納されません。

TINYINT(2)と3つのメンバーを持つENUMは、どちらも1バイトのストレージになります。どちらでも構いません。

ENUMの良いところは、わかりやすい英語の名前を使用でき、コンパクトに保存できることです。ENUMの悪い点は、それらがANSISQLではないことです。

于 2012-07-10T06:11:55.273 に答える
2

ID を介して外部テーブルを参照します。そのテーブルは、情報をテキストとして表示します。select ステートメントでは、結合するだけです。私が何について話しているのかわからない場合は、例を聞いてください:)

ただし、さまざまな理由から、ENUM は使用しません。ここで最も重要なものを見つけてください: http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/

于 2012-07-10T06:16:15.273 に答える
0

state(id int , desc varchar) としてマスターテーブルを作成します。問題によると、

id   |  desc
1    |  Solid
2    |  Liquid
3    |  Gas

そしてソリューション(メイン)テーブルで状態テーブルのIDを参照してください

于 2012-07-10T06:12:51.537 に答える
0

タイプBITの列に情報を格納し、null値を許可できると思います

桁。以下は、値とデータのマッピングです。

H2O固体 --> TRUE

H2O流体 --> FALSE

CO2 ガス --> NULL

于 2012-07-10T06:15:47.907 に答える