数据建模与业务语义
把业务对象、关系、事件和指标映射到可用的数据模型。
方案与计划 / 数据与知识定位整体框架 ↗
本页目录
先统一业务语义
同一个“已完成”可能指回复已生成、工程师已审核或工单已关闭。先建立术语表,再设计表与接口。实体标识应稳定,显示名称和自然语言描述不能替代主键。
贯穿案例的最小模型
| 实体 | 关键字段 | 不变量 |
|---|---|---|
| Ticket | id、tenant_id、device_model、status | 租户归属不可由客户端覆盖 |
| Document | id、tenant_id、version、effective_at | 有明确生效版本与访问范围 |
| Chunk | id、document_id、content_hash | 能追溯原文且随删除失效 |
| Draft | id、ticket_id、source_version、status | 草稿不能自动转为已发送 |
| Review | draft_id、reviewer_id、decision | 审核身份与草稿版本绑定 |
| AuditEvent | actor、action、resource、time | 能关联一次业务动作 |
多租户系统中,关联查询同样必须校验租户;不能只在最外层列表接口过滤。
状态与事件
工单状态与草稿状态分开。草稿可经历“生成中 → 待审核 → 已接受 / 已驳回”;失败生成进入失败状态而非待审核。审核草稿时带上修订号,版本不符则要求刷新,避免审核过时内容。
事件记录已经发生的事实,例如 DraftGenerated 或 DraftReviewed;命令表达待执行的意图。重复事件使用稳定事件编号去重。需要跨服务可靠发消息时,可评估事务性 outbox;同时解释消费者重试与补偿,不能宣称消息系统自动保证业务恰好执行一次。
数据质量检查
入口检查必填、类型、唯一性、引用存在与业务范围。定期检查空型号、孤立草稿、重复业务编号和过期手册。先将异常隔离并记录原因,避免为了让导入成功随意填默认值。
模型变化与迁移
新增字段先允许旧版本继续读取,回填并验证,再收紧约束。破坏性删除与不可逆迁移需要单独计划恢复;回退应用不能自动恢复被删除的数据。
练习与评审
提交实体关系表、状态转移表和五条不变量,用错误租户、未知文档、重复事件和过期修订构造反例。数据库约束的语法与行为可查阅 PostgreSQL 官方约束文档。
参考阅读与使用边界
- OpenAPI 官方规范:相关概念与方法的延伸阅读,访问核验日期 2026-10-14。本站练习、流程与指标为自主编排,不属于来源机构认证。
- 学习路线 · 项目实战 · 可下载模板
本页为基础指南;生产操作需结合实际版本、授权环境与审核证据验证。