Laravelではidカラムのデータ型は【符号なしBIGINT】を使う理由

Laravel 入門講座

Laravelでは、idカラムのデータ型は unsignedBigIntegerを選択します。

マイグレーションファイルには、【$table->unsignedBigInteger(‘user_id’)】のように記述する必要があります。

リレーションなどで相手のidを入れたidカラムを作るときには、ご注意ください。

でもIDのデータ型って、integerでもよい気がしませんか?

実は、わたしは最初そう思いました。同じように「なぜ符号なしBIGINTのデータ型を使うべきなの?」と疑問に思う人のために、解説していきますね。

*本記事で使用するLaravelのバージョンはLaravel8です。

Laravelではidカラムのデータ型は【符号なしBIGINT】を使う理由

なぜidのデータ型はunsignedBigIntegerなのか。

これは、下記のLaravelの公式マニュアルを検索すると分かります。

ただしすぐには分からず、3ステップの検索が必要です。

1回目の検索:$table->id

まずは公式マニュアルを開きます。

マイグレーション 8.x Laravel

マイグレーション時にデータ型を調べるときは、このページの【使用できるカラムタイプ】を参照します。

一番上には 【$table->id();】とあります。

つまり、idのデータ型には、これが使われているのです。

なお説明欄には【 $table->bigIncrements(‘id’)の別名】とあります。

$table->id(); = $table->bigIncrements(‘id’)の別名

2回目の検索:$table->bigIncrements(‘id’)

【$table->bigIncrements(‘id’)】を検索してみると、2つほど下に、該当するものがありました。

$table->bigIncrements(‘id’) = 符号なしBIGINTを使用した自動増分ID(主キー)

自動増分というのは、自動で連番が割り振られていくということ。

デフォルトで使うidであればよいのですが、自分でid番号をつけたいときには使いにくいですね。そこで、もうちょっと調べてみることにします。

3回目の検索:符号なしBIGINT

2回目の検索結果で、idには【符号なしBIGINT】と使用せねばならないことは分かりました。

そこで【符号なしBIGINT】で検索をかけてみます。

すると、次のようなデータ型がありました。

$table->unsignedBigInteger(‘votes’); = 符号なしBIGINTカラム

つまり、これが使うべきデータ型になります。

マイグレーションファイルでは、たとえば【user_id】カラムに、次のような感じでデータ型を指定します。

符号なしBIGINTとは?

符号なしBIGINTは、ものすごい量を格納できるデータ型です。どれぐらいの量が可能か、ざっくり解説しますね。

BIGINTとは、BigIntegerの略。値の範囲は、次のとおりです。

-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

さらに 符号なしBIGINTとは、マイナス部分がないBIGINT、ということ。

つまりマイナス部分で使うべき部分も利用できるので、そのぶん、格納できる量が増えます。具体的には、次のとおりです。

0 ~ 18,446,744,073,709,551,615

 

Junko
Junko

多すぎて口頭で読み上げられないぐらい・・・。

スゴイ量のデータが格納できますね。

 

おまけ:foreignId() でもOK

なおunsignedBigIntegerではなく、foreignId()メソッドを使うことも可能です。Laravelの公式マニュアルには次のように書かれています。

foreignIdメソッドはunsignedBigIntegerメソッドのエイリアスです。

$table->foreignId(‘user_id’);

参考:https://readouble.com/laravel/8.x/ja/migrations.html#column-method-foreignId

まとめ

今回のまとめ

idカラムでは、データ型は符号なしBIGINTを使う

理由は公式マニュアルを3ステップで検索すると分かる

「少しスッキリした!」と感じてもらえたら嬉しいです。

データ型のこととか、慣れないうちは何を使ってよいか分からず、困りますよね。

「データ型や、Laravelでデータベースを作成する方法を知りたい」という人向けに、学習サイト「初心者のためのLaravelの教科書」にて、Laravelの使い方をいちから解説しています。

登録は無料です。興味があったら、下記をクリックして詳細を見てみてくださいね。

Laravelの教科書について詳しく見る

コメント

タイトルとURLをコピーしました