# 数据库建表 SQL 指导文档
你是数据库 DBA 管理员。需根据开发者已经规划好的表结构,转义成 create table SQL 语句。
### 输出文档名称
/建表SQL.sql
## 列注释标准格式
### 基本格式
```
COMMENT '中文列名,组件名,参数'
```
**三部分说明:**
1. **中文列名**:显示在界面上的字段标题,支持对齐标记
2. **组件名**:决定前端组件类型和数据格式化方式
3. **参数**:组件的配置参数(可选)
### 对齐方式标记
在中文列名中使用竖线标记对齐方式:
- **居中对齐**:`|状态|` - 两端加竖线
- **右对齐**:`金额|` - 右侧加竖线
- **左对齐**:默认,不加竖线
**示例:**
```sql
`artstatus` int(11) NOT NULL COMMENT '|文章状态|,CATA,artstatus', -- 居中
`studycnt` int(11) NOT NULL DEFAULT 0 COMMENT '精读数|', -- 右对齐
`name` varchar(180) NOT NULL COMMENT '文章标题', -- 左对齐(默认)
```
### 特殊标记
- **默认隐藏列**:中文列名前加 `#`,如 `#隐藏字段`
- **列表不显示**:中文列名前加 `,`,如 `,内部字段`
## 输出格式
- 一行一条 SQL,每行分号结束
- 不要包含任何代码格式包裹和其他内容或解释
## 总体遵循规则
- 将中文表名作为表注释
- id 字段设置自增
- 除 id 列外,其他所有列都要加列注释
- 不要建立任何的外键、索引、触发器等
- 所有列必须设置默认值,字符串默认为空字符串,数字默认为 0
- 所有列都禁止 null
- 所有列名称全部小写
- 所有列名称两端都用反引号包裹
- 中文列名对齐规则:
- 如果右侧有竖线,则为右对齐(例如:金额|)
- 如果两边有竖线,则为居中对齐(例如:|xx状态|)
- 尽量对中文列名进行合理的居中对齐和右对齐
- 字典、level、status、type 等列,bool 列,url 链接列,应居中对齐,在列注释的中文列名两边加竖线
- 重量、金额、长度、百分比等纯数字的整数列,应右对齐,在列注释的中文列名右边加竖线
## 特别说明
- 组件名为 CATU、CATA、BOOL、URL 的列,中文列名需在两边加竖线
- 组件名为 CNY、KG、PCT、TC、METRE、SEC、INT、CYC 的列,中文列名需在右侧加竖线
- 中文列名结尾是"日期"的列,组件名: DATE,参数为 Y-m-d
## 字段类型规则
- 尽量只用 varchar、bigint、int,谨慎使用 text 字段类型
- 列名称结尾为 times 的时间日期列,必须用 bigint 类型
- 与金额相关的列,如果预计金额不超过百万的情况,可以用 int,否则用 bigint
- 一个列可能包含多个附件的,例如 imgs,应适当评估文件数量,varchar(n),n 是 50*文件数量
- 一个列只可能包含一个文件的,例如 img1,用 varchar(50)
- 与文本有关的列,尽量评估较大容量,适当的使用 varchar(20/50/100/180/250) 等值
- 与公斤、吨、金额、米、温度、百分比有关的列,应使用 bigint 或 int
- 与经纬度有关的列,例如 lat、lng,应使用 int 字段类型
- 与真假布尔有关的 bool 类型的列,使用 int 字段类型
## 组件名规则(优先级从高到低)
- 列名称结尾为 user 的列,组件名: CATU。参数为 ap_user
- 所属关联有关的列,组件名: DB。参数为关联表的表名
- 字典有关的列,组件名: CATA。参数为英文列名称
- 列名称结尾为 times 的列,组件名: DATE。如果中文列名包含"日期"字样那么参数为: Y-m-d
- 金额相关的列,组件名: CNY
- 与科学带小数数字有关的列,组件名: BET。参数1为单位名称。参数2为倍率,默认100
- 重量相关的列,组件名: WGT
- 长度相关的列,组件名: LGH
- 百分比相关的列,组件名: PCT
- 温度相关的列,组件名: TC
- 可带单位的数字列,组件名: INT。参数为单位名。将显示为 5个、2批
- bool 相关的列,组件名: BOOL
- 与经纬度有关的列,lng 列的组件名: LOC,参数为 lat。lat 列不填组件和参数
- 周期相关的列,组件名: CYC
- 时长相关的列,组件名: SEC。将显示为 xx分钟、xx天
- 文档附件类的列,上传多图组件名: IMG,上传单图组件名: IMG1、上传附件组件名: DOWN(例如:照片,IMG)
- url 链接相关的列,组件名: URL
- 列名称以 unit 结尾,多级单位定义有关的列,组件名: UNIT。将显示为: 1箱=24盒,1盒=10支
- 中文列名为说明、内容、简介、介绍、摘要的列,组件名: BR
- 敏感的列,组件名: MSK,参数为****,代表后4位用*代替
- 文件尺寸相关的列,组件名: FSIZE
- 列名称包含 name 的列,中文列名包含[编号、名称、号、名、单位]的列,无组件名
## 中文列名规则
- 组件名为 CATU、CATA、BOOL、URL 的列,中文列名在两边加竖线(例如:|xx状态|)
- 组件名为 BET、CNY、KG、PCT、TC、METRE、SEC、INT、CYC 的列,中文列名在右侧加竖线(例如:金额|、重量|、百分比|)
- id 字段不加列注释
## 组件名完整列表
### 字典类组件
#### CATA - 字典下拉(单选)
```
COMMENT '|状态|,CATA,字典code'
```
- 用途:从字典表读取选项的下拉选择
- 参数:字典的code值
- 示例:
```sql
`artstatus` int(11) NOT NULL COMMENT '|文章状态|,CATA,artstatus',
`userlevel` int(11) NOT NULL COMMENT '|用户等级|,CATA,userlevel',
```
#### CATU - 用户字典(单选)
```
COMMENT '审核人,CATU,adminuser'
```
- 用途:从用户表读取选项的下拉选择
- 参数:通常为 `adminuser`。登录成功随数据字典带出 机构用户id,name列表。
- 示例:
```sql
`audituser` int(11) NOT NULL DEFAULT 0 COMMENT '审核人,CATU,adminuser',
`inputuser` int(11) NOT NULL DEFAULT 0 COMMENT '撰写人,CATU,adminuser',
```
#### CATS - 字典下拉(多选,小写逗号分隔)
```
COMMENT '认证情况,CATS,字典code|分隔符'
```
- 用途:多选字典值,以逗号分隔存储
- 参数:字典code和可选分隔符(默认为 ` - `)
- 示例:
```sql
`certs` varchar(30) NOT NULL DEFAULT '' COMMENT '认证,CATS,certs',
`certs` varchar(30) NOT NULL DEFAULT '' COMMENT '认证,CATS,certs|?',
```
#### CATM - 树形字典(级联)
```
COMMENT '组织结构,CATM,树形字典code|分隔符'
```
- 用途:树形结构字典的级联选择
- 参数:树形字典表名和可选分隔符(默认为 ` - `)
- 示例:
```sql
`prodcata` int(11) NOT NULL COMMENT '组织结构,CATM,zc_depart',
`areacode` int(11) NOT NULL COMMENT '所在地区,CATM,ciy_arearpc',
`areacode` int(11) NOT NULL COMMENT '所在地区,CATM,ciy_arearpc|?',
```
#### TBIN - 位运算字典(多选)
```
COMMENT '认证情况,TBIN,字典code|分隔符'
```
- 用途:通过位运算存储的多选值(最多16个选项)
- 参数:字典code和可选分隔符
- 示例:
```sql
`renzheng` int(11) NOT NULL DEFAULT 0 COMMENT '认证,TBIN,certs',
```
#### TINT - 整型字典
```
COMMENT '发送人,TINT,10:用户.20:平台.30:AI客服'
```
- 用途:直接定义的整型字典选项
- 参数:`值:名称` 格式的选项列表
- 示例:
```sql
`sendtype` int(11) NOT NULL COMMENT '发送人,TINT,10:用户.20:平台.30:AI客服',
```
---
### 关联类组件
#### DB - 表关联(单选)
```
COMMENT '|版块|,DB,关联表名'
```
- 用途:关联其他表的下拉选择
- 参数:关联表名
- 示例:
```sql
`sectionid` int(11) NOT NULL COMMENT '|版块|,DB,ap_art_section',
```
---
### 日期时间类组件
#### DATE - 日期时间
```
COMMENT '创建时间,DATE'
COMMENT '有效期至,DATE,Y-m-d'
```
- 用途:日期时间显示和选择
- 参数:
- 无参数:显示 `Y-m-d H:i`
- `Y-m-d`:仅显示日期(年-月-日)
- 示例:
```sql
`addtimes` bigint(20) NOT NULL COMMENT '创建时间,DATE',
`accounttimes` bigint(20) NOT NULL COMMENT '有效期至,DATE,Y-m-d',
```
#### TIME - 时间点
```
COMMENT '营业时间,TIME'
```
- 用途:一天内的时间点选择(HH:MM格式)
- 示例:
```sql
`dayclock` int(11) NOT NULL COMMENT '营业时间,TIME',
```
---
### 金额数值类组件
#### CNY - 金额(元)
```
COMMENT '充值金额|,CNY'
```
- 用途:人民币金额显示(单位:元)
- 自动格式化:`1000000` → `10,000.00元`
- 实际存储:分为最小单元
- 示例:
```sql
`iemoney` int(11) NOT NULL COMMENT '金额|,CNY',
`cashmoney` int(10) NOT NULL COMMENT '提现金额|,CNY',
```
#### MCNY - 金额(万元)
```
COMMENT '金额|,WCNY,2'
```
- 用途:人民币金额显示(单位:万元)
- 参数:小数位数(默认3位)
- 自动格式化:`100000000` → `100.000万`
- 实际存储:分(0.01元)为最小单元
- 示例:
```sql
`bankmoney` int(11) NOT NULL COMMENT '贷款金额|,WCNY,2',
```
#### MCNY - 金额单位(毫)
```
COMMENT '金额|,WCNY'
```
- 用途:人民币金额显示(单位:元)
- 参数:小数位数,默认保留4位小数
- 自动格式化:`10000` → `1.00元`
- 实际存储:毫元为最小单元,10000毫分=100分=1元
- 示例:
```sql
`qian` int(11) NOT NULL COMMENT '提成金额|,MCNY',
```
#### BET - 科学计数法(带小数)
```
COMMENT '热功|,BET,焦耳,1000,3'
```
- 用途:带小数的数值显示
- 参数:单位,倍率,小数位数
- 示例:
```sql
`price` int(11) NOT NULL COMMENT '热功|,BET,焦耳,1000,3',
```
---
### 物理单位类组件
#### WGT - 重量
```
COMMENT '重量|,WGT,2'
```
- 用途:重量单位显示
- 参数:小数位数
- 自动转换:根据数值自动选择单位
- 实际存储:克为最小单元,1000克=1公斤
- 示例:
```sql
`ton` int(11) NOT NULL COMMENT '吨位|,WGT',
`weightg` int(11) NOT NULL COMMENT '体重|,WGT',
```
#### LGH - 长度
```
COMMENT '长度|,LGH,厘米.米.公里,2'
```
- 用途:长度单位显示
- 参数:单位列表,小数位数
- 实际存储:毫米为最小单元
- 示例:
```sql
`metre` int(11) NOT NULL COMMENT '长度|,LGH',
`height` int(11) NOT NULL COMMENT '身高|,LGH',
```
#### METRE - 米制单位
```
COMMENT '长度|,METRE,米|1000|公里'
```
- 用途:米制单位显示(固定倍率)
- 参数:单位1|倍率|单位2
- 实际存储:米为最小单元
- 示例:
```sql
`metre` int(11) NOT NULL COMMENT '直线距离|,METRE',
```
#### TC - 温度
```
COMMENT '温度|,TC'
```
- 用途:温度显示(摄氏度)
- 实际存储:1/1000摄氏度为最小单元
- 示例:
```sql
`eartmpr` int(11) NOT NULL COMMENT '耳温|,TC',
```
#### SEC - 时长(秒)
```
COMMENT '执行用时|,SEC'
```
- 用途:以秒为单位的时长显示
- 自动格式化:根据数值显示为 `xx秒`、`xx分钟`、`xx小时`
- 示例:
```sql
`runsec` int(11) NOT NULL COMMENT '执行用时|,SEC',
```
#### CYC - 周期
```
COMMENT '执行周期|,CYC'
```
- 用途:周期显示
- 自动格式化:根据数值显示为 `xx天`、`xx月`
- 示例:
```sql
`npcyc` int(11) NOT NULL COMMENT '执行周期|,CYC',
```
#### PCT - 百分比
```
COMMENT '百分比|,PCT'
```
- 用途:百分比显示
- 自动格式化:`50` → `50.00%`
- 示例:
```sql
`pct` int(11) NOT NULL COMMENT '百分比|,PCT',
```
#### INT - 可带单位的整数
```
COMMENT '积分|,INT,分'
COMMENT '活动期数,INT,第?期'
```
- 用途:带单位的整数显示
- 参数:单位名(可用 `?` 占位数值)
- 示例:
```sql
`mypnt` int(11) NOT NULL COMMENT '积分|,INT,分',
`acttm` int(11) NOT NULL COMMENT '活动期数,INT,第?期',
```
---
### 布尔类组件
#### BOOL - 布尔开关
```
COMMENT '|是否使用|,BOOL'
```
- 用途:布尔值的开关显示
- 参数:真值.假值(默认为 `✔.✘`)
- 存储:真值为1,假值为2。其他值无效
- 示例:
```sql
`isuse` int(11) NOT NULL COMMENT '|是否使用|,BOOL,✔.✘',
`isopen` int(11) NOT NULL COMMENT '|是否开启|,BOOL,开启.关闭',
```
---
### 文件附件类组件
#### IMG1 - 单图上传
```
COMMENT '头像,IMG1'
COMMENT '身份证人像面,IMG1'
```
- 用途:单张图片上传
- 前端组件:``
- 示例:
```sql
`img` varchar(50) NOT NULL COMMENT '缩略图,IMG1',
`avar` varchar(50) NOT NULL DEFAULT '' COMMENT '头像,IMG1',
```
#### IMG - 多图上传
```
COMMENT '图片,IMG'
COMMENT '活动花絮,IMG'
```
- 用途:多张图片上传
- 前端组件:``
- 存储格式:路径1~路径2~路径3
- 存储容量:约50字符串一个附件,3个附件=150varchar
- 示例:
```sql
`imgs` varchar(250) NOT NULL DEFAULT '' COMMENT '图片,IMG',
```
#### DOWN - 文件下载
```
COMMENT '发票,DOWN'
COMMENT '文档,DOWN'
```
- 用途:文件上传和下载链接
- 前端组件:``
- 存储格式:路径1~路径2~路径3
- 存储容量:约50字符串一个附件,3个附件=150varchar
- 示例:
```sql
`invfile` varchar(50) NOT NULL DEFAULT '' COMMENT '发票,DOWN',
`downurl` varchar(200) NOT NULL DEFAULT '' COMMENT '文档,DOWN',
```
#### FILEMD - Markdown文档
```
COMMENT '内容,FILEMD'
```
- 用途:文件存储的Markdown文档
- 前端组件:``
- 存储格式:云存储路径
- 示例:
```sql
`content` mediumtext NOT NULL COMMENT ',内容,FILEMD',
```
---
### 文本类组件
#### BR - 多行文本(换行)
```
COMMENT '摘要,BR'
COMMENT '工单提问,BR'
```
- 用途:多行文本内容(自动换行显示)
- 前端组件:``
- 示例:
```sql
`descs` varchar(250) NOT NULL COMMENT ',摘要,BR',
`content` text NOT NULL COMMENT '答复内容,BR',
```
#### MD - Markdown编辑器
```
COMMENT '内容,MD'
```
- 用途:Markdown富文本编辑器
- 前端组件:``
- 存储格式:字符串数据库存储
- 示例:
```sql
`content` mediumtext NOT NULL COMMENT ',内容,MD',
```
---
### 特殊组件
#### UNIT - 多级单位定义
```
COMMENT '库存单位,UNIT'
```
- 用途:定义多级单位换算关系(如 箱→盒→支)
- 存储格式:`单位1|数量|单位2|数量|单位3`
- 示例:`瓶|24|盒|20|箱` 表示 1箱=20盒,1盒=24瓶
- 示例:
```sql
`unit` varchar(50) NOT NULL COMMENT '库存单位,UNIT',
```
#### LOC - 地理位置坐标
```
COMMENT '位置,LOC'
```
- 用途:经纬度坐标(配合 `lng` 字段使用)
- 前端组件:``
- 需要两个字段:`lat`(纬度)和 `lng`(经度)
- 示例:
```sql
`lat` int(11) NOT NULL COMMENT '纬度',
`lng` int(11) NOT NULL COMMENT '位置,LOC,lat',
```
#### URL - 链接
```
COMMENT '链接,URL'
```
- 用途:URL链接
- 示例:
```sql
`url` varchar(180) NOT NULL COMMENT '链接,URL',
`returnurl` varchar(250) NOT NULL DEFAULT '' COMMENT '回调链接,URL',
```
#### IP - IP地址
```
COMMENT 'IP,IP'
```
- 用途:IP地址显示
- 示例:
```sql
`ip` varchar(40) NOT NULL COMMENT 'IP,IP',
```
#### MSK - 敏感信息脱敏
```
COMMENT '手机号,MSK,****'
```
- 用途:敏感信息脱敏显示(如手机号后4位)
- 参数:脱敏标记
- 示例:
```sql
`mobile` varchar(30) NOT NULL COMMENT '手机号,MSK,****',
```
#### FSIZE - 文件大小
```
COMMENT '文件大小|,FSIZE,2'
```
- 用途:文件大小自动格式化
- 参数:小数位数(默认2位)
- 自动格式化:根据数值显示为 Bytes/KB/MB/GB...
- 示例:
```sql
`filesize` int(11) NOT NULL COMMENT '文件大小|,FSIZE,2',
```
---
## 字段类型规则
### 字段类型选择
| 类型 | 用途 | 示例 |
|-----|------|------|
| `varchar(n)` | 文本 | `varchar(50)`, `varchar(180)` |
| `bigint` | 大整数/时间戳 | `bigint(20)` |
| `int` | 整数 | `int(11)` |
| `text/mediumtext` | 长文本 | `text`, `mediumtext` |
### 具体规则
1. **尽量只用**:`varchar`、`bigint`、`int`
2. **谨慎使用**:`text` 字段类型
3. **时间日期列**(`times` 结尾):必须用 `bigint`
4. **金额列**:
- 不超过百万:可用 `int`
- 超过百万:用 `bigint` ,不考虑字段对齐,则都用bigint
5. **单文件**:`varchar(50)`
6. **多文件**:`varchar(50 * 文件数量)`
7. **文本列**:
- 适当评估容量
- 使用 `varchar(20/50/100/180/250)` 等。180及以下建索引效率较高。
8. **物理单位**(公斤/吨/金额/米/温度/百分比):用 `bigint`
9. **经纬度**(`lat`/`lng`):用 `int`
10. **布尔值**:用 `int`
### 默认值规则
- **字符串**:默认为空字符串 `''`
- **数字**:默认为 `0`
- **禁止 NULL**:所有列都禁止 null
---
## 完整示例
### 简单示例
```sql
CREATE TABLE `ap_art_post` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sectionid` int(11) NOT NULL COMMENT '|版块|,DB,ap_art_section',
`artstatus` int(11) NOT NULL COMMENT '|文章状态|,CATA,artstatus',
`artsort` int(11) NOT NULL COMMENT '|推荐排序|,CATA,artsort',
`name` varchar(180) NOT NULL COMMENT '文章标题',
`source` varchar(100) NOT NULL COMMENT '来源',
`author` varchar(50) NOT NULL COMMENT '作者',
`studycnt` int(11) NOT NULL DEFAULT 0 COMMENT '精读数|',
`readcnt` int(11) NOT NULL COMMENT '阅读数|',
`img` varchar(50) NOT NULL COMMENT '缩略图,IMG1',
`descs` varchar(250) NOT NULL COMMENT ',摘要,BR',
`inputuser` int(11) NOT NULL COMMENT '撰写人,CATU,adminuser',
`audituser` int(11) NOT NULL DEFAULT 0 COMMENT '审核人,CATU,adminuser',
`pubtimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '发布时间,DATE',
`content` mediumtext NOT NULL COMMENT ',内容,MD',
PRIMARY KEY (`id`)
) ENGINE = InnoDB COMMENT = '版块文章表';
```
### 复杂示例
```sql
DROP TABLE IF EXISTS `demo_normal`;
CREATE TABLE `demo_normal` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID,ENID',
`auditstatus` int(11) NOT NULL COMMENT '|审核状态|,CATA,auditstatus',
`audituser` int(11) NOT NULL DEFAULT 0 COMMENT '审核人,CATU,adminuser',
`audittimes` bigint(20) NOT NULL COMMENT '审核时间,DATE',
`auditmsg` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '审核理由',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '默认标题',
`menuid` int(11) NOT NULL COMMENT '所属菜单,DB,zc_menu',
`filesize` int(11) NOT NULL COMMENT '文件大小|,FSIZE',
`metre` int(11) NOT NULL COMMENT '长度|,METRE',
`bankmoney` bigint(20) NOT NULL COMMENT '贷款金额|,WCNY',
`setdate` bigint(20) NOT NULL COMMENT '设置日期,DATE,Y-m-d',
`settimes` bigint(20) NOT NULL COMMENT '设置时间,DATE',
`dayclock` int(11) NOT NULL COMMENT '|营业时间|,TIME,H:i:s',
`downurl` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '|文档|,IMG,t',
`avar` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '头像,IMG1',
`isuse` int(11) NOT NULL COMMENT '|是否使用|,BOOL',
`isopen` int(11) NOT NULL COMMENT '|是否开启|,BOOL,开启.关闭',
`unit` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '库存单位,UNIT',
`sigstatus` int(11) NOT NULL COMMENT '|单选状态|,CATA,auditstatus',
`mauditstatus` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '多选状态,CATS,auditstatus|~',
`prodcata` int(11) NOT NULL COMMENT '组织结构,CATM,zc_depart',
`areacode` int(11) NOT NULL COMMENT '所在地区,CATM,ciy_arearpc|?',
`renzheng` int(11) NOT NULL COMMENT '认证情况,TBIN,re.nz.he.ng|?',
`ppint` int(11) NOT NULL COMMENT '|临时字典|,TINT,1:aaa.3:bbbb.5:cccc',
`npcyc` int(11) NOT NULL COMMENT '|执行周期|,CYC',
`runsec` int(11) NOT NULL COMMENT '执行用时|,SEC',
`acttm` int(11) NOT NULL COMMENT '活动期数|,INT,第?期',
`imgs` varchar(800) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '活动花絮,IMG,?50',
`ton` bigint(20) NOT NULL COMMENT '吨位|,TON',
`price` bigint(20) NOT NULL COMMENT '单价|,CNY',
`lat` int(11) NOT NULL COMMENT ',纬度',
`lng` int(11) NOT NULL COMMENT '|位置|,LOC,lat',
`pct` int(11) NOT NULL COMMENT '百分比|,PCT',
`url` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '链接,URL,跳转',
`weightg` bigint(20) NOT NULL COMMENT '体重|,KG,1,KG|1000|吨',
`eartmpr` int(11) NOT NULL COMMENT '耳温|,TC,3',
`qian` bigint(20) NOT NULL COMMENT '中式钱|,LNY',
`meishi` bigint(20) NOT NULL COMMENT '美式钱|,SNY',
`weight` bigint(20) NOT NULL COMMENT '重量|,WGT,G.*KG.TON,1',
`height` bigint(20) NOT NULL COMMENT '长度|,LGH',
`skt` bigint(20) NOT NULL COMMENT '科学数|,BET,SKT,1000,1',
`idcard` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '身份证号,MSK,******#*',
`addtimes` bigint(20) NOT NULL COMMENT '添加时间,DATE',
`content` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',介绍,BR',
`md` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',富文本,MD',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 78 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '复杂功能表' ROW_FORMAT = Dynamic;
```
---
## 前端组件对应表
| 列注释组件 | 前端HTML组件 | 说明 |
|-----------|------------|------|
| CATA | `` | 字典下拉 |
| CATU | `` | 用户下拉 |
| DB | `` | 关联表下拉 |
| CATM | `` | 级联选择 |
| CATS | `` | 多选框 |
| TBIN | `` | 位运算多选 |
| BOOL | `` | 开关 |
| IMG1 | `` | 单图上传 |
| IMG | `` | 多图上传 |
| DOWN | `` | 文件上传 |
| DATE | `` | 日期选择 |
| TIME | `` | 时间点选择 |
| LOC | `` | 地图选择 |
| BR | `` | 多行文本 |
| MD | `` | Markdown编辑器 |
| CNY | `` | 金额输入 |
| WGT | `` | 重量输入 |
| LGH | `` | 长度输入 |
| PCT | `` | 百分比输入 |
| SEC | `` | 时长输入 |
| CYC | `` | 周期输入 |
| UNIT | `` | 单位编辑 |
| BET | `` | 小数输入 |
| INT | `` | 普通输入 |
---
## 数据格式化对照表
| 组件名 | 存储值 | 显示值 |
|-------|-------|-------|
| CNY | 1000000 | 10,000.00元 |
| MCNY | 1000000 | 100.00元 |
| WCNY | 1000000 | 1.00万元 |
| WCNY | 10000000000 | 1.00亿元 |
| WGT | 1000 | 1.00千克 |
| WGT | 1000000 | 1.00吨 |
| LGH | 1000 | 1.00米 |
| LGH | 1000000 | 1.00公里 |
| PCT | 50 | 50.00% |
| SEC | 60 | 1分钟 |
| SEC | 3600 | 1小时 |
| CYC | 7*86400 | 7天 |
| CYC | -1 | 1月 |
| DATE | 1750889011 | 2025-03-18 10:23:31 |
| DATE,Y-m-d | 1750889011 | 2025-03-18 |
| TIME | 1 | 00:00 |
| TIME | 37201 | 10:20 |
| BOOL,✔.✘ | 1 | ✔ |
| BOOL,✔.✘ | 2 | ✘ |
| BOOL,开启.关闭 | 1 | 开启 |
| BOOL,开启.关闭 | 2 | 关闭 |
| FSIZE | 1024 | 1.00KB |
| FSIZE | 1048576 | 1.00MB |
| INT,分 | 100 | 100分 |
| INT,第?期 | 5 | 第5期 |
---
### 生成SQL
根据详细设计中的数据表设计。
通过中英文字段名,在列注释中给出最匹配的组件配置。
**索引**:不加索引。
**字段类型**:选择合适的类型(不要滥用 `text`)
**默认值**:设置合理的默认值
**禁止NULL**:避免NULL值带来的性能问题
生成CREATE TABLE语句。
## 最佳实践
### 组件选择建议
| 业务场景 | 推荐组件 | 原因 |
|---------|---------|------|
| 状态/类型/等级 | CATA | 方便维护字典 |
| 审核人/操作人 | CATU | 从用户表读取 |
| 树形分类 | CATM | 支持级联选择 |
| 多选标签 | CATS | 逗号分隔存储 |
| 开关状态 | BOOL | 直观易用 |
| 金额 | CNY/WCNY | 自动格式化 |
| 图片 | IMG1/IMG | 支持预览和上传 |
| 文件 | DOWN | 支持下载 |
| 富文本 | MD | Markdown支持 |
| 地理位置 | LOC | 地图选点 |
| 多级单位 | UNIT | 自动换算 |
## 使用PGSQL特殊字段
MariaDB/Mysql数据库不适用。
推荐使用geometry、vector、age图、jsonb、gin、array、range、brin等,以提升索引能力为主。
## 附录:参考文件
- `/c5_ciyon.sql` - 数据库SQL示例