ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

hotel 库第三范式没过?让 Codex 走 TaoToken 对着 E-R 图补表

hotel 库第三范式没过?让 Codex 走 TaoToken 对着 E-R 图补表 hotel 库第三范式没过时我用 Codex 对着 E-R 图补表接入入口是 TaoToken 官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。这次不是 SQL 语法报错而是 customer、room 里有传递依赖字段需要拆 identity_type、room_type再补 register。下面从 ~/.codex/config.toml 的排障视角写清如何让 Codex 走 TaoToken如何给它 E-R 图和字段清单如何验证外键补全以及 MySQL 执行时哪些错误最容易出现。如果你也按“需求→实体→E-R图→物理模型→第三范式校验→DDL”的路径做 hotel 库重点不是让模型替你执行建表而是把它当成逐列核对器帮你定位传递依赖和缺失关系表。一、原问题与场景hotel 库第三范式没过customer 和 room 为什么该拆表数据库设计到“检查模型”这一步最容易卡住的不是画不出 E-R 图而是物理模型里字段放错位置。原文场景里hotel 库已经完成了需求分析、实体定义和 E-R 图客人、房间是核心实体客人有姓名、手机号、证件号码、证件类型等属性房间有房号、房间类型、入住时间、离开时间、状态等属性。转换成物理模型后问题出现在第三范式校验。第三范式关注的不是“字段多不多”而是非主属性是否传递依赖主键。比如 customer 表的主键是 cust_id如果表里同时保存了 identity_type_id 和 identity_type_name那么依赖路径会变成cust_id → identity_type_id → identity_type_nameidentity_type_name 不直接依赖 cust_id而是通过 identity_type_id 间接依赖。这就是传递依赖不符合第三范式。room 表同理如果 room 里同时保存 room_type_id 和 room_type_name就应把房间类型名称拆到 room_type 表room 只保留 room_type_id 作为外键。另外客人与房间之间不是简单的一对一而是入住登记关系。一个客人可以多次入住一个房间也可以在不同时间被不同客人入住。这个多对多关系需要独立成 register 表至少包含 cust_id、room_id、in_time、out_time并通过 fk_register_cust、fk_register_room 分别关联 customer 和 room。手工逐表逐列核对时容易把外键列和冗余名称混在一起看也容易漏掉“入住登记”这种由关系产生的表。这里的排障目标很明确让 Codex 读 E-R 图、属性清单和已有 DDL按第三范式输出该拆哪些表、外键怎么补、建表顺序如何最终 DDL 仍然由你在 MySQL 里执行验证。二、TaoToken 前置给 Codex 准备 Key 和 ~/.codex/config.toml要让 Codex 走 TaoToken先准备两样东西可用的 API Key以及 Codex 的配置文件。TaoToken 官网入口是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content注册后到控制台创建 Key把 Key 先记在本地环境变量里不要直接写进项目仓库。控制台入口可以用https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewriteKey 的占位符统一写成YOUR_API_KEYAPI 地址使用https://taotoken.net/api这个地址不加 UTM 参数适合放在 config.toml 或环境变量里。Codex 的配置文件通常放在~/.codex/config.tomlWindows 常见路径是%USERPROFILE%.codex\config.toml除了配置文件建议在项目目录准备三个文件方便 Codex 只读文件、不靠猜hotel_er.md记录 E-R 图里的实体、属性、关系例如客人、房间、证件类型、房间类型、入住登记。hotel_attrs.md记录实体属性清单标注哪些是候选键、哪些是业务描述字段。hotel_schema.sql放当前物理模型或待检查的建表语句包括 customer、room 等表。这三个文件不用写得很复杂但要让 Codex 能看清字段来源。比如在 hotel_er.md 里写清楚客人持有证件证件有类型房间属于房间类型客人与房间通过入住登记产生关系。这样 Codex 在判断传递依赖时才能给出有依据的拆表建议。三、可复制配置在 config.toml 里让 Codex 走 TaoToken API下面是一份 Codex 接入 TaoToken 的配置模板。把 MODEL_ID 换成你在 TaoToken 控制台看到的可用模型 ID把 YOUR_API_KEY 放到环境变量里。配置文件本身不要保存明文 Key。# ~/.codex/config.toml model MODEL_ID model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api chat # 如果你的 Codex 版本要求供应商 base_url 以 /v1 结尾 # 以 TaoToken 接入文档为准可改成 https://taotoken.net/api/v1然后设置环境变量。macOS 或 Linux 当前终端可以这样export TAOTOKEN_API_KEYYOUR_API_KEYWindows PowerShell 当前会话可以这样$env:TAOTOKEN_API_KEYYOUR_API_KEYWindows 永久写入用户环境变量可以这样执行后需要新开终端setx TAOTOKEN_API_KEY YOUR_API_KEY这里的几个字段含义要分清model 是默认模型 ID不确定时先用控制台确认。model_provider 指向下面的供应商配置名必须和 [model_providers.taotoken] 对应。base_url 是 TaoToken 的 API 地址不带 UTM。env_key 告诉 Codex 从哪个环境变量读取 Key不建议改成明文。wire_api 表示请求走兼容接口常见是 chat如果你的 Codex 版本或接入文档要求 responses再按文档调整。配置文件修改后关闭旧终端再打开新终端。很多“配置没生效”的情况其实是当前 shell 还在用旧环境变量或者 Codex 进程没有重新加载 config.toml。四、验证请求与成功结果让 Codex 对着 E-R 图输出第三范式补表清单配置完成后先做最小验证。进入项目目录确认 Codex 版本和配置能启动codex --version codex如果你的 Codex 版本支持非交互执行也可以试codex exec 读取当前目录 hotel_er.md、hotel_attrs.md、hotel_schema.sql按第三范式输出补表清单不要执行 SQL。如果 exec 子命令不存在直接用 codex 进入交互模式再把下面提示词贴进去请阅读当前目录的 hotel_er.md、hotel_attrs.md、hotel_schema.sql。 只做数据库模型诊断不要生成可直接执行的完整 DDL也不要连接数据库。 目标按第三范式检查 hotel 库物理模型。 重点检查 1. customer 是否保存了证件类型名称等应属于 identity_type 的字段 2. room 是否保存了房间类型名称等应属于 room_type 的字段 3. 客人与房间的入住关系是否需要独立成 register 表 4. customer 到 identity_type、room 到 room_type、register 到 customer 和 room 的外键应如何命名。 输出表格 表名 | 问题字段 | 依赖路径 | 是否违反3NF | 建议拆到哪个表 | 建议外键名 最后按 MySQL 建表顺序列出 先建哪些表、再建哪些表、最后建哪些表。 同时说明哪些字段必须保留为外键哪些冗余名称必须移走。成功结果不应该是 Codex 直接甩出一大段建表 SQL而是给出可核对的诊断结论。例如customer 如果存在 identity_type_name依赖路径是 cust_id → identity_type_id → identity_type_name违反第三范式。建议把证件类型名称移到 identity_typecustomer 只保留 identity_type_id外键名用 fk_cust_identity_type。room 如果存在 room_type_name依赖路径是 room_id → room_type_id → room_type_name建议把房间类型名称移到 room_typeroom 只保留 room_type_id外键名用 fk_room_type。register 用于记录入住关系建议包含 cust_id、room_id、in_time、out_time并补 fk_register_cust、fk_register_room。建表顺序上identity_type 和 room_type 先建customer 和 room 后建register 最后建。拿到建议后不要直接让 Codex 执行。你在 MySQL 里自己执行修正后的 DDL再用下面命令检查外键是否真正落地USE hotel; SHOW CREATE TABLE customer; SHOW CREATE TABLE room; SHOW CREATE TABLE register;如果 customer 的建表结果里能看到 fk_cust_identity_typeroom 里能看到 fk_room_typeregister 里能看到 fk_register_cust 和 fk_register_room说明物理模型已经按第三范式方向修正并且外键约束成功建立。此时再回看 E-R 图确认证件类型、房间类型、入住登记三个关系都已经映射到独立表。五、本篇常见错排查config.toml、MySQL 外键和 Codex 提示词第一类错误是 config.toml 没生效。常见原因是文件放错位置比如放到项目根目录而不是 ~/.codex/config.toml。也可能是 TOML 层级写错model_provider taotoken 必须和 [model_providers.taotoken] 对应。修改后要新开终端或者退出 Codex 再重新进入。如果仍然不生效用 codex --version 确认当前使用的是哪个 Codex 版本。第二类错误是环境变量没读到。macOS 或 Linux 用 export 只对当前终端会话有效换窗口就没了。Windows 用 setx 后也要新开终端。还要注意变量名一致config.toml 里写的是 TAOTOKEN_API_KEY环境变量也必须是这个名字。不要把 Key 写进 config.toml 后提交到仓库。第三类错误是 API 地址和协议不匹配。本篇配置里 base_url 使用 https://taotoken.net/apiwire_api 先用 chat。如果出现 404先检查 Codex 版本是否要求 /v1 后缀或者查看 TaoToken 接入文档中的 Codex 配置示例。不要凭感觉同时改 base_url、model 和 wire_api一次只改一个变量方便定位。第四类错误是模型 ID 写错。MODEL_ID 不是随便填的字符串要以你控制台或接入文档里可用的模型为准。如果返回模型不存在先换回一个确认可用的模型再排查 config.toml 其他字段。Key 权限不足也会表现成类似错误可以去 API Keys 页面重新确认 Key 是否属于当前项目。第五类错误是提示词太泛。只对 Codex 说“帮我优化数据库”它很容易泛泛而谈。要把 hotel_er.md、hotel_attrs.md、hotel_schema.sql 一起给它并要求按第三范式输出“问题字段、依赖路径、建议拆到哪个表、建议外键名”。同时明确“只诊断不执行 SQL”避免它直接生成不可控的完整建表脚本。第六类错误是第三范式判断错。外键列本身不违反第三范式。customer.identity_type_id 是外键应该保留真正违反的是 customer.identity_type_name 这种通过外键再依赖名称的字段。room.room_type_id 同理应该保留room.room_type_name 才需要移到 room_type。不要把外键删掉也不要把业务关系表漏掉。第七类错误是 MySQL 外键建不起来。常见原因包括字段类型不一致、有无 unsigned 不一致、字符集或排序规则不一致、存储引擎不支持、被引用列没有索引。建表顺序也要注意identity_type、room_type 先建customer、room 后建register 最后建。删除时顺序反过来先删 register再删 customer、room最后删类型表。第八类错误是 register 表设计不完整。入住登记不只是一个时间字段它需要同时关联客人和房间。如果业务允许同一客人多次入住同一房间就要考虑登记主键或唯一键如果只要求记录关系也要明确 cust_id、room_id、in_time、out_time 的约束。否则后面插入数据时容易出现重复登记或无法区分历史记录。第九类错误是把 Codex 输出当最终 DDL。Codex 适合做字段核对、依赖路径分析和外键命名建议但最终建表语句仍要你在 MySQL 中执行并用 SHOW CREATE TABLE 检查约束是否生效。尤其是 PowerDesigner 导出的模型和手写 DDL 混用时字段名、大小写、注释和外键名都可能不一致。六、语义一致 CTA排障与接入继续看 API Keys 和接入文档如果你也卡在 hotel 库第三范式校验、customer 和 room 拆表、register 外键补全或者 Codex 的 config.toml 没有按预期走 TaoToken建议先去 API Keys 创建或检查 Key再对照 接入文档 修正 base_url、env_key、wire_api 和模型 ID。若只是验证某个模型能否正常对话可以到 模型对话 做一次最小请求。若你准备长期用 Codex 做数据库设计核对、Agent 工作流或编码计划再看 Coding Plan。本篇的排障顺序是先确认 Key 与 config.toml再验证 Codex 能读文件输出建议最后回 MySQL 执行 DDL 并 SHOW CREATE TABLE 检查外键。
返回列表