Files
zkxw/openspec/changes/zkxw-engineering-standards/specs/database-conventions/spec.md
T

47 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## ADDED Requirements
### Requirement: MySQL 版本
生产与标准开发环境的关系型数据库 SHALL 使用 MySQL 5.7(与《中科兴皖需求 V0.3》§3 一致)。
#### Scenario: 新环境搭建文档
- **WHEN** 编写或更新部署文档
- **THEN** 文档 SHALL 声明 MySQL 5.7 及字符集/排序规则(如 utf8mb4)基线
### Requirement: 公共字段集合
除需求或 OpenSpec 明确豁免的关联/日志表外,业务表 SHALL 包含以下公共字段且语义一致:`id`(VARCHAR(64),UUID)、`tenant_no`、`order_num`、`remark`、`create_by`、`create_dept_id`、`create_time`、`update_by`、`update_time`、`del_flag`(与需求 §3 列表一致)。
#### Scenario: 新建业务表 DDL
- **WHEN** 创建新表
- **THEN** 表定义 SHALL 包含上述公共字段,且 `del_flag` 默认 `0` 表示未删除
### Requirement: 字段顺序
表模型定义与 DDL 中,业务字段 SHALL 位于 `id` 之后;`tenant_no`、`order_num`、`remark`、`create_by`、`create_dept_id`、`create_time`、`update_by`、`update_time`、`del_flag` SHALL 位于业务字段之后(与需求 §3 一致)。
#### Scenario: Code review DDL
- **WHEN** 审查新建表 SQLAlchemy 模型或 raw SQL
- **THEN** 字段顺序 SHALL 符合本 requirement,除非评审记录中注明例外原因
### Requirement: 逻辑删除
应用层 SHALL NOT 对业务数据执行物理删除;删除操作 SHALL 通过将 `del_flag` 置为 `1` 实现;查询默认 SHALL 排除已删除行。
#### Scenario: 删除用户可见记录
- **WHEN** 用户点击删除某条业务数据
- **THEN** 服务端 SHALL 更新 `del_flag` 而非 `DELETE FROM`,且列表接口默认不返回 `del_flag=1`
### Requirement: 主键类型
主键 `id` SHALL 为 `VARCHAR(64) NOT NULL`,取值策略为 UUID(与需求 §3)。
#### Scenario: 插入新行
- **WHEN** 应用创建新实体
- **THEN** 写入的 `id` SHALL 为符合长度与格式的 UUID 字符串