788 lines
24 KiB
Markdown
788 lines
24 KiB
Markdown
# 数据库建表 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|<code>?</code>',
|
||
```
|
||
|
||
#### 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|<code>?</code>',
|
||
```
|
||
|
||
#### 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'
|
||
```
|
||
- 用途:单张图片上传
|
||
- 前端组件:`<ciy-upload com="xxx" num="1" />`
|
||
- 示例:
|
||
```sql
|
||
`img` varchar(50) NOT NULL COMMENT '缩略图,IMG1',
|
||
`avar` varchar(50) NOT NULL DEFAULT '' COMMENT '头像,IMG1',
|
||
```
|
||
|
||
#### IMG - 多图上传
|
||
```
|
||
COMMENT '图片,IMG'
|
||
COMMENT '活动花絮,IMG'
|
||
```
|
||
- 用途:多张图片上传
|
||
- 前端组件:`<ciy-upload com="xxx" num="3" />`
|
||
- 存储格式:路径1~路径2~路径3
|
||
- 存储容量:约50字符串一个附件,3个附件=150varchar
|
||
- 示例:
|
||
```sql
|
||
`imgs` varchar(250) NOT NULL DEFAULT '' COMMENT '图片,IMG',
|
||
```
|
||
|
||
#### DOWN - 文件下载
|
||
```
|
||
COMMENT '发票,DOWN'
|
||
COMMENT '文档,DOWN'
|
||
```
|
||
- 用途:文件上传和下载链接
|
||
- 前端组件:`<ciy-upload com="xxx" num="3" type="*"/>`
|
||
- 存储格式:路径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文档
|
||
- 前端组件:`<ciy-markdown com="xxx" />`
|
||
- 存储格式:云存储路径
|
||
- 示例:
|
||
```sql
|
||
`content` mediumtext NOT NULL COMMENT ',内容,FILEMD',
|
||
```
|
||
|
||
---
|
||
|
||
### 文本类组件
|
||
|
||
#### BR - 多行文本(换行)
|
||
```
|
||
COMMENT '摘要,BR'
|
||
COMMENT '工单提问,BR'
|
||
```
|
||
- 用途:多行文本内容(自动换行显示)
|
||
- 前端组件:`<ciy-textarea com="xxx" />`
|
||
- 示例:
|
||
```sql
|
||
`descs` varchar(250) NOT NULL COMMENT ',摘要,BR',
|
||
`content` text NOT NULL COMMENT '答复内容,BR',
|
||
```
|
||
|
||
#### MD - Markdown编辑器
|
||
```
|
||
COMMENT '内容,MD'
|
||
```
|
||
- 用途:Markdown富文本编辑器
|
||
- 前端组件:`<ciy-markdown com="xxx" />`
|
||
- 存储格式:字符串数据库存储
|
||
- 示例:
|
||
```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` 字段使用)
|
||
- 前端组件:`<ciy-map com="loc" />`
|
||
- 需要两个字段:`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|<code>?</code>',
|
||
`renzheng` int(11) NOT NULL COMMENT '认证情况,TBIN,re.nz.he.ng|<kbd>?</kbd>',
|
||
`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 | `<ciy-select com="xxx" all="无" />` | 字典下拉 |
|
||
| CATU | `<ciy-select com="xxx" />` | 用户下拉 |
|
||
| DB | `<ciy-select com="xxx" all="无" />` | 关联表下拉 |
|
||
| CATM | `<ciy-selcas com="xxx" />` | 级联选择 |
|
||
| CATS | `<ciy-checkbox com="xxx" />` | 多选框 |
|
||
| TBIN | `<ciy-checkbox com="xxx" />` | 位运算多选 |
|
||
| BOOL | `<ciy-switch com="xxx" y="✔" n="✘" />` | 开关 |
|
||
| IMG1 | `<ciy-upload com="xxx" num="1" type="jpg,png" />` | 单图上传 |
|
||
| IMG | `<ciy-upload com="xxx" num="3" type="jpg,png" />` | 多图上传 |
|
||
| DOWN | `<ciy-upload com="xxx" num="3" type="pdf,docx,xlsx,zip" />` | 文件上传 |
|
||
| DATE | `<ciy-datetime com="xxx" />` | 日期选择 |
|
||
| TIME | `<ciy-timepoint com="xxx" />` | 时间点选择 |
|
||
| LOC | `<ciy-map com="xxx" />` | 地图选择 |
|
||
| BR | `<ciy-textarea com="xxx" />` | 多行文本 |
|
||
| MD | `<ciy-markdown com="xxx" />` | Markdown编辑器 |
|
||
| CNY | `<ciy-inputbet com="xxx" unit="元" bet="100" />` | 金额输入 |
|
||
| WGT | `<ciy-inputbet com="xxx" unit="KG" bet="1000" />` | 重量输入 |
|
||
| LGH | `<ciy-inputbet com="xxx" unit="米" bet="1000" />` | 长度输入 |
|
||
| PCT | `<ciy-inputbet com="xxx" unit="%" bet="100" />` | 百分比输入 |
|
||
| SEC | `<ciy-inputbet com="xxx" unit="秒" bet="1" />` | 时长输入 |
|
||
| CYC | `<ciy-inputcyc com="xxx" />` | 周期输入 |
|
||
| UNIT | `<ciy-inputunitedit com="xxx" />` | 单位编辑 |
|
||
| BET | `<ciy-inputbet com="xxx" unit="元" bet="100" />` | 小数输入 |
|
||
| INT | `<input type="text" name="xxx" />` | 普通输入 |
|
||
|
||
---
|
||
|
||
## 数据格式化对照表
|
||
|
||
| 组件名 | 存储值 | 显示值 |
|
||
|-------|-------|-------|
|
||
| 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示例
|
||
|