Laravel 資料庫命名建議


建立時間: 2026年6月21日 23:11
更新時間: 2026年6月22日 08:47

說明

資料庫命名看似只是小細節,但實際上仍有許多值得遵循的最佳實務。本篇將以 Laravel 的常見習慣為主,同時分享一些適用於大多數資料庫的通用命名原則。

基本原則

資料庫命名最重要的是保持一致。只要團隊有明確規則,並且整個專案都遵守,就可以降低溝通成本。

我會建議遵守以下原則。

  • 使用英文命名
  • 使用小寫
  • 多單字使用底線 _ 連接
  • 名稱要能看出用途
  • 避免縮寫過度
  • 避免使用保留字
  • 同一個專案保持一致
  • 遵守開發系統建議的命名方式

例如不要一下使用 userName,一下使用 user_name,一下又使用 UserName,這樣會讓資料庫命名變得很混亂。

閱讀 Laravel 文件和看框架預設的資料庫,你會發現它們存在命名規則,這些規則是會跟程式一起互相搭配使用的,不遵守這些規則輕則需要微調程式的運作邏輯,重則發生錯誤。

資料庫名稱

資料庫名稱通常代表整個系統或服務,建議使用小寫英文,並用底線 _ 組合多個單字。

blog
shop
member_center
order_system

如果同一個專案有不同環境,也可以在資料庫名稱後面加上環境名稱。

shop_dev
shop_test
shop_staging
shop_production

我自己會比較偏好簡單明確,例如正式環境使用 shop,測試環境使用 shop_test,開發環境使用 shop_dev

資料表名稱

資料表名稱在 Laravel 裡面通常使用小寫、複數、底線命名法,也就是 snake case。

例如 User Model 預設會對應到 users 資料表。

User -> users
Post -> posts
Product -> products
OrderItem -> order_items
PasswordResetToken -> password_reset_tokens

所以我會建議資料表命名使用以下規則。

  • 使用複數名詞
  • 使用小寫
  • 多單字使用底線 _
  • 名稱描述資料本身,不描述動作

好的命名如下。

users
posts
products
orders
order_items
product_categories
login_logs

不建議的命名如下。

User
user
user_data
create_order

其中 create_order 比較像動作,不適合當資料表名稱。資料表應該描述「存放什麼資料」,所以用 orders 會比較好。

欄位名稱

欄位名稱建議使用小寫、單數、底線命名法。

id
name
email
password
created_at
updated_at
deleted_at
user_id
product_id
order_number
payment_status

Laravel 預設常見欄位也都是這種風格。

id
created_at
updated_at
deleted_at

如果是外鍵,Laravel 常見習慣是使用「單數資料表名稱 + _id」。

user_id
post_id
product_id
category_id
order_id

需注意,Laravel 有一些習慣的欄位名稱命名方式,這些名稱是會影響程式碼的運作的,這方面可以參考官方文件。

命名全小寫的原因

雖然有些資料庫可以支援大小寫混合,但不同作業系統、不同資料庫設定、不同工具之間可能會出現差異。為了降低不必要的麻煩,我會建議資料庫命名全部使用小寫,並用底線分隔單字。

避免使用保留字

除了最基本的命名應避免使用資料庫語法保留字之外,還需注意有些預設的資料表是有特定用途的,例如:Laravel 預設的 users 資料表是用來存放使用者的。應保留那些資料表給預設的程式使用。

不建議過度縮寫

命名可以簡短,但不要短到看不懂。

不建議:

usr_id
prd_id
amt
qty
addr

建議:

user_id
product_id
amount
quantity
address

有些縮寫如果非常常見,可以接受,例如 idurlip

id
url
ip_address

但如果不是大家都能馬上理解的縮寫,就不建議使用。

命名範例

以下是一個簡單的購物系統命名範例。

users
products
product_categories
orders
order_items
payments
shipping_addresses

orders 資料表欄位範例:

id
user_id
order_number
payment_status
shipping_status
total_amount
paid_at
shipped_at
created_at
updated_at

order_items 資料表欄位範例:

id
order_id
product_id
product_name
quantity
unit_price
subtotal_amount
created_at
updated_at

這樣命名的好處是,只看資料表和欄位名稱,大概就能理解資料之間的關係。

總結

資料庫命名沒有唯一標準,但一定要有一致的規則。若是 Laravel 專案,我會建議資料庫、資料表、欄位都使用小寫 snake case,資料表使用複數,欄位使用單數,遵守 Laravel 資料庫的命名習慣,例如:外鍵使用單數名稱加上 _id

簡單整理如下。

資料庫名稱:小寫 snake case
資料表名稱:小寫、複數、snake case
欄位名稱:小寫、單數、snake case
外鍵欄位 (Laravel):單數名稱 + _id
時間欄位 (Laravel):事件名稱 + _at

只要命名清楚、一致、符合 Laravel 習慣,後續不管是寫 Model、Migration、Query,或是其他人接手維護,都會輕鬆很多。

觀看次數: 21
databaselaravel資料庫
按讚追蹤 Enjoy 軟體 Facebook 粉絲專頁
每週分享資訊技術

一杯咖啡的力量,勝過千言萬語的感謝。

支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!