db-design-spec


name: db-design-spec
description: 当需要设计、修改数据库设计时,使用此技能统一表和字段的命名规范
metadata:
author: ITXiaoPang
version: 1.0.0

数据库中表和字段的命名规范

概述

本文档定义了表名、字段名的标准命名规范,旨在确保数据库设计的一致性、可读性和可维护性。

表命名规范

基本原则

  1. 表名全部小写
  2. 使用下划线分隔单词
  3. 表名应简洁明了,能清晰表达表的用途
  4. 避免使用缩写,除非是广泛认知的标准缩写

表类型分类

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. 字段名全部小写
  2. 使用下划线分隔单词
  3. 字段名应明确表达字段含义
  4. 统一使用表前缀作为字段前缀

标准字段模式

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 - 数据库与可用区关系表中的可用区

数据类型规范

常用字段类型标准

  1. 主键: INT AUTO_INCREMENT PRIMARY KEY
  2. 时间字段: DATETIME
  3. 用户字段: VARCHAR
  4. 名称字段: VARCHAR
  5. enabled字段: TINYINT(1) (0=禁用, 1=启用)
  6. 备注字段: TEXT
  7. 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

索引命名规范

索引类型

  1. 主键索引: PRIMARY
  2. 外健索引: fk_{表名}_{字段名}
  3. 唯一索引: uk_{表名}_{字段名}
  4. 普通索引: ix_{表名}_{字段名}
  5. 复合索引: ix_{表名}_{字段1}_{字段2}

注释规范

表注释

  • 必须为每个表添加中文注释,说明表的用途
  • 格式: 简洁明了的功能描述

字段注释

  • 所有字段必须添加中文注释
  • 关联字段应说明关联的对象
  • 枚举值字段应说明可选值

示例表结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72

-- 微服务实例主表
CREATE TABLE `msi_mstr` (
`msi_id` int NOT NULL AUTO_INCREMENT,
`msi_ms` int NOT NULL COMMENT '微服务序号',
`msi_name` varchar(64) NOT NULL COMMENT '微服务实例名',
`msi_env` int NOT NULL COMMENT '环境序号',
`msi_create_user` int DEFAULT NULL,
`msi_modify_user` int DEFAULT NULL,
`msi_create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`msi_modify_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`msi_rmks` varchar(128) DEFAULT NULL COMMENT '备注',
`msi_enabled` tinyint(1) DEFAULT '1' COMMENT '已启用',
`msi_extra` json DEFAULT NULL COMMENT '附加值',
`msi_alias` varchar(64) DEFAULT NULL COMMENT '微服务实例别名',
`msi_desc` varchar(64) DEFAULT NULL COMMENT '微服务实例描述',
`msi_app_dir` varchar(64) DEFAULT NULL COMMENT '微服务程序目录',
`msi_log_dir` varchar(64) DEFAULT NULL COMMENT '日志目录',
`msi_default_shell` varchar(32) DEFAULT NULL COMMENT '默认SHELL',
`msi_build_from_code` tinyint(1) DEFAULT NULL COMMENT '从源码构建(留空则从微服务中继承)',
`msi_code_repo` varchar(128) DEFAULT NULL COMMENT '代码仓库(留空则从微服务中继承)',
`msi_code_commit` varchar(40) DEFAULT NULL COMMENT '代码提交HASH',
`msi_code_tag` varchar(32) DEFAULT NULL COMMENT '代码标签',
`msi_code_branch` varchar(32) DEFAULT NULL COMMENT '代码分支',
`msi_timezone` varchar(50) DEFAULT NULL COMMENT 'IANA 时区(留空则从微服务中继承)',
`msi_package_manager` varchar(32) DEFAULT NULL COMMENT '包管理器(留空则从微服务中继承)',
`msi_runtime` varchar(32) DEFAULT NULL COMMENT '运行时(留空则从微服务中继承)',
`msi_release_order` varchar(64) DEFAULT NULL COMMENT '发布单号',
`msi_release_time` datetime DEFAULT NULL COMMENT '发布时间',
`msi_ci_options` json DEFAULT NULL COMMENT '持续集成参数(留空则从微服务中继承)',
`msi_cd_options` json DEFAULT NULL COMMENT '持续发布选项(留空则从微服务中继承)',
`msi_code_main_branch` varchar(32) DEFAULT NULL COMMENT '代码主分支',
`msi_last_status` json DEFAULT NULL COMMENT '同步到的状态',
PRIMARY KEY (`msi_id`),
UNIQUE KEY `ix_msi_ms_msi_name` (`msi_ms`,`msi_name`),
KEY `ix_msi_env` (`msi_env`),
KEY `ix_msi_ms` (`msi_ms`),
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='微服务实例';

-- 微服务实例详情表
CREATE TABLE `msid_det` (
`msid_id` int NOT NULL AUTO_INCREMENT,
`msid_name` varchar(64) NOT NULL,
`msid_create_user` int DEFAULT NULL,
`msid_modify_user` int DEFAULT NULL,
`msid_create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`msid_modify_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`msid_rmks` varchar(128) DEFAULT NULL,
`msid_msi` int DEFAULT NULL,
`msid_enabled` tinyint(1) DEFAULT '1',
`msid_extra` json DEFAULT NULL,
`msid_alias` varchar(64) DEFAULT NULL,
`msid_desc` varchar(64) DEFAULT NULL,
`msid_kind` varchar(32) DEFAULT NULL,
`msid_namespace` varchar(63) DEFAULT NULL,
`msid_yaml` mediumtext,
PRIMARY KEY (`msid_id`),
UNIQUE KEY `ix_msid_msi_msid_name_msid_kind_msid_namespace` (`msid_msi`,`msid_name`,`msid_kind`,`msid_namespace`),
KEY `ix_msid_msi` (`msid_msi`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='微服务实例明细';

-- 微服务实例与集群关系表
CREATE TABLE `msiclusterr_rel` (
`msiclusterr_id` int NOT NULL AUTO_INCREMENT,
`msiclusterr_msi` int NOT NULL,
`msiclusterr_cluster` int NOT NULL,
PRIMARY KEY (`msiclusterr_id`),
UNIQUE KEY `ix_msiclusterr_msi_msiclusterr_cluster` (`msiclusterr_msi`,`msiclusterr_cluster`),
KEY `ix_msiclusterr_cluster` (`msiclusterr_cluster`),
KEY `ix_msiclusterr_msi` (`msiclusterr_msi`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='微服务实例部署集群';


db-design-spec
https://itxiaopang.github.io/p/e531f3a365754880969b50cebcc54732/
作者
挨踢小胖
发布于
2025年7月1日
许可协议