VeapAI 实战(七)多表关联业务的可视化建模:主子表、树表与级联联动
摘要本文以「预算项目 → 类别清单 → 费用明细项」三级业务为例讲解 VeapAI 在线开发中多表关联的建模方法。先梳理关联关系再选择形态重点介绍主子表与树表两种页面形态说明级联删除 SQL 在生成期如何由模板按外键标记生成并对比「建模事实、渲染配置、渲染实现」分层设计与「全配置塞一张 JSON」的差异最后给出判断何时不该用主子表的标准与复现步骤。 关键词主子表建模、树表、级联删除 | 首发CSDN上一篇文章讲了生成器的三种形态怎么渲染这篇换个视角拿到一个多表关联业务怎么在在线开发里把它建出来。用一个真实场景贯穿——预算项目 → 类别清单 → 费用明细项。## 先想清楚关联再选形态这个业务三级一个预算项目挂多个类别一个类别挂多个明细。建表三张外键两个类别表.project_id - 项目表.id、明细表.category_id - 类别表.id。在线开发里怎么建两个方案- 方案 A三层各建一个单表页面用户在三个页面之间跳转- 方案 B项目作为主表类别挂成子表主子表明细再作为类别的子表一个页面里三层联动。VeapAI 支持 B。veap_generate 表的建模字段| 字段 | 说明 || --- | --- || sub_table_name | 子表名称 || sub_table_fk_name | 子表关联的外键名 || master_sub_schema | 主子配置 || tree_schema | 树配置树表形态用 |## 主子表页面长什么样![主子表编辑页]主表编辑页内嵌子表表格子表行内编辑。保存时主表一行、子表多行一个事务提交。这是 SubTableRenderSpec 渲染出来的标准形态不需要手写嵌套表单代码。树表适用于部门树、分类树这类自带层级的数据tree_schema 描述父字段、排序字段。树初始化逻辑在 TreeInitializer。![树表页面]## 级联删除生成期就写好的 SQL主子表的删除语义在 mapper.xml.vm 里处理。模板里有一段判断L374 附近velocity## 仅对子表外键SUB生成按外键删除 SQL#if($fk.type SUB)主表删除时按外键先删子表数据。这是生成期就决定的 SQL不是运行期拼的。外键关系在建模时被显式标记为 SUB模板据此生成联动删除。## 一处较真的设计建模和渲染分两层veap_generate.sub_table_name / sub_table_fk_name 是建模事实master_sub_schema 是渲染配置SubTableRenderSpec 才是渲染实现。三层各管各的改渲染不改建模改建模不动渲染。反面的例子是全配置塞一张 JSON主子结构、字段顺序、页面布局混在一个大 JSON 里改个列宽要全文 diff。VeapAI 把建模字段做成独立的列JSON 只留纯渲染配置。![多表关联建模决策]## 什么时候不用主子表不是所有多表关联都该主子表。判断标准子表数据生命周期跟随主表主表删、子表删、页面同屏编辑、子表量大但单主表行数可控。反过来跨业务引用的关联如项目引用供应商应该用字段级配置dict_type 字典、component_props_json 远端加载解决而不是挂成子表。建模错了页面和 SQL 都跟着难受。## 复现bashcd veap-cloudmvn -B -pl veap-package/veap-monolith -am -DskipTests packagecd veap-ui npm install npm run dev按上面的三级业务建三张表导入在线开发把类别挂到项目下、明细挂到类别下生成后删除一条项目数据观察 mapper.xml 里的级联删除 SQL 执行顺序。下一篇进入流程部分Flowable-first 扩展配置架构的三层模型。建模决策的依据在 veap_generate 表注释与 mapper.xml.vm对照三级业务跑一遍就有体感https://gitee.com/mindock/veap

相关新闻

2026 安装archlinux笔记

2026 安装archlinux笔记

每年必修课,安装archlinux走起。 以前也写过一些类似的文章,有一些不变的内容,我直接从原来的文章中复制了(包括截图)。 《2021年vmware安装archlinux》 https://blog.csdn.net/lxyoucan/article/details/115226297《…

2026/9/4 18:02:44 阅读更多 →
用树莓派+AI视觉识别,打造不误喷的智能鸟用洒水器

用树莓派+AI视觉识别,打造不误喷的智能鸟用洒水器

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/4 18:02:44 阅读更多 →
2026年APP开发公司选型避坑指南:从技术能力、案例验证到长期交付

2026年APP开发公司选型避坑指南:从技术能力、案例验证到长期交付

进入2026年,企业开发软件面对的已经不只是“找一家技术公司把功能做出来”。一套真正投入运营的软件产品,背后往往同时包含产品设计、iOS与Android客户端、管理后台、数据库、云服务器、第三方接口以及后续版本维护。如果项目涉及AI、智能硬件或者海外业…

