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.id 和 students.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字段 ​

唯一索引 ​

字符集 ​

排序规则 ​

大字段 ​

注释 ​

冗余字段 ​