db-design-spec
name: db-design-spec
description: 当需要设计、修改数据库设计时,使用此技能统一表和字段的命名规范
metadata:
author: ITXiaoPang
version: 1.0.0
数据库中表和字段的命名规范
概述
本文档定义了表名、字段名的标准命名规范,旨在确保数据库设计的一致性、可读性和可维护性。
表命名规范
基本原则
- 表名全部小写
- 使用下划线分隔单词
- 表名应简洁明了,能清晰表达表的用途
- 避免使用缩写,除非是广泛认知的标准缩写
表类型分类
1. 主表(Master Tables)
- 命名格式:
{业务对象}_mstr - 说明: 存储主要业务实体的核心信息
- 示例:
ms_mstr- 微服务主表msi_mstr- 微服务实例主表business_mstr- 业务线主表cluster_mstr- 集群主表az_mstr- 可用区主表account_mstr- 账户主表
2. 详情表(Detail Tables)
- 命名格式:
{业务对象}d_det - 说明: 存储主表的详细信息或配置信息,必须以’d’结尾再加’_det’
- 示例:
msid_det- 微服务实例详情表billd_det- 账单详情表nicd_det- 网卡详情表metricd_det- 监控指标详情表aliyuncmsd_det- 阿里云监控详情表
3. 历史表(History Tables)
- 命名格式:
{业务对象}h_hist - 说明: 存储历史数据和变更记录,必须以’h’结尾再加’_hist’
- 示例:
billh_hist- 账单历史表requesth_hist- 请求历史表
4. 关系表(Relation Tables)
- 命名格式:
{主表对象}{关联对象}r_rel - 说明: 表示两个实体之间的关联关系,必须以’r’结尾再加’_rel’
- 示例:
msiclusterr_rel- 微服务实例与集群关系表msicomputer_rel- 微服务实例与云计算关系表msidbr_rel- 微服务实例与数据库关系表msidomaindr_rel- 微服务实例与DNS解析关系表msimqr_rel- 微服务实例与消息队列关系表msinosqlr_rel- 微服务实例与NoSQL数据库关系表computesecgroupr_rel- 云计算与安全组关系表dbazr_rel- 数据库与可用区关系表nicsecgroupr_rel- 网卡与安全组关系表mqsubnetr_rel- 消息队列与子网关系表saesubnetr_rel- SAE与子网关系表msimsir_rel- 微服务实例依赖关系表
字段命名规范
基本原则
- 字段名全部小写
- 使用下划线分隔单词
- 字段名应明确表达字段含义
- 统一使用表前缀作为字段前缀
标准字段模式
1. 主键字段
- 命名格式:
{表前缀}_id - 示例:
ms_id- 微服务表主键msi_id- 微服务实例表主键msid_id- 微服务实例详情表主键billh_id- 账单历史表主键msimsir_id- 微服务依赖关系表主键
2. 审计字段(标准配置)
所有表都应包含以下审计字段:
{表前缀}_id- 主键ID{表前缀}_create_user- 创建人{表前缀}_modify_user- 修改人{表前缀}_create_time- 创建时间{表前缀}_modify_time- 修改时间{表前缀}_enabled- 启用状态{表前缀}_extra- 附加JSON数据{表前缀}_rmks- 备注
3. 业务字段
- 命名格式:
{表前缀}_{字段含义} - 示例:
ms_name- 微服务名ms_alias- 微服务别名ms_owner- 微服务负责人msi_env- 微服务实例环境cluster_type- 集群类型
4. 关联字段
- 命名格式:
{表前缀}_{关联表对象} - 示例:
msi_ms- 微服务实例关联的微服务msiclusterr_msi- 微服务实例与集群关系表中的微服务实例msiclusterr_cluster- 微服务实例与集群关系表中的集群dbazr_db- 数据库与可用区关系表中的数据库dbazr_az- 数据库与可用区关系表中的可用区
数据类型规范
常用字段类型标准
- 主键:
INT AUTO_INCREMENT PRIMARY KEY - 时间字段:
DATETIME - 用户字段:
VARCHAR - 名称字段:
VARCHAR - enabled字段:
TINYINT(1)(0=禁用, 1=启用) - 备注字段:
TEXT - JSON数据:
JSON
字段长度建议
业务ID类字段: 256位 (instance_id, resource_id等)
名称类字段: 128位 (name, alias等)
描述类字段: 512位 (description, rmks等)
URL类字段: 256位 (repo_url等)
IPv4地址: 15位 (IPv4)
IPv6地址: 128位 (IPv6)
MAC地址: 17位 (xx:xx:xx:xx:xx:xx)
默认值
{表前缀}_create_time: now(){表前缀}_modify_time: now() ON UPDATE now(){表前缀}_enabled: 1
索引命名规范
索引类型
- 主键索引:
PRIMARY - 外健索引:
fk_{表名}_{字段名} - 唯一索引:
uk_{表名}_{字段名} - 普通索引:
ix_{表名}_{字段名} - 复合索引:
ix_{表名}_{字段1}_{字段2}
注释规范
表注释
- 必须为每个表添加中文注释,说明表的用途
- 格式: 简洁明了的功能描述
字段注释
- 所有字段必须添加中文注释
- 关联字段应说明关联的对象
- 枚举值字段应说明可选值
示例表结构
1 | |
db-design-spec
https://itxiaopang.github.io/p/e531f3a365754880969b50cebcc54732/