为什么命名这么重要
在开发一个新系统时,很多人急着写代码、建表,却忽略了命名这件事。可等到项目做到一半,发现同事写的表叫 user_info_v2_bak,自己写的叫 t_usr_tmp,查起来一头雾水,改起来更是提心吊胆。
我之前参与过一个数据分析项目,光是花在理解字段含义上的时间就占了整个任务的三成。后来我们统一了数据模型命名规范,沟通成本立马降了下来,连产品经理都能看懂部分字段的意思。
通用命名原则
命名不是起外号,得有章法。几个基本原则得守住:
- 见名知意:order_status 比 os 强太多
- 统一风格:别一会儿下划线,一会儿驼峰
- 避免缩写:除非是公认简写,比如 id、url
- 小写优先:多数数据库对大小写不敏感,小写更安全
表名怎么起
表名建议用名词复数,带业务域前缀。比如电商系统里,订单相关表可以这样命名:
sales_order
sales_order_item
sales_customer
inventory_product如果公司有多个业务线,加个前缀能避免冲突。比如财务系统的账单表叫 fin_invoice,就不会和运营的 op_invoice 搞混。
字段命名实战
字段命名最容易乱来。记住一点:字段名要能完整表达它的含义。
比如用户注册时间,别写成 reg_time 或 rt_create。推荐写成 user_registration_time,虽然长点,但谁看了都明白。
状态类字段统一用 status 结尾:
order_status
payment_status
delivery_status布尔值字段用 is_ 开头:
is_active
is_deleted
is_verified索引和约束的命名规则
很多人建完索引就扔那儿不管了,名字还是数据库自动生成的一串乱码。建议按规则命名,方便排查问题。
比如主键统一叫 pk_表名,唯一索引叫 uk_表名_字段名,普通索引叫 idx_表名_字段名:
pk_user
uk_user_email
idx_order_created_time这样一看名字就知道是什么类型的约束,DBA 也会感谢你。
别忽视注释
再好的命名也不能完全替代注释。特别是那些业务含义复杂的字段,比如 user_score_weighted,到底怎么算的?一句注释就能省去后续无数解释。
像这种关键字段,建表时顺手加上说明,后期维护的人会默默给你点赞。
团队如何落地这套规范
光写文档没用,得落到实际流程里。我们团队的做法是:
- 把命名规范写进项目 Wiki
- 代码评审时专门检查命名是否合规
- 用工具自动扫描不符合规则的表结构
刚开始有人嫌麻烦,两个月后大家都说“早该这么干了”。