LoginSignup
28
40

More than 3 years have passed since last update.

[Rails]データベースのデータ型種類について勉強してみた!

Posted at

はじめに

データベースのデータ型ってメッチャ種類があって、ややこしいですよね。
当方、まだまだプログラミング駆け出しの身なので、
「えっ、この場合はどれを使えばいいの?」
ってなることが非常に多く、その度にGoogle検索をするのですが、丁度良い解説に巡り会えなかったので、アウトプットも兼ねて記事を書きます!
よろしくお願いします。

データ型種類一覧

データ型 種類
integer 整数型(4バイト)
bigint 整数型(8バイト)
decimal 固定長整数型(精度の高い小数)
float 数値(浮動小数点数)
string 文字列(1 〜 255文字)
text 長い文字列(1 〜 4,294,967,296文字)
date 日付(1000-01-01 〜 9999-12-31)
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)
binary バイナリ文字列型
boolean 真偽
primary_key プライマリーキー(主キー)

本当は全てに対して解説をするべきですが、個人的に気になった部分のみ取り上げてます!
載っていない項目に関しては、ご自身でググってみてください。

integerとbigintってどう違うの?

integer:整数型(4バイト)
bigint:整数型(8バイト)

いきなり最初からよく分かりませんね。
どうやら、昔は整数型といえばintegerのみだったのですが、大規模なSNSサイト等になると、会員数だけでもかなりの数になってしまい、integerでは対応できなくなってしまったのが背景にあるようです。

そこで、Rails5.1からidカラムがbigintに変更になるようになりました。
新規でアプリケーションを作成する際は、特段問題が発生しないのですが、既存のアプリでintegerを使用していた場合、システム補修時にエラーが発生することがあるようです。

textとstringってどういう風に使い分けるの?

一般的な分類方法では、以下のように使用されるのが多いです。

string(1 〜 255文字)
・名前
・住所
・パスワード
text(1 〜 4,294,967,296文字)
・コメント
・投稿文

作成するサイトによって事情は様々だと思いますので、あくまで一例ということで。

timestampとdatetimeって何が違うの?

timestamp:タイムスタンプ ('1970-01-01 00:00:01' UTC ~ '2038-01-19 03:14:07' UTC)
datetime:日付と時刻(1000-01-01 00:00:00.000000 〜 9999-12-31 23:59:59.999999)

皆様はご存知でしょうか、2038年問題を!
よく見れば気付く方もいると思いますが、timestampは現状、2038年までしか対応していないのです...
なぜこうなったのかは分かりませんが、日時を記録する時には、datetimeを使うという方向性にシフトしているようです。
2038年は世界が荒れそうですね。

binaryとは何のこと?

そもそも「バイナリ」とはコンピュータ用語で、データが「0」と「1」で表現されているデータ形式です。
Railsでは、「テキストではない情報でデータが書かれているファイル」という認識になるかもしれません。

バイナリファイルの主なものとしては、
・ 音声ファイル
・ 画像ファイル
・ 圧縮ファイル
などがあります。
バイナリデータは、人間が読み取れる文字で記載してあるわけではありません。
そのため、テキストエディタではバイナリデータを開くこともできません。
使いどころがよく分かりませんね。

booleanとは?

これもよく分からない概念ですよね。
一般的には、真(true)と偽(false)のような2つの状態を表すデータ型を表します。

おわりに

データ型だけには、かなりの種類があるんだな、ということを再認識。
こうやって自分でまとめてみないと、なかなか知り得なかったこともあって、非常に勉強になりました。

28
40
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
40