はじめに
Ruby on Railsでポートフォリオ作成にあたりテーブル定義書を作成したが、booleanで実装するときとenumを使うときの違いがわからなかったため調べた結果を記録に残しておく。
また、今後のためにデータ型はどんなものがあるのか一覧にしておくことで、調べる時間の短縮を図る。
(実際に何度も実装する内によく使うデータ型は自然と覚えていくと思うが、現時点ではそのレベル感には到達していないため、記録に残しておきます。)
データ型一覧
- string : 文字列(1 〜 255文字)
- text : 長い文字列(1 〜 4,294,967,296文字)
- integer : 整数型(4バイト)
- bigint : 整数型(8バイト)
- float : 数値(浮動小数点数)
- decimal : 固定長整数型(精度の高い小数)
- datetime : 日付と時刻(1000-01-01 00:00:00.000000 〜 9999-12-31 23:59:59.999999)
- time : 時刻 (-838:59:59 〜 838:59:59)
- timestamp : タイムスタンプ ('1970-01-01 00:00:01' UTC ~ '2038-01-19 03:14:07' UTC)
- date : 日付(1000-01-01 〜 9999-12-31)
- binary : バイナリ文字列型
- boolean : 真偽
- primary_key : プライマリーキー(主キー)
booleanで実装するときとenumを使うときの違いは?
※新しく学んだ内容があれば追記します。
[booleanの特徴]
・一般的には真と偽のような2つの状態を表すデータ型
・デフォルト値を設定する必要がある
[enumの特徴]
・数値に意味を持たせることができる
・大量のデータを安全に管理できる(文字型で管理すると誤入力が発生する可能性があるが、文字型を数値と紐付かせることで誤入力を回避できる)
・データベースに格納する時に、文字型より数値型の方がデータサイズが小さくなる
[現段階での見解]
・管理したいデータが2種類しか無い(2種類しか存在させたくない)時に使用するべき。
(boolean型では”真(true)”と"偽(false)"の2種類しか存在しない。)
NULLが来たときはRubyでは 「nil と false はどちらも偽」 として扱われるため、思わぬエラーも回避できる。
・2種類のデータをenumで管理することも可能だが、NULLの時にエラーになるかもしれないため、好ましくない。
終わりに
調べてみたらbooleanとenumは全くの別物でした。。
NULLの概念についてがややこしいので経験を積む中で少しずつ理解を深めていきたいです!
最後まで読んでくださり、ありがとうございました。
参考文献
https://qiita.com/mmaumtjgj/items/b9b04ea64e30a16569fe
https://qiita.com/jnchito/items/a342b64cd998e5c4ef3d