# 03-数据库设计文档 - **Schema**: `{{schema_name}}` - **Migration 清单**: `sql/migrations/V*.sql`(由 Flyway 顺序 apply) - **生成方式**: 由 A3 `db-design-gen` 基于 `docs/01-需求清单//` 下各 REQ 卡片(文件名 == req_id)正向设计生成(schema SSoT)。 ## 项目标准列约定 下文每张业务表的字段清单都自动包含以下 **11 个基础标准列**(匈牙利前缀 `i` int / `s` varchar / `t` datetime / `b` bit),所有表通用;在此之上按表位追加专属标准列:**主表**额外加 **4 个审核标准列**(共 15 列),**从表**额外加 **1 个标准列 `sParentId`**(共 12 列)。渲染时由 `docs-03-table-template.md` 模板内置原样输出。 主表 = 「表清单」中的**第一张表**;从表 = 其余各表。 **基础标准列(11 列,所有表)**: | 列名 | 类型 | 可空 | 主键 | 默认 | 说明 | |---|---|---|---|---|---| | `iIncrement` | int | 否 | 是 | — | 整数主键 ID(标准列);DDL 译为 `PRIMARY KEY` + `AUTO_INCREMENT` | | `sId` | varchar(50) | 否 | — | — | 业务 ID(标准列,对外暴露的字符串标识,如 UUID / 人类可读编号) | | `sBrandsId` | varchar(50) | 否 | — | `1111111111` | 品牌 ID(多租户隔离,标准列);DDL 译为 `DEFAULT '1111111111'` | | `sSubsidiaryId` | varchar(50) | 否 | — | `1111111111` | 子公司 ID(组织层级隔离,标准列);DDL 译为 `DEFAULT '1111111111'` | | `sMakePerson` | varchar(50) | 否 | — | 当前登录用户名 | 制单人(标准列);**非 SQL 默认**——应用在 insert 时写入当前登录用户名,DDL 仅写 `varchar(50) NOT NULL`(在该列 COMMENT / 表业务注记里注明 app-assigned) | | `tCreateDate` | datetime | 否 | — | 当前时间 | 记录创建时间(标准列);DDL 译为 `DEFAULT CURRENT_TIMESTAMP` | | `tUpdateDate` | datetime | 否 | — | 当前时间戳 | 记录更新时间(标准列);DDL 译为 `DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`(行更新自动刷新) | | `iOrder` | int | 否 | — | 数据行条数+1 | 排序号;**非 SQL 默认**——应用在 insert 时按 count+1 赋值,DDL 仅写 `int NOT NULL`(不写 DEFAULT 表达式,在该列 COMMENT / 表业务注记里注明 app-assigned) | | `bInvalid` | bit | 否 | — | — | 是否作废(标准列);**非 SQL 默认**——应用 insert 时赋值(如 `0`),DDL 仅写 `bit NOT NULL` | | `sFormId` | varchar(50) | 否 | — | — | 界面 ID(标准列);**非 SQL 默认**——应用维护,DDL 仅写 `varchar(50) NOT NULL` | | `sMemo` | LONGTEXT | 是 | — | — | 备注(标准列) | **从表专属标准列**(从「表清单」第二张表起,即除第一张主表外的所有表都加,插入位置紧随 `sId` 之后): | 列名 | 类型 | 可空 | 主键 | 默认 | 说明 | |---|---|---|---|---|---| | `sParentId` | varchar(50) | 否 | — | — | 业务父级 ID(标准列);仅从表有,紧随 `sId` 之后 | **主表专属标准列**(仅「表清单」第一张主表加,所有主表无条件包含,共 4 列;插入位置紧随 `bInvalid` 之后,即在 `bInvalid` 与 `sFormId` 之间): | 列名 | 类型 | 可空 | 主键 | 默认 | 说明 | |---|---|---|---|---|---| | `bCheck` | bit | 否 | — | — | 是否审核(标准列);**非 SQL 默认**——应用 insert 时赋值(如 `0`),DDL 仅写 `bit NOT NULL` | | `tCheckDate` | datetime | 否 | — | — | 审核时间(标准列);**非 SQL 默认**——审核时由应用写入,DDL 仅写 `datetime NOT NULL` | | `sCheckPerson` | varchar(50) | 否 | — | — | 审核人(标准列);**非 SQL 默认**——审核时由应用写入,DDL 仅写 `varchar(50) NOT NULL` | | `sStatus` | varchar(50) | 否 | — | — | 审核状态(标准列);**非 SQL 默认**——应用维护,DDL 仅写 `varchar(50) NOT NULL` | 字典 / 辅助表如有豁免,在该表业务注记里注明豁免原因。 ## ER 关系概览 {{er_overview}} ## 表清单 {{#each tables}} - `{{table_name}}` — {{purpose}} {{/each}}