Skip to content

表设计

名字

见名知意

言简意赅,见名知意,能够提高沟通和维护成本。
模拟两可,不知所云,显得杂乱无章,让人难以理解。

  • 示例
用户名称字段定义成:user_name

大小写

名字尽量都用小写字母,因为从视觉上,小写字母更容易让人读懂。

  • 示例
字段名:product_name

分隔符

  • 示例
字段名:product_name

强烈建议大家在单词间用 _ 分隔。

表名

带上业务前缀

订单相关:order_,例如:order_pay、order_pay_detail等。

商品相关:product_,例如:product_spu,product_sku等。

字段名称

  • 字段统一:如 状态统一使用 status ,而不是一个地方使用 status 另一个地方使用 flag
    • created_at 创建时间
    • updated_at 更新时间
    • deleted_at 删除时间
  • 关联关系字段名带上关联表名称:如 classes.idstudents.class_id

很多公共字段,在不同的表之间,可以使用全局统一的命名规则,定义成相同的名称,以便于大家好理解。

索引名

索引有很多种,包括:主键、普通索引、唯一索引、联合索引等。

每张表的主键只有一个,一般使用 id 命名。

普通索引和联合索引,其实是一类。在建立该类索引时,可以加 index_ 前缀,比如:index_users_status

唯一索引,可以加 unique_ 前缀,比如:unique_users_email

字段类型

时间格式的数据有:date、datetime和timestamp等等可以选择。

字符类型的数据有:varchar、char、text等可以选择。

数字类型的数据有:int、bigint、smallint、tinyint等可以选择。

参考原则

  • 尽可能选择占用存储空间小的字段类型,在满足正常业务需求的情况下,从小到大,往上选。
  • 如果字符串长度固定,或者差别不大,可以选择char类型。如果字符串长度差别较大,可以选择varchar类型。
  • 是否字段,可以选择bit类型。
  • 枚举字段,可以选择tinyint类型。
  • 主键字段,可以选择bigint类型。
  • 金额字段,可以选择decimal类型。
  • 时间字段,可以选择timestamp或datetime类型。

字段长度

字段个数

主键

存储引擎

NOT NULL

外键

索引

时间字段

金额字段

json字段

唯一索引

字符集

排序规则

大字段

注释

冗余字段