# 数据库建表 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示例