通义千问生成数据库表结构时字段命名不一致的根本原因是提示词未明确约束命名规范;必须前置声明snake_case风格、强制核心字段命名惯例、禁用模糊描述并提供带注释的参考样例。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

通义千问生成数据库表结构时字段命名不一致、大小写混用、缩写随意,根本原因是提示词没明确约束命名规范,导致模型按自身语义理解自由发挥。
明确指定命名风格
在提示词开头就写明:【所有字段名必须使用 snake_case 小写下划线风格,禁止驼峰、大写、中文、空格或特殊符号】。
这一步必须前置,否则模型默认会混用 user_name、userName、UserName 甚至 nickName,后续改起来要逐字段核对。
强制定义核心字段命名惯例
列出不可协商的固定映射关系,例如:
主键统一叫 id;创建时间统一叫 created_at;更新时间统一叫 updated_at;软删除标记统一叫 is_deleted。
不写清楚这些,模型可能输出 create_time、gmt_create、add_time 甚至 inserted_at,不同表之间无法对齐。
禁用模糊描述,替换为可执行指令
把“用户相关信息”改成“包含:id(主键,BIGINT UNSIGNED NOT NULL AUTO_INCREMENT)、username(VARCHAR(32) NOT NULL)、email(VARCHAR(255) UNIQUE)、status(TINYINT DEFAULT 1,1=启用,0=禁用)”。
模型看不懂抽象描述,只认具体类型+长度+约束+注释。漏掉 NOT NULL 或 DEFAULT,生成的 DDL 就可能缺关键约束。
提供带注释的参考样例
方法一:直接贴一个干净的表结构片段作为锚点:
```sql
CREATE TABLE `order` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '下单用户ID',
`total_amount` DECIMAL(12,2) NOT NULL DEFAULT 0.00 COMMENT '订单总金额',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单主表';
```
方法二:在提示词末尾加一句:【严格按以上字段命名格式、注释位置、空格缩进和分号结尾生成,不要增减任何符号】。











