ume

データベース 文字数制限のバリデーションについて

前書き

オリジナルアプリを開発中データベースに文字数制限のバリデーションをかけようとして最大文字数を何文字で設定するのがいいのかな?と疑問に思ったので将来の自分へと、また同様の疑問を抱いた人に有益になるように記事に残します。

結論

アプリの仕様次第

私のアプリの仕様

月間目標のカラムの文字列を制限しようとしました。月間目標の例 中間テストで400点取るなど 文字数が1000文字2000文字になることは考えにくい。なのでvarchar(255文字)でいいと判断できる。

varchar(255)とvarchar(65535)の違いは?

⇨文字数が多い方がデータベースの容量をとる。ただし10文字登録しようが1万文字登録しようが登録速度はあまり変わらない.
登録速度の違いは?
↓以下のテストが参考になりました。
10文字のデータを1000回DBに登録する場合の速度の違いは?

余談.
railsマイグレーションでこのようにstring型を設定するとデフォルトでは[varchar(255文字)]で登録される。

class AddConfirmationToUsers < ActiveRecord::Migration[6.1]
  def change
    add_column :users, :confirmed_at, :datetime
    add_column :users, :unconfirmed_email, :string
  end
end