
PHP 中数据库字段命名应以清晰、一致、可维护为原则,兼顾数据库兼容性与代码可读性,不追求花哨,重在实用和团队协作顺畅。
使用小写字母加下划线(snake_case)
这是最广泛接受的字段命名风格,尤其在 MySQL 等主流关系型数据库中表现稳定,避免大小写敏感问题(如某些 Linux 环境下表名/字段名区分大小写)。
- ✅ 推荐:
user_id、created_at、is_active - ❌ 避免:
userId(驼峰式易引发 ORM 映射歧义)、UserID(大小写混用风险)、user-id(短横线在 SQL 中需转义,易出错)
字段名语义明确,避免缩写和歧义
命名应让人一眼理解其含义,不依赖注释或上下文猜测。缩写仅限广泛共识的(如 id、url、qty),禁用自造缩写。
- ✅ 推荐:
order_status、payment_method、email_verified_at - ❌ 避免:
ost(status?order status?)、paymth(难读)、usr_name(非标准缩写,不如user_name直观)
主键、时间戳等通用字段统一前缀或后缀
约定俗成的命名有助于快速识别字段用途,降低团队理解成本,也方便在 Laravel、ThinkPHP 等框架中自动识别(如自动处理 created_at/updated_at)。
立即学习“PHP免费学习笔记(深入)”;
- 主键统一用
id(单表场景),复合主键或需区分时用table_name_id(如user_id作外键) - 时间戳推荐
created_at、updated_at、deleted_at(软删除) - 状态类布尔字段用
is_*前缀(如is_published),值为 TINYINT(1) 或 BOOLEAN,语义比status更直接
避免保留字和特殊字符
即使加反引号能绕过,也应主动规避 MySQL、PostgreSQL 等常见数据库的保留关键字,减少语法错误与调试困扰。
- ❌ 避免:
order(MySQL 保留字)、group、key、desc、limit - ✅ 替代方案:
order_number、group_name、api_key、sort_desc、result_limit - 可在开发初期用工具检查(如 MySQL 的 官方保留字列表)
不复杂但容易忽略——好命名不是一蹴而就的习惯,而是每次建表时多花十秒想清楚“别人看到这个字段会怎么理解”。长期下来,查 Bug、写联表、做迁移都更省力。