2026/9/4 18:02:44 阅读更多 →

最新新闻

Julia模块、作用域与环境:理解声明与生效位置的区别

Julia模块、作用域与环境:理解声明与生效位置的区别

先说结论:标题里的“宫主星”和“星星落宫”并不是 Julia 的官方术语。如果你是在查 Julia 编程语言相关话题,真正想问的问题大概率是:在一个模块、一个脚本或者一套依赖环境里,“由谁负责”和“实际落在哪里”是两回事。对应到 J…

2026/9/5 20:04:49 阅读更多 →
AI 技能会不会翻车?skills4/skills 技能测试完整指南

AI 技能会不会翻车?skills4/skills 技能测试完整指南

AI 技能会不会翻车?skills4/skills 技能测试完整指南 【免费下载链接】skills Skills Catalog for Codex 项目地址: https://gitcode.com/GitHub_Trending/skills4/skills 你装了一个技能给 Codex,跑起来却偏了方向——这就是 skills4/skills 这个…

2026/9/5 20:04:49 阅读更多 →
工业级Python量化交易系统:LSTM+Attention工程实践

工业级Python量化交易系统:LSTM+Attention工程实践

简介:本资源是一套面向计算机与金融交叉领域初学者的深度学习量化实践方案,适用于本科毕业设计、课程大作业及AI金融入门研究。项目基于LSTM神经网络构建股票价格预测模型,并配套波动率过滤与风险平价交易策略,完整覆盖数据清洗、…

2026/9/5 20:04:49 阅读更多 →
GLM-5.3-Flash Day0适配9款国产AI芯片,FlagOS如何打通部署链路?

GLM-5.3-Flash Day0适配9款国产AI芯片,FlagOS如何打通部署链路?

1. 为什么新模型发版后,国产芯片用户总是慢半拍:从GLM-5.3-Flash的Day0说起 最近看到“FlagOS 完成 GLM-5.3-Flash 的 Day0 适配,一口气覆盖 9 款国产 AI 芯片”的消息时,我第一反应不是“又卷性能了”,而是长舒了一口…

2026/9/5 20:04:49 阅读更多 →
学习越痛苦越高效?真正的高效来自必要难度与提取练习

学习越痛苦越高效?真正的高效来自必要难度与提取练习

在学习效率的讨论里,最容易被误解的一句话就是“越痛苦的学习越高效”。在讨论这句话之前先确认一个前提:我们说的是学习过程中出现的合理困难,而不是训练自己长期忍耐低效折磨。很多人每天背单词、看教程、抄笔记,时间投入并不少…

2026/9/5 20:04:49 阅读更多 →
ECC nextjs-turbopack 技能指南:Next.js 16+ 中 Turbopack 增量打包、文件系统缓存与 webpack 回退决策

ECC nextjs-turbopack 技能指南:Next.js 16+ 中 Turbopack 增量打包、文件系统缓存与 webpack 回退决策

ECC nextjs-turbopack 技能指南:Next.js 16 中 Turbopack 增量打包、文件系统缓存与 webpack 回退决策 【免费下载链接】ECC The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude…

2026/9/5 20:03:48 阅读更多 →

日新闻

基于STA-ResNet的深度学习信道估计:时空注意力与残差网络实战解析

基于STA-ResNet的深度学习信道估计:时空注意力与残差网络实战解析

简介:本资源是一个面向通信工程、信号处理及AI交叉领域研究者的深度学习实践项目,聚焦无线通信系统中信道估计精度提升这一核心难题。项目实现并开源了STA-ResNet模型——一种融合空间注意力、时间注意力与ResNet残差结构的端到端信道估计网络&#xff0…

2026/9/5 0:00:19 阅读更多 →
知识库如何察觉自己“不再为真”?TMS真值维护系统原理与实践

知识库如何察觉自己“不再为真”?TMS真值维护系统原理与实践

如果一个知识库昨天还在告诉你“某个接口会返回某个字段”,今天上游系统悄悄把这个字段下掉了,知识库会怎样?对大部分系统来说,它不会有任何反应。它依然保存着那条知识,依然能被检索到,依然会被下游服务消…

2026/9/5 0:00:19 阅读更多 →
ToolJet深度解析:开源低代码平台核心能力与实战指南

ToolJet深度解析:开源低代码平台核心能力与实战指南

深入解析 ToolJet:开源低代码平台的核心能力与实战上手指南 1. ToolJet 是什么?为什么低代码平台需要重新被审视 2. ToolJet 的核心功能拆解 2.1 可视化应用构建器 2.2 数据源连接与查询管理 2.3 前端组件与事件交互 2.4 权限管理与协作能力 3. 环…

2026/9/5 0:00:19 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/4 10:54:27 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/4 14:20:02 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/4 20:51:50 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/5 5:05:50 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/5 19:29:20 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/4 9:37:01 阅读更多 →