スポンサーリンク

「Laravel」MySQLへの複数単語のテーブル名のMigrationはどのケースが良いのか?

snake_caseなのかCamelCaseなのか?

Laravelの初期サンプルでは単数単語なので、参考にならない・・・。

結論:snake_case

MariaDB/MySQL の慣習は snake_case が圧倒的多数

  • MySQL 系の世界では、テーブル名・カラム名は基本的に 小文字 + snake_case
  • 大文字を含む名前は OS のファイルシステム依存でトラブルを起こす可能性がある
    • Linux → 大文字小文字を区別
    • Windows → 区別しない
  • つまり、CamelCase は環境差異による事故のリスクがある

2. Laravel の規約も snake_case が前提

Laravel の Eloquent は:

  • テーブル名 → snake_case(複数形)
  • カラム名 → snake_case
  • モデル名 → PascalCase(単数形)

という規約で設計されています。

例:

  • モデル:EmployeeRecord
  • テーブル:employee_records
  • カラム:employee_code

もしテーブル名を CamelCase にすると、Eloquent の自動推論が効かず、毎回 protected $table = 'EmployeeRecord'; を書く必要が出ます。

3. SQL の可読性・移植性が高い

snake_case は:

  • 長いテーブル名でも読みやすい
  • 他言語・他フレームワークでも共通理解される
  • 将来の移行(PostgreSQL など)でも問題が起きにくい

CamelCase は SQL の世界では少数派で、可読性も落ちます。