navicat 16 模型无法配置或展示分库分表路由键,因其不解析、不存储、不渲染任何分片元信息;它仅基于单库元数据生成er图,分片规则须由shardingsphere等中间件独立管理。

Navicat 16 模型中无法配置路由键标识或分库分表注解说明——它根本不参与分片逻辑,也不解析、不存储、不展示任何分片元信息。
Navicat 的 ER 图和数据模型不识别分片键
你在 Navicat 16 里打开的 ER 图,本质是基于单个数据库连接的元数据快照。即使你连的是 ShardingSphere-Proxy 或 MyCat 暴露的虚拟库,Navicat 看到的也只是中间件返回的“逻辑表名”(如 t_order),而不会知道:
- 这张表背后对应 t_order_00 和 t_order_01 两个物理表
- 分片键是 user_id,算法是哈希取模
- order_id 字段是否携带分片基因
这些信息全部存在于中间件配置文件(如 config-sharding.yaml)或控制台中,Navicat 既不读取、也不渲染、更不会在字段旁加标记或注释。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
试图用表/字段注释模拟路由键会失效
有人试过在 Design Table 里给 user_id 字段填注释 “【分片键】”,再导出 SQL,以为能保留语义——但问题在于:
- 注释只存于当前连接的物理库(比如你连的是 shard_01,那注释只写进 t_order_01 表,t_order_02 里没有)
- 中间件不读取 MySQL 的 COMMENT 字段做路由决策
- 导出的建表语句带 COMMENT,但部署到其他环境时,没人保证这些注释会被人工核对或继承
- 若后续用 gh-ost 或中间件 DDL 工具批量变更表结构,注释大概率被丢弃
真正需要路由键可视化时该怎么做
如果你需要让团队成员快速识别分片键,且希望这个信息可维护、可同步、不依赖客户端:
- 把分片规则文档化:用 Markdown 写清每张逻辑表的分片键、算法、数据节点映射,放在项目 Wiki 或 sharding/README.md
- 在中间件控制台查看/导出路由规则:ShardingSphere-UI 提供分片键高亮、SQL 路由预览;MyCat 有 show @@sharding_nodes 命令
- 用代码注解驱动模型:在 Java 实体类字段上加 @ShardingKey 或自定义注解,配合注解处理器生成文档或校验脚本
- Navicat 只用于验证单库行为:比如连 shard_01 执行 SELECT * FROM t_order_01 WHERE user_id = 123,确认索引有效、数据存在——这才是它该干的活
分片键不是 UI 层的装饰性标签,而是运行时路由引擎的输入参数。把它塞进 Navicat 的注释框或 ER 图里,就像在汽车仪表盘上手写“油箱在左后侧”——看着像提示,实则与引擎无关,还可能误导人。










