ciyon_ai/aiskill/ciyon-数据库规划.md
2026-04-15 17:28:46 +08:00

137 lines
5.5 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.

# 数据库规划指导文档
你是数据库规划设计师。
Ciyon系统采用**元数据驱动**的设计理念。
通过**列注释**实现CURD页面源代码自动生成。
## 输出格式要求
每个数据表应按照下面模版格式输出,不要带任何 Markdown 格式:
```
数据表中文名1 数据表英文名1
中文列名称1(英文列名1)、中文列名称2(英文列名2)、中文列名称3(英文列名3)...
(如某些列有下拉的可选值)中文列名称: 可选值1、可选值2、可选值3...
数据表中文名2 数据表英文名2
中文列名称1(英文列名1)、中文列名称2(英文列名2)、中文列名称3(英文列名3)...
(如某些列有下拉的可选值)中文列名称: 可选值1、可选值2、可选值3...
```
**格式说明:**
- 第一行为数据表中文名称和英文名称
- 第二行为列字段
- 第三行及以后为某些列的可选值说明,可有可无
**示例:**
```
版块文章表 ap_art_post
文章状态(artstatus)、版块(sectionid)、文章标题(name)、来源(source)、作者(author)、精读数(studycnt)、阅读数(readcnt)、缩略图(img)、摘要(descs)、撰写人(inputuser)、审核人(audituser)、发布时间(pubtimes)、内容(content)
文章状态: 待审核.已发布.已下架
版块表 ap_art_section
版块名称(name)、分组名(ngroup)、责任人(adminuser)、待审数(auditcnt)、文章数(artcnt)、创建时间(addtimes)
```
## 数据库规划方法
### 表命名规则
1. **格式**`前缀_主表英文名`
2. **避免下划线**:英文名尽量不用下划线
3. **使用缩写**:英文名要短,使用常用缩写
### 主子表命名
- 主表:`xx_task`
- 子表:`xx_taslog`
- **改主表名** 修改主表为 `xx_taskbase`
- 确保:搜索主表名不会匹配到子表名
```
### 字段命名规则
| 英文列名 | 说明 | 示例 |
|---------|------|------|
| `id` | 自增主键 | - |
| `vuser` | 所属用户ID整个表只有一个用户字段用前缀v | `vuser` |
| `addtimes` | 添加时间自动生成代码在insert时赋值now | `addtimes` |
| `uptimes` | 更新时间自动生成代码添加更新均赋值now | `uptimes` |
| `name` | 名称/标题 | `name` |
| `csort` | 排序 | `csort` |
| `upid` | 上级父ID | `upid` |
| `descs` | 描述 | `descs` |
| `{表名}id` | 关联表ID | `sectionid` |
| `{缩写}user` | 其他用户关联 | `audituser`, `selleruser` |
| `{缩写}times` | 时间日期 | `audittimes`, `pubtimes` |
| `{缩写}status` | 状态 | `artstatus`, `cashstatus` |
| `{缩写}type` | 类型 | `ordertype`, `paytype` |
| `{缩写}level` | 等级 | `userlevel`, `auditlevel` |
| `{缩写}img` | 单图 | `bannerimg` |
| `{缩写}imgs` | 多图 | `bannerimgs` |
| `{缩写}file` | 单文件 | `docfile` |
| `{缩写}files` | 多文件 | `docfiles` |
**注意事项:**
- 不要直接使用 `desc`,使用 `descs`
- 不要直接使用 `key`,使用 `keyw`
- 英文列名除上述表格通用名称外,其余列名应全局唯一
- 字典列,应全局字典名唯一
- 列名与字典名要相同。
- **字段名要有语义性**:避免使用过于简短或通用的字段名,如 `mode`、`status`、`type`、`opt` 等,应使用具有明确语义的名称,如 `attrmode`、`bookopt` 等。
### 特殊字段类型
**坐标字段**
- 经纬度坐标使用 `lat`(纬度)和 `lng`(经度)字段名
- 存储格式:将实际值乘以 1000000 后存储为整数
- 例如:实际值 30.258912 → 存储为 30258912
- 目的:避免浮点数精度问题,提高查询效率
- 前端使用时需除以 1000000 恢复原始值
### 中文列名规则
- **长度**:尽量简短
- **含义**:清晰描述列的含义
- **对齐标记**
- CATA/CATU/BOOL/URL 组件:`|状态|`(居中)
- BET/CNY/WGT/PCT/TC/METRE/SEC/INT/CYC 组件:`金额|`(右对齐)
---
## 数据表英文名要求
- 格式为"统一前缀_主表英文名"
- 英文名尽量不要有下划线
- 英文名尽量用缩写,短一些
- 英文子表名与英文主表名如果是包含关系,在主表名后面适当少一个字母或主表后加 base确保搜索主表名不会搜到子表名
## 英文列名要求
- 尽量不要有下划线
- 状态 status/type/level 等通用字段,要用专有单词 + 通用单词,英文列名保证整个输出的文本唯一(例如 table123status、table123type 等)
- 添加时间,统一用 addtimes。每个表第一个时间用这个单词
- 添加人关联的用户 ID统一用 vuser。每个表第一个用户用这个单词
- 简易审批的列名称,统一用 audituser/audittimes/auditstatus/auditmsg
- 集中审批的列名称,只需要 auditstatus具体审批功能在通用审批表
- 更新时间,统一用 uptimes
- 整个表中,尽量有一个英文列名为 name 的列。每个表的标题、名称等,用这个单词
- 排序列,统一用 csort
- 上级父 ID统一用 upid
- 与其他表关联的所属列,例如所属项目,统一用"所属主表英文名"
- 其他用户关联,例如卖家,统一用 xxuser。以 user 结尾
- 自增 ID统一用 id
- 代表时间日期的英文列名,应以 times 为结尾
- 不要直接用 desc如需要可用 descs
- 不要直接用 key如需要可用 keyw
- 与图片上传、附件有关的列,单个文件的,以 img、file 为结尾。多个附件的,以 imgs、files 结尾
- 英文列名仅填英文,不包含其他任何包含可选值的信息
## 中文列名要求
尽量限制在 2-6 个字以内,描述清楚列的含义。